in PHP

uchome二次开发中的feed发送问题

对于SNS来说,feed是个必不可少的东西,有了feed才可以让SNS有黏性,让应用有黏性,同时也是一个在站内推广应用的好方法。(只想知道怎么使用的,请跳到本文的最后面吧)

于是今天要为我给普特英语听力开发的应用添加feed发送功能了,但是uchome没有官方的开发文档,所以只好自己看代码了。先分析了踩日志后,发送feed的这个过程,在 /home/source/cp_blog.php 这个文件里,关于踩日志的feed相关代码在111行。

$feed_title = cplang('feed_trace');
$feed_data = array(
'username' => "<a href=\"space.php?uid=$blog[uid]\">".$_SN[$blog['uid']]."</a>",
'blog' => "<a href=\"space.php?uid=$blog[uid]&do=blog&id=$blog[blogid]\">$blog[subject]</a>"
);
feed_add('trace', $feed_title, $feed_data);
$feed_title = cplang('feed_trace'); $feed_data = array( 'username' => "<a href=\"space.php?uid=$blog[uid]\">".$_SN[$blog['uid']]."</a>", 'blog' => "<a href=\"space.php?uid=$blog[uid]&do=blog&id=$blog[blogid]\">$blog[subject]</a>" ); feed_add('trace', $feed_title, $feed_data);

可以看到有个cplang和feed_add的这两个函数,于是找这两个函数在什么地方定义的就可以了。懒得猜,也懒得通读代码了,用工具来暴力查找吧,我用的是notepad++这个东西指定文件夹,暴力搜索关键字。

找到了function feed_add 在 home/source/function_cp.php 中定义,第384行,有兴趣的自己去看,这里就不贴出来了,比较长。其中feed-add函数的第一个参数是feed图标的名字,例如上面的那个 trace ,就指定到 home/image/icon/中的trace.gif图片。第二个参数是feed的模板,第三个参数是feed的数据,后面的参数都有缺省值,简单的feed可以不使用了。以cplang为关键字找到了在 home/language/lang_cp.php 文件里定义了一个名字为$_SGLOBAL[‘cplang’]的数组,一看内容就是各种feed的模板,好了,function cplang也不找了,就修改这里吧,照着上面已经存在的feed模板,加上了我自己需要的模板格式。然后测试了一下,OK,成功了。

feed模板的用法很简单,看个和上面代码相关的模板你就明白了,里面有这样一行定义:’feed_trace’ => ‘{actor} 踩了一脚 {username} 的日志 {blog}’,看明白了吧,feed中用大括号来括起来动态的部分,然后你在使用add_feed的时候,第三个参数 feed_data是个关联数组,其中key就是这个模板里的名字。

好吧,知道怎么使用了,但是要怎么部署才好呢?如果按照uchome的这种结构部署的话,要修改好几个文件,而且像 lang_cp.php还要在服务器上直接修改才行,因为我这里本地的文件和服务器上的文件是不一样,因为还有其他开发者修改过这个文件,所以不能简单的修改后覆盖。想了想,这个文件无非就是提供一个feed的格式而已,我直接写在我自己app中的代码文件中是一样的。uchome这样使用的理由是,可以支持好几种语言,针对不同语言使用不同的模板,但是我这个就没必要了,都是给中国人用的,所以就不使用 cplang函数来,直接定义$feed_title ,然后传给 add_feed函数就可以了。这样就只用覆盖一个文件就可以完成添加feed功能了。

总之,要在uchome二次开发中使用feed功能,建议是:在 home/source/cp_blog.php中看111行附近的代码,这是个使用示例,然后看 home/source/function_cp.php 384行附近的代码,这个是 feed_add的定义,然后看 home/language/lang_cp.php 这个文件关于feed模板的定义就可以了。另外准备一个图片放在 home/image/icon下面。做了这些就可以很轻松的添加简单的feed功能了,想要更高级的feed功能,就去研究 feed_add 这个函数的定义吧。

  1. 你好,我看了你的这个例子。我把第三方网站上的东西feed到了uchome上,是成功的。但是执行删除操作却操作不了。显示“非正常操作”,这个是什么原因引起的呢?!