给自己的PhpCms添加“一键采集”功能

给朋友搭建的Phpcms新闻发布平台快半年了,感觉上不错,但每次采集时都让人感觉难受,10多个栏目,一一采集下去,实在难以忍受。上网查找有没有“一键采集”的补丁,不是收费就是…..无语啊。只好自己研究着自己动手了。

首先是添加一个按钮或者链接了:
改造的文件是:phpcms\modules\collection\templates\node_list.tpl.php
添加如下:

One Keyword Collection

[img][attach]424[/attach][/img]

接下来就创建文件one_collection.tpl.php以及在node.php里添加对应的函数了,这样上面的链接才有对应了:
对node.php就是创建一个函数,加载模板:

//一键采集
  public function one_collection(){
    include $this->admin_tpl('one_collection');
  }

新建的one_collection.tpl.php文件具体如下:



admin_tpl('header', 'admin');?>






所有的采集都是通过Ajax来完成,但是想法是好的,现实却很残酷。因为我无法确定任务的完成时间值,因为采集工作的快慢取决于网络环境的好坏,我无法决定,所以考虑再三,我不得不采用同步Ajax。这里的定时器的意义也不大,因为很可能一个节点的采集耗费的时间完全要大于15000毫秒(15秒)。但是如果网络好的话,则还是可以设置一下的,呵呵。

接下就是最关键的步骤了,对几个重要函数的打造了,这些工作全都在node.php里完成:


public function c_node_list(){}
public function c_col_url_list(){}
public function c_col_content(){}
public function c_import_content(){}

如果也想在采集完成后自行生成首页,再需要再修改一下create_html.php文件了(文件位于:phpcms\modules\content)


public function c_public_index() {}

具体的函数代码不在这里贴出了,其实大家看一下函数名称,就能明白,我这里都是通过Phpcms原有的函数来打造自己的需要的,就比如:c_public_index()


//原函数
public function public_index() {
    $this->html = pc_base::load_app_class('html');
    $size = $this->html->index();
    showmessage(L('index_create_finish',array('size'=>sizecount($size))));
  }

//打造的自己的函数
public function c_public_index() {
    $this->html = pc_base::load_app_class('html');
    $size = $this->html->index();
    echo sizecount($size);
  }

当然,这里的差异很小,所以改动之外很小。
[img][attach]425[/attach][/img]
这里有几个需要留意的数字,第一个红色圈住的地方即为采集到的网址总数,如果为0或者很小,就需要测试一下采集规则或者重新采集一次。
有效的网址数与采集内容数及发布新闻数,应该是一致的。

如有同样需要的朋友,可以加通过Email联系我。

“给自己的PhpCms添加“一键采集”功能”的5个回复

发表评论