释放修改后的Gregarius
gowers这两天研究了下RSS聚合器,且用RSS聚合搭建了一个自己的聚合站,主要是为了方便自己看感兴趣的博客或网站的内容。实验了一堆后,决定用Gregarius。今天应某些兄弟的要求,放出我自己修改的版本。
Gregarius已经是一款相当成熟的RSS feed聚合器程序了,具备不错的用户体验,易于操作和管理。其 特性如下:
1. 支持 RDF, RSS, ATOM feeds 支持智能识别;
2. 基于浏览器Web端的前台浏览和后台管理;
3. 支持目录分类,支持标签系统,并运用了ajax技术;
4. 支持搜索;
5. 支持OPML;
6. 可显示favicon;
7. 支持已读未读分类和条目数量显示;
8. 具有多种主题样式,支持插件;
gowers在Gregarius官网下载到了0.6.0版本,可惜这个版本还是对中文的支持程度很差,到处都有BUG ,且gowers安装后,聚合的RSS中文全部为乱码。于是在网上找到了5.5的一个版本,安装后RSS聚合中文的乱码的BUG没有了,剩下的有几个小BUG,我自己解决了。具体解决的如下:
1.日期乱码解决;
2.后台编辑中文FEED乱码解决;
3.解决5.5首页不出现页码的BUG;
4.解决页面载入速度慢的问题;
5.后台settings(设置)部分功能中文化,那样方便设置的时候了解其用途;
6.解决前台暴露管理登录地址和登录框的问题。
具体修改:
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 class="content" 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 class="tlink" 开头的代码,将其修改成
<h4><a class="tlink" title="<?php echo rss_item_pl_title(); ?>" href="<?php echo rss_item_pl_url(); ?>"><?php echo rss_item_title(); ?></a></h4>
此外,将
<a class="plink" 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 (‘https://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。不过不要经常刷新,会增加服务器压力。
下载:
*官方下载 | gowers修改版下载(内核0.5.5,部分文件为0.6.0)*MD5值:9B47C81322BED97C6A21CC164D01940C*gowers提供的下载寄存在fileqube网络网盘上
下载我的版本在使用的过程中如果出现问题,可以在本文下方留评论。
发布在: 2008年9月16日 | 分类: 杂七杂八
Tags: gregarius, php, rss, 中文, 乱码, 版本