代码说

code is poetry

代码说    
碎碎念:火焰神,武装起来!超弹动双炎斩,超弹动闪光斩!  换一换

修改emlog碎语云插件的源码将用户的最新碎语显示在第一位

作者:coderzheng 发布于:2015-4-2 20:32 Thursday 分类:other  阅读模式

有用户反映,想将自己站点内的最新碎语(微语)加到碎语云插件的div中显示出来。
这里我只给出解决方案,不对插件进行升级。原因是:碎语云插件本身和emlog系统中的碎语(新版本中叫微语)是没有任何关系的。插件名称之所以叫碎语云,是因为emlog开发者在新浪云平台中建立了一个抓取emlog博客文章的站点:http://emer.sinaapp.com/index/,最新的blog(十篇)会显示在这个页面:http://emer.sinaapp.com/index/newblog/,并且在早期的emlog系统中,后台有一个部分就是叫最新碎语,获取的源数据就是来自新浪云平台。我为了将这个部分完整呈现在前端,才更名为碎语云插件。
不废话,直接上代码:
修改nag_cloud插件文件夹中的nag_colud_api.php文件的源码如下:
header("Content-Type:text/html;charset=UTF-8");
$contents = file_get_contents('http://emer.sinaapp.com/index/newblog/');
$contents = preg_replace("/[\t\n\r]+/", "", $contents);
$arr_h2s = array();
$arr_dates = array();
$arr_excerpts = array();
preg_match_all("/<h2>(.*)(<\/h2>)+/U", $contents, $arr_h2s);
preg_match_all("/<span class=\"date\">(.*)(<\/span>)+/U", $contents, $arr_dates);
preg_match_all("/<div class=\"description\">([^<]+)?/", $contents, $arr_excerpts);

$s = file_get_contents('../../cache/newtw.php');
$t = unserialize(str_replace("<?php exit;//", '', $s));

function smartDate($datetemp, $dstr = 'Y-m-d H:i') {
    $timezone = "Asian/shanghai";
     $op = '';
     $sec = time() - $datetemp;
     $hover = floor($sec / 3600);
     if ($hover == 0) {
          $min = floor($sec / 60);
          if ($min == 0) {
               $op = $sec . ' 秒前';
          } else {
               $op = "$min 分钟前";
          }
     } elseif ($hover < 24) {
          $op = "约 {$hover} 小时前";
     } else {
          $op = gmdate($dstr, $datetemp + $timezone * 3600);
     }
     return $op;
}

$data = array();
$len = count($arr_h2s[0]);

$data[0] = array('content'=>$t[0]['content'],'date'=>smartDate($t[0]['date']),'title'=>'<a href="javascript:;">本站最新碎语</a>');
for ($i=1;$i<$len;$i++) {
    $data[] = array(
                     'content' => trim($arr_excerpts[1][$i]),
                     'date'=> $arr_dates[1][$i],
                     'title' => str_replace('/url/', 'http://emer.sinaapp.com/url/', $arr_h2s[1][$i]),
                );
}

echo json_encode($data);
exit;
全部替换过去就可以了。


over.

标签: emlog

你可以发表评论、引用到你的网站或博客,或通过RSS 2.0订阅这个博客的所有文章。
上一篇: 记录一下最近碰到的烦心事  |  下一篇:都教授消失之谜