Gregarius官方网站: http://gregarius.net/
0.6.1下载: gregarius-0.6.1
当然,Gregarius也不是完美的,它有着众多国外程序令人诟病的语言兼容问题,解析的feed会出现乱码。针对Gregarius,还是要作一些修改的。下面的修改是gowers提供的:
具体修改:
1、日期乱码。Gregarius的中文日期若不经修改就乱码,包括更新时间乱码、当日FEED乱码。解决这个 问题可以修改根目录下util.php文件的rss_locale_date方法就可以解决这个问题。将其下代码修改为
function rss_locale_date ($fmt, $ts, $addTZOffset = true) {
if (isset($_SERVER[“WINDIR”])) {
//%e doesnt’ exists under windows!
$fmt=str_replace(“%e”,”%#d”,$fmt);
}
if ($addTZOffset) {
return iconv(“UTF-8″, “utf-8″, strftime($fmt, $ts +3600 * getConfig
(’rss.config.tzoffset’)));
//return utf8_encode(strftime($fmt, $ts +3600 * getConfig
(’rss.config.tzoffset’)));
}
return iconv(“UTF-8″, “utf-8″, strftime($fmt, $ts));
//return utf8_encode(strftime($fmt, $ts));
}
2、后台编辑中文FEED乱码。Gregarius编辑feeds的时候,中文总是乱码,其实解决方法很简单的:找到admin/channels.php这个文件,找到第900行,修改为:
//$title = htmlentities($title,ENT_QUOTES);
$title = htmlspecialchars($title, ENT_QUOTES);
这个是feed标题乱码的修正,再向下翻到Description部分,大概在988行左右,修改为:
// Description
//$descr = trim(htmlentities(strip_tags($descr), ENT_QUOTES));
$descr = trim(htmlspecialchars(strip_tags($descr), ENT_QUOTES));
这样就ok了。原因很简单,就是htmlentities和htmlspecialchars函数的区别。htmlentities这个函数 在转义到html标记的时候,会吧中文字符中一些字节也进行了转义,形成了乱码,而htmlspecialchars 这个函数只转义特定的5个字符,不会存在这种情况。修改后,单引号和双引号都能输入了,但是反斜 杠\仍然是不能输入的。
3、解决5.5首页不出现页码的BUG。这个BUG是在根目录index.php中,我直接拿6.0的index.php覆盖解 决。
4、解决页面载入速度慢的问题。Gregarius在载入首页的时候,会同时载入你FEED中的内容,如果FEED 全是文字倒好(这些东西都在你的数据库);但如果载入的包含图片,那页面载入速度就很慢。gowers 用一个简单的办法解决了,那就是修改主文件,让其在载入的时候仅载入标题,不载入内容。当你要看具体内容的时候,点击标题即可进入具体内容页面。以我现在 用的lilina主题为例,具体修改如下:
找到根目录\themes\lilina\web下面的item.php,删除标注//list mode : we only show titles那段代码下面的
<div id=”c<?php echo rss_item_id(); ?>”>
<?php echo rss_item_content(); ?>
</div>
千万不要注释,注释还是会运行的,只不过前端不显示。这个解决载入内容。下面要修改标题链接。原 来的链接是一个JS调用,打开隐藏层。现在我们要将其修改成实体链接,并指向信息页。则找到根目录 \themes\lilina\web下面的item.php,找到//list mode : we only show titles下面的<h4><a 开头的代码,将其修改成
<h4>
<a title=”<?php echo rss_item_pl_title(); ?>” href=”<?php echo rss_item_pl_url(); ?>”>
<?php echo rss_item_title(); ?>
</a>
</h4>
此外,将
<a title=”<?php echo rss_item_pl_title(); ?>” href=”<?php echo rss_item_pl_url(); ?>”>
<img src=”<?php echo rss_theme_path(); ?>/media/mark_on.gif” alt=”<?php echo rss_item_pl_title(); ?>” />
</a>
修改成
<img src=”<?php echo rss_theme_path(); ?>/media/mark_off.gif” alt=”<?php echo rss_item_pl_title(); ?>” />
5、后台设置中文化的。这个直接修改的语言包,具体废话就不说了;
6、解决前台暴露管理地址和登录框的BUG。
1、去掉管理登录的链接的修改在导航中,即修改根目录下CLS目录的nav.php,找到其中的function Navigation(),删除类似这段 $this->appendNavItem(getPath().’admin/’,admin,LOCATION_ADMIN);
2、去掉登录框。修改根目录\themes\lilina\web下面的index.php,注释或者删除掉<?php echo rss_header_logininfo() ?>即可。
安装说明:
1、将程序上传至你的服务器空间,运行http://your_gregarius_hosturl/install.php,将出现安装界面。然后按照要求填入你的数据库地址、数据库名、表名称、密码、表头、默认编码(UFT-8,不要修改),然后提交表单,安装即将完成
2、登录管理界面,指定管理员名称、用户名和密码;
3、安装已经完成了。
4、安装后会在根目录下生成dbinit.php,注意不要删除。dbinit.php.sample是一个样本,你可以通过这个了解下dbinit.php的结构。
个性化修改:
1、修改导航栏的链接:修改根目录下CLS目录的nav.php,找到其中的function Navigation(),修在下 面添加或者修改 $this->appendNavItem(’$url’,$label,LOCATION_NAME);。依据我的修改为例,在导航中添加 gowers的网记的链接,则在下面加入 $this->appendNavItem (’http://www.gowers.cn’,gowers,LOCATION_GOWERS);即可
2、修改脚标:脚标的修改在主题文件中,如果你正在使用的主题文件没有“footer.php”文件,那若你需要修改脚标,请修改根目录下面的themes\default\web文件夹中的footer.php文件。
3、修改header。header title的修改也在主题文件中,如果你正在使用的主题文件没有“header.php ”文件,那若你需要修改header,请修改根目录下面的themes\default\web文件夹中的header.php文件 。将其中的<title><?php echo rss_header_title() ?> </title>修改成你想要的。不过建议只在后面 加个“- 你的网站名称”。此外在header中也可以加入favicon的LOGO。
已知未解决BUG
1、分类中文乱码(6.0版本也存在这样的问题)。正在解决中……
2、TAG中文前台输入乱码,后台输入不乱码(6.0版本也存在这样的问题)。正在解决中……
3、其他的暂时还没发现
说明:
1、update即更新功能,请让服务器自动执行。如果你的服务器支持LINUX命令或者PHP命令,可以让服务器每隔45分钟自动刷新下update.php;
2、如果不能自动更新,请手工更新,即点击导航栏上面的update。不过不要经常刷新,会增加服务器压力。
修改的版本提供的下载地址失效,这里上传一下:
Gregarius_by_gowers
安装原版程序后,再用上述文件覆盖。如果出现登陆不了后台,拿补丁中的文件直接覆盖ADMIN文件夹。
自己测试一下代码回复:
gregarius hi shenme dongxi a ?
是一个RSS聚合程序。