Tag Archives:

pligg

Pligg插件RSS importer使用笔记

RSS importer几乎可说是安装Pligg后必用插件,我们可以用它来从指定的Feed定时抓取更新。在安装了Pligg Beta 9.9.5之后,可以使用管理员账号从管理面板进入Module Management,找到RSS importer安装并启用。
抓取中文内容标题与内容为空的问题
如果抓取的目标文章title是中文的话,极有可能写入后title、content均为空——事实上,直接submit一个中文标题的story也会出现这种情况。
检查/libs/link.php发现,Pligg插入Link的流程是

先插入一条含作者、创建时间、分类等关联内容的条目,这些列的类型多为int或timestamp。
然后再通过update来为刚插入的行写入title、content、title_url、tags以及extend fields等文本内容,这些列的内容多为varchar或text。

在update这个流程,它会先给这些数据分别做db-escape,如果title_url为空的话,它还将使用一个makeUrlFriendly函数处理title,赋予title_url。
这个函数在处理中文时返回的结果多数情况下会导致包含该字串的sql不能被顺利执行,以致link更新失败,从而出现link写入成功但是标题和内容均为空的问题。
比较理想的做法是如同wordpress插件cos_translator那样,利用google translate取回一个英文翻译结果赋予title_url。不想费这个劲的话,直接把titile赋给title_url也行。
修改/libs/link.php 把139行注释替换为

//if($link_title_url == ""){$link_title_url = makeUrlFriendly($this->title);}
if($link_title_url == ""){$link_title_url = $link_title;}

 
这样修改解决了未设置title_url时的问题,但使用RSS importer抓取的时候,插件已经先行一步使用makeUrlFriendly给title_url赋值了,这也需要取消掉。
修改/modules/rss_import/templates/import_fields_center.tpl 把78行注释替换为

//$linkres->title_url = makeUrlFriendly($linkres->title);
$linkres->title_url = $linkres->title;

 
抓取时重复更新计数的问题
在RSS importer里可以给一个Feed设置Random Votes,以后从该Feed抓取回来的链接,每一条都会被先预置Votes。比如我们给一个Feed预置5-10的votes,那么取回来的文章会随机的得到在这之间的一个votes。
问题就在这里设置votes的流程是

先往votes表里插入一条vote,计算该link的votes数并更新..
再往votes表里插入一条vote,计算该link的votes数并更新…
如此往复….

如果votes为200的话,那就重复200次。
我们可以把计算votes数并更新这个流程移出来,做一次就可以了。
具体是修改/modules/rss_import/templates/import_fields_center.tpl 147行,把这行起看到的第一个}移到这行之前。

Pligg使用笔记

Pligg是一个仿Digg.com的开源CMS,两年前粗粗的接触过一下,当时的感觉只有两个字,惊艳。近日又翻出来装上试用。
下载
在pligg的官方网站上有多处download链接,均指向http://forums.pligg.com/current-version/ ,点开之后却是一片空白,且没有任何提示。sourceforge上可以下载到的最新版本是去年发布的Pligg_Beta_9.8。要下载最新版的话,其实需要进入论坛注册,登录之后再点击前述链接,进入论坛里的current version版面下载。目前的最新版是Pligg Beta 9.9.5。
哎,实在是太不严谨了。
安装
安装的时候会有若干错误提示,包括找不到/setting.php,/libs/dbconnect.php。这就需要分别给/setting.php.default,/libs/dbconnect.php.default这两个文件重命名,把末尾的.default去掉。
这想来是为了避免做升级下载时覆盖到配置文件,但是..应该也可以像wordpress一样安装时就自行读取.default文件生成setting.php的罢,可以省却一些麻烦。
此外,在pligg里不时见到if($_REQUEST['language'])这样的写法,但是却没有设置过error_reporting。如果php.ini里设置了显示ERROR NOTICE的话,就会经常出现错误提示。
这点,可以修改/config.php 第十一行为
error_reporting(E_ALL^E_NOTICE);
 
分类管理
安装好之后,使用god账户登录,管理分类的时候发现,新建分类的功能是不可用的,点了Add A New Category之后并没有建成任何分类,也没有任何错误提示。
原因是..在admin_categories.php里,新建分类就通过以下两行代码来完成

$sql = "insert into `" . table_categories . "` (`category_name`) VALUES (’new category’);";
$db->query($sql);

 
但在安装过程生成的数据库里,categories表有两个不可为空又没有设置默认值的列,category_desc和category_keywords。这样的语句query进去,不会生成任何结果。
修正方法..要么改这个语句,给category_desc和category_keywords加上值再插入。要么,修改数据库,允许这两列为空。
数据库里中文内容乱码
pligg里有个dblang设置,默认为en,还没搞懂是用来干嘛的。我的问题是,使用mysql-GUI浏览数据库的时候,pligg建立的中文内容都是乱码。
这需要在/libs/db.php 的第100行,新增一行
$this->query(’SET NAMES "utf8"’);
 
暂时遇到这么些问题。