由于description己由meta标签给出,首页再来一个description显得有些多余。新近做了一个更改,把饭否同步到了首页网站副标题。我本身有换QQ签名的习惯,这下子可以同步到我的博客上来了。是否独具个性?按照同样的习惯,我把javascript代码贴在下面:
<script type="text/javascript">
var element;
function fanfou(userID,DIV) {
element = DIV;
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'http://api.fanfou.com/statuses/user_timeline.json?id='+userID+'&count=1&callback=getText';
document.getElementsByTagName('head')[0].appendChild(s);
}
function getText(jsonSource){
document.getElementById(element).innerHTML = jsonSource[0].text;
}
</script>
使用的时候把这段代码复制到head标签之前,把body标签改一下:<body onload=”fanfou(‘你的饭否账号名’,'你的副标题块的ID’)”>。这句话的作用是在加载页面的时候触发fanfou这个函数,如果你不知道你的副标题块的ID是什么可以看看网页布局入门。但是使用中我发现这样触发还不够快,后面的内容都显示了description来没出来。在body开头加上这样一句:<script type=”text/javascript”>fanfou(‘你的饭否账号名’,'你的副标题块的ID’);</script>。这样效果更强,比用onload事件触发更快的显示出饭否第一条消息。
单纯想使用代码的到此可以stop了。我在试图实现些功能的时候想过利用RSS。最先想用PHP:
<?php
require_once (ABSPATH . WPINC . '/rss.php');
$url = "http://api.fanfou.com/statuses/user_timeline/你的饭否账号名.rss?count=1";
$resp = _fetch_remote_file( $url );
$rss = _response_to_rss( $resp );
foreach ( (array) $rss->items as $item ) {
$title = attribute_escape(strip_tags($item['title']));
echo str_replace("周健:","",$title);
}
?>
这里面调用了wordpress里面的rss.php文件,使用了其中几个函数。但是不知道yo2的服务器是怎么个结构,用“ABSPATH . WPINC . ‘/rss.php’”路径找不到rss.php文件。由于我没有使用边栏插件,rss.php文件必需我手动加载。我想了个投机的办法,调用“wp_widget_rss_output();”来加载这个文件,也是失败。后来干脆把rss.php复制到模板的function.php,发现这里面有yo2禁用的读取远程RSS的函数。这个方案所以无疾而终,我到现在还没想到办法。
在看javascript的时候发现它可以读取远程文件。饭否API中有三类文件json、rss和xml。其中rss和xml在javascript中都不能跨域访问,所以只有使用json。json是一个比rss和xml更轻量级的东西,更适合javascript处理。如果要处理xml,使用jquery将更方便,但是不能跨域访问,所以还是不能用。下面是用jquery处理xml的方式,由于不能跨域,所以要把xml保存在本地实验。另外,如果这里不使用xml而使用rss,有的浏览器可以成功,有的浏览器就不能成功。
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$.ajax({
url: 'http://api.fanfou.com/statuses/user_timeline/你的饭否账号名.xml?count=1',
type: 'GET',
dataType: 'xml',
timeout: 1000,
success: function(xml){
$(xml).find('text').each(function(){
var item_text = $(this).text();
$('#description').replaceWith(item_text);
});
}
});
</script>
</head>
<body>
<ol></ol>
<div id="description">12345</div>
<div id="results">fff</div>
</body>
</html>
Related posts:
这个有点麻烦哈,我是直接调用饭否JS,然后在CSS里设置下宽度就OK了..
挑战书 回复:
六月 27th, 2009 at 1:29 下午
@SMILE, 你的饭否用法我看过了,我们的目的和要的效果不一样,我只希望在副标题下显示一条消息,其它什么都不显示,而且js不能对显示网页有延迟
不知道效果怎么样!我想看看,很有创意的想法!学习啦!
挑战书 回复:
六月 23rd, 2009 at 2:45 下午
@麦田, 效果就是现在这样啊,我现在的副标题就是从我的QQ签名上同步来的,我试过的几个浏览器都成功
不错的想法。
挑战书 回复:
六月 19th, 2009 at 8:33 上午
@芒果, 我一直认为任何想法都是从最简单的思维来的,我是学习的新人啊,捉襟见肘漏洞百出,嘿嘿
按照这个思路,还可以用滔滔、twitter、嘀咕等做副标题呢
挑战书 回复:
六月 19th, 2009 at 8:39 上午
@bolo, 其实微博客这东西我不并常用很不常用,我不习惯到处发布或者同步消息,我只希望把我的消息聚合到一个点。刚查了下貌似说嘀咕的API更强;滔滔有API了吗?;twitter在国外,除非使用后面说的PHP方式并且建立本地缓存,不然我觉得速度有问题或者容易遇到某强大的力量。
另外附带一句:google昨天被CCTV批了,体无完肤!
有思想,有创意!
挑战书 回复:
六月 19th, 2009 at 8:31 上午
@卢松松, 哈哈,我会得意,第一次弄成这个叫API的东东