原来的时候曾经发过一篇文章《腾讯微博API接口JQUERY插件》,但是由于插件原作者的网站关闭。导致此插件的功能失效。
其实腾讯有自己的微博调用,不过腾讯在微博应用频道发布该应用后,产生了一些自定义的问题,比如说样式的固定单一性。有时候我们只需要腾讯提供微博数据,自己来设计想要显示的样式和效果。
同时腾讯为让微博用户能够更快速、更方便的阅读到自己在腾讯微博中收听的微博消息,并帮助微博应用开发者更简便的通过微博信息进行功能开发,腾讯微博开放平台将“我的微博主页”内容,提供了RSS订阅源/JSONP格式输出。详见:http://open.t.qq.com/resource.php?i=3,3
下面详细的介绍一下通过腾讯通的微博RSS/JSONP格式输出来在个人网站显示微博数据,并设定自己的CSS样式。大体的步骤分为两个,第一个就是获取并解析数据;第二个就是设定显示微博的CSS样式。其实关键就在如何解析数据上。像我的网站顶部腾讯微博的轮换效果的实现步骤如下:
首先是PHP代码:根据以下路径\include\lib\找到function.base.php。添加两个函数。
function show_sy(){
global $CACHE;
foreach($CACHE->readCache('newtw') as $value):
echo '<li><p>'.$value['t'].'</p><span>——'.smartDate($value['date']).' 来自碎语</span></li>';
endforeach;
}
function show_weibo() {
$num = 5; //显示的数量
$url = ''; //腾讯微博的json地址,改成你自己的,type=1为我的广播,=2为我的首页,建议1
$expire = 259200; //过期时间
$cache_file = EMLOG_ROOT . '/weibo.dat'; //缓存文件
$arr = array();
clearstatcache();
if (file_exists($cache_file) && time() <= (filemtime($cache_file) + $expire)) {//缓存文件存在且未过期则直接读取
$arr = unserialize(file_get_contents($cache_file));
}else{//缓存文件不存在或已过期则读取json数据处理并缓存
$content = file_get_contents($url);
$content = str_replace(")", "", str_replace("weiboData(", "", $content));
$weibo = json_decode($content, true);
$arrsize = count($weibo['data']);
if ($num > $arrsize) {//如果调用条数大于Json返回的条数
$num = $arrsize;
}
if($arrsize !=0){//如果腾讯数据响应成功
$arr = array_slice($weibo['data'], 0, $num);
file_put_contents($cache_file, serialize($arr)); //写入缓存文件
}
}//if……else
if ($arr) {
shuffle($arr);
foreach ($arr as $weibo):
if($weibo['source']){
echo '<li><p>转发:'.$weibo['source']['content'];
}else{
echo '<li><p>原创:'.$weibo['content'];
}
echo'</p><span>——'.smartDate($weibo['timestamp']).' 来自微博</span></li>';
endforeach;
} else {
show_sy(); //如果没有取得微博数据则以碎语代替
}//if……else
} 本文参考了乱了感觉的文章,在此表示感谢!原文地址:http://messense.me/t-qq-json-php.html
奇怪,在哪呢
@Louis Han:在首页呢@_@
很不错的,新年快乐!
@俊文:新年快乐!{smile:1}
我为了简单点,多余的东西都砍掉了。不过这个还不错。我以前也折腾过
{smile:1}撸过看看