Category Archives:

CMS

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"’);
 
暂时遇到这么些问题。

关闭 WordPress 的缩略图功能

爱上水煮鱼的猫编译了一篇《WordPress Hack 技巧》,其中提到:
Tip 8:关闭 WordPress 的缩略图功能(替代方法)
当你上传一张图片到 WordPress 的时候,它会创建两张额外的缩略图,我不知道怎么在 WordPress 中阻止缩略图生成,但是如果你是用 Windows Live Writer 发表文章,就会有一个替代方法。
只使用 FTP 模式来发布图片,这会自动阻止缩略图生成,因为 FTP 上传图片是另外一种工作方式。
事实上,不需要缩略图的话,有一个更简洁的办法。只需要在Setting - Miscellaneous处把相应的image size设为0即可。Thumbnail size设为0,则不生成小图,Medium size为0,则不生成中图。都不需要的话,都设为0便是。

Joomla 1.5 tutorial links

module:hello world
components

hello_world
hello_world2
hello_world5
hello_world_mvc1
hello_world_mvc2
hello_world_mvc3
hello_world_mvc4
menubartitleimage
overview
xml_installfile

create custom urls

Tags: joomla

Joomla JPromoter and JReviews Hack

“JPromoter”:joomlaequipment.com/content/view/4/19/ 是一个Joomla的SEF entention,用于把形如
@/index.php?option=com_content&task=view&id=9&Itemid=75@
这样的地址转换成
@/the-news/latest-news/curabitur-convallis-laoreet.html@ 。
就像wordpress旧时的一些版本一样,这种转换不支持中文。需要自己做一些修改。
h3. 安装JPromoter
# 下载,解压,以JPromoter.v.2.8_beta为例,解压后应该得到以下文件
** bot_jp.metaedit.v.2.2_beta.zip
** com_jp.v.2.8_beta.zip
** hack.joomla.1.0.13.zip(joomla 1.0.x)
** Jpromoter.3dp.v.117.zip
** Jpromoter.htaccess.zip
# Install Components,安装com_jp.v.2.8_beta.zip
# Install mambots,安装bot_jp.metaedit.v.2.2_beta.zip
# 解压Jpromoter.htaccess.zip,覆盖/.htaccess
# 解压对应当前joomla版本的hack.joomla.1.0.x.zip,覆盖/includes/frontend.php
# Site configuration - SEO - Search Engine Friendly URLs,选择Yes.
# 复制Jpromoter.3dp.v.117.zip到/administroter/
# Components - JPromoters - Configuration - SEF - URL for update SEF integrations,输入Jpromoter.3dp.v.117.zip
# Components - JPromoters - Configuration - SEO Tools,Integration
h3. 单元(Section),分类(Category),文章(Content)
单元和分类都有Title和Name两个字段,首先确定一点,Title用来做页面显示,可以随意书写;Name用来做url标识,尽量使用英文。
然后修改/administrator/components/com_jp/sef_configs/jp_com_content.xml
找到 @@ ,把之后两节中的title替换成name,替换结果如下

    <var name="section" [...]