WordPress调用PageCookery的方法

林继 WordPress 2,783 共写了2348个字 (2010-10-03 23:16:10) 没有评论 打印 扫描二维码 百度已收录

刚刚架设了PageCookery的微博,http://t.yourtion.com。然后就研究怎么跟现在的WordPress结合一下~分享一下如何在wordpress中调用PageCookery的内容。
将下面的代码插入到你想显示PageCookery微博的地方。
代码如下:

  1. <div class="sidebarbox">
  2. <a target="_blank" href="http://t.yourtion.com/"><h2>我的微博~http://t.yourtion.com~</h2></a>
  3. <ul>
  4. <?php
  5. require_once (ABSPATH . WPINC . '/class-feed.php');
  6. $feed = new SimplePie();
  7. $feed->set_feed_url('http://t.yourtion.com/rss.xml');
  8. $feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/wp-content/cache');
  9. $feed->set_file_class('WP_SimplePie_File');
  10. $feed->set_cache_duration(300);
  11. $feed->init();
  12. $feed->handle_content_type();
  13. $items = $feed->get_items(0,3);
  14. foreach($items as $item) {
  15. echo '<ul style="podding:20px;"><li>'.$item->get_description().'<a href="'.$item->get_link().'" target="_blank"><h3>回复他</h3></a>'.'</li></ul>';
  16. }
  17. ?>
  18. </ul>
  19. </div>


如上所示,我们主要应用WordPress的fetch_feed函数来读取微博客RSS的内容,只需要将该代码插入到你的wordpress模板中即可。
其中,set_cache_duration(3700); 的意思是3700秒读取一次rss,看是否有更新;
get_items(0,5)的目的是控制显示多少条微博。
echo后面跟的是希望显示的内容,如果希望以列表模式显示,并列出微博客发布的时间,可以将源代码对应echo的部分修改为:

  1. echo '<li>'.$item->get_description().'<br />'.'<a href="http://t.yourtion.com/">'.$item->get_date('Y-m-j G:i').'</a>'.'</li>';

完成如上操作后,可以调整样式表,改为自己喜欢的排版模式。
如果对所显示的内容不满意,可以到PageCookery的对应目录中修改cron/rss_update.php文件,来变更RSS显示的内容。
关于出现:

  1. Warning: ./cache/791730c068090a99527392a2d75c1392.spc is not writeable in /home/jcom/public_html/yourtion/wp-includes/class-simplepie.php on line 1780

修改/wp-content/cache为有权限写入的文件夹路径即可~

  1. $feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/wp-content/cache');

另一种挂法

今天我要给大家分享一下我自己试过的一种给PageCookery添加博客挂件的方法,总共有两大类三大法!下面就一一细分来说咯!
一、RSS挂件大法
如果你的博客是基于WordPress程序的话,那你就有福了!WordPress程序中内置有一个fetch_feed函数,通过这个函数能够读 取你的RSS的内容!具体的代码如下:

  1. <?php $feed = fetch_feed('http://lizheming.cn/rss.xml');//< 和?之间可能有个空格,请将它删除后再保存代码;
  2. $items = $feed->get_items(0,7);
  3. foreach($items as $item) {
  4. echo '<li>'.$item->get_description().'<br />'.'<span style="float:right;"><a href="http://lizheming.cn">'.$item->get_date('Y-m-j G:i').'</a></span>'.'</li>';
  5. }
  6. ?>

解释代码时间:第二行的那个网址是你的 RSS地址,PageCookery的RSS地址为你的微博客地址+“/rss.xml”,第三行的那个get_items(0,7)后面的7可以定义显 示RSS的条数,如果设置为7,则显示最近7条RSS更新的日志。echo后面的是输出description然后是输出时间,以上是我的输出样式,大家 怕麻烦的话可以把上面的代码直接复制过去使用就OK~记得把地址改成你们自己的哦!然后如果是折腾空的话就可以相应的修改一下就成~~
对了对了,忘记说了,上面的代码都是PHP的,所以你要下个插件让小工具支持PHP代码哦,我使用的是Samsarin PHP插件~
更新:我发现有人使用PageCookery自带的RSS地址后输出的消息带有用户名,谓语还有时间等多余的东西,这里推荐大家修改下RSS的输出 格式来输出一个纯净的纯消息RSS地址,具体的方法是打开cron/rss_update.php文件,然后将第16行的如下代码:

  1. <item>
  2. <title>< ?php echo Format::Date($item['time']); ?> #< ?php echo get_username_by_id($item['userid']); ?></title>
  3. <link>< ?php echo BASE_URL; ?>#< ?php echo $item['id']; ?></link>
  4. <description>< ![CDATA[<strong>< ?php echo get_username_by_id($item['userid']); ?> < ?php echo get_prefix($item['prefix']); ?> < ?php echo $item['content']; ?>
  5. < ?php $item['picture'] = $SQL->QueryRowsArray("SELECT * FROM picture WHERE entryid = " . $item['id']); ?>
  6. < ?php if ($item['picture']['id']) { ?>
  7. <p class="image"><a href="<?php echo get_picture_url($item['picture']['id'], 'o'); ?>" title="< ?php echo $item['picture']['filename']; ?>"><img src="<?php echo get_picture_url($item['picture']['id'], 'm'); ?/>" alt="< ?php echo $item['picture']['filename']; ?>" /></a></p>
  8. < ?php } ?>
  9. <p style="font: 10px Arial; margin-top: 10px; text-align: right;">
  10. <span class="entry-meta">< ?php echo Format::Time($item['time'], 1); ?> from < ?php echo $item['from']; ?></span>
  11. </p>]]></description>
  12. <pubdate>< ?php echo Format::Date($item['time'], 'D, j M Y H:i:s' , 0); ?> +0000</pubdate>
  13. </item>

修改为如下代码,大家也可以直接复制我的下面这段代码到相应的位置即可:

  1. <item>
  2. <title>< ?php echo Format::Date($item['time']); ?> #< ?php echo get_username_by_id($item['userid']); ?></title>
  3. <link>< ?php echo BASE_URL; ?>#< ?php echo $item['id']; ?></link>
  4. <description>< ![CDATA[<strong> < ?php echo $item['content']; ?>
  5. < ?php $item['picture'] = $SQL->QueryRowsArray("SELECT * FROM picture WHERE entryid = " . $item['id']); ?>
  6. < ?php if ($item['picture']['id']) { ?>
  7. <p class="image"><a href="<?php echo get_picture_url($item['picture']['id'], 'o'); ?>" title="< ?php echo $item['picture']['filename']; ?>"><img src="<?php echo get_picture_url($item['picture']['id'], 'm'); ?/>" alt="< ?php echo $item['picture']['filename']; ?>" /></a></p>
  8. < ?php } ?>
  9. <p style="font: 10px Arial; margin-top: 10px; text-align: right;">
  10. </p>]]></description>
  11. <pubdate>< ?php echo Format::Date($item['time'], 'D, j M Y H:i:s' , 0); ?> +0000</pubdate>
  12. </item>

二、站外微博客引用大法
如果你的博客不是WordPress的,或者是不支持fetch_feed函数的,那也没关系,我们还可以利用站外引用的方法来做一个插件,这里我提供嘀咕和新浪微博两个的站外引用方法

1. 嘀咕的站外引用

对于站外引用的话,首先我们要将我们的消息到处到站外去,好在PageCookery提供了对嘀咕的导入更新功能。如果开启了,则可以直接使用嘀咕的嘀咕秀作为博客的挂件!这里我比较推荐选择JS样式,因为JS样式的DIY性能比较强大!

2. 新浪微博的站外引用

新浪微博的站外引用这里又有两种办法,一种是直接使用新浪微博提供的插件,但是作为一个纯DIY精神的人来说,这种方法显然不适合我(我讨厌有别人的链接!)所以我另辟蹊径,找到另外一个方法,其实就是定义了一个函数,然后直接输出即可!具体的代码如下:

  1. function any_get_weibo($sinaId, $listNs){
  2. $output = '<ul>';
  3. $gethtm = file_get_contents('http://v.t.sina.com.cn/widget/widget_blog.php?uid='. $sinaId .'');
  4. // 这里从一个新浪小组件里调用数据来源可以减少一定的数据流也可以避免跳到登陆页;
  5. $tempOp = explode('<p class="wgtCell_txt">', $gethtm);
  6. for($n = 1; $n < = $listNs; $n++){
  7. $tempTs = explode('</p>', $tempOp[$n]);
  8. $output .= '<li>'.$tempTs[0].'</li>';
  9. }
  10. $output .= '</p></ul>';
  11. return $output;
  12. }

将上面的代码复制到你主题的function.php文件中,然后在边栏直接输入如下语句

/*< 和?之间有个空格,请将它删除后再保存代码*/< ?php echo any_get_weibo($sinaId, $listNs) ?>

其中$sinaId换成你在新浪微博的 ID,$listNS则是你想要显示消息条数(必须< =15条)注意,由于使用的语句也是PHP代码,所以WordPress博客要下载让小工具支持PHP语言的插件,其他博客程序可以直接添加到主题中去~ 好了,基本的调用方法我就介绍到这里,下面来分析下各种方法的优劣之处: 1.第一种RSS调用可以说是完全的独立调用大法,是相当的不错的了。但是也不是非常完美的,如果没有fetch_feed()函数的程序则不行, 而且据我试用之后,觉得PageCookery的RSS更新具慢,导致挂件的消息更新也是相当的慢,非常在意速度的同学不推荐; 2.嘀咕调用这个是最简单的了,因为不牵涉什么代码~但是即使是选择了JS样式的插件,在消息时间那里仍然会带有嘀咕网站的链接,对于我这样的完美 主义追求者来说,这个是相当的碍眼的,所以我没有选择这个方法,和我一样的人当然不推荐,懒人推荐此种办法; 3.新浪微博的这个我觉得还是不错的,除了 条数限制在15条以内之外,我觉得基本上是无fetch_feed()函数的首选了,而且它是通过新浪微博自己的小插件调用的消息,据我测试速度还是不错 的 综上所述,最后我选择的办法是使用了第一个RSS调用的办法,但是RSS调用的地址是我同步消息的嘀咕~~欢迎大家提出更好的站外引用方法~~

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >