城市里的游牧民族

Menu

本站links页面更新《获取 Favicon 服务美化友情链接》

百度问题的时候,百度到了万戈博客,发现也是一个WP站,点看间发现万戈的links 做的很好,
便有了冲动,就想要马上拔过来,于是就在他的博客里面Search来Search去
最终通过如下内容加上修改css马马虎虎做了一个样子
这次修改居然搞了2天不容易呀
++++++++++++++++++++++++++++++++++++++++++

《获取 Favicon 服务美化友情链接》

基本的设计思想是:获得每个链接的地址,提取出域名部分,提交给 Google,Google 返回的就是一个16×16的 PNG 图片,对于没有被 Google 缓存 Favicon 的网站,会得到一个小地球的图标,就像这样Example

获取图标的网址为:http://www.google.com/s2/favicons?domain=example.com,将 example.com 换成需要的域名就OK啦~至于获取链接中的域名,可以用正则表达式来实现。

另外,大多数模板对于链接页面的实现都是通过调用WP的系统函数 wp_list_bookmarks 来完成的,而为了完成自动获取 Favicon 需要改动函数。为了保证将来升级 WordPress 本功能依然有效,故将 wp_list_bookmarks 以及相关的 _walk_bookmarks 复制到主题的 function.php 中,作为主题函数来使用。

以 WordPress 2.7.1 为基础进行修改,其他版本请参考修改。

1、打开 wp-include 目录下的 bookmark-template.php 文件,将其中的两个函数复制出来,放到一个新的文件中,原文件关闭,修改在新文件中进行。

2、编辑 _walk_bookmarks 函数,找到第103行,将如下的内容:

if ( $bookmark->link_image != null && $show_images ) {
    if ( strpos($bookmark->link_image, 'http') === 0 )
        $output .= "<img src="$bookmark->link_image" $alt $title />";
    else // If it's a relative path
        $output .= "<img src="" . get_option('siteurl') . "$bookmark->link_image" $alt $title />";

    if ( $show_name )
        $output .= " $name";
} else {
    $output .= $name;
}

替换为:

if ( $show_images ) {
    if ( $bookmark->link_image != null) {
        if ( strpos($bookmark->link_image, 'http') !== false )
            $output .= "<img src="$bookmark->link_image" $alt $title />";
        else // If it's a relative path
            $output .= "<img src="" . get_option('siteurl') . "$bookmark->link_image" $alt $title />";
    } else {//否则显示网站的Favicon
        if (preg_match('/^(https?://)?([^/]+)/i',$the_link,$URI)) {//提取域名
            $domains = $URI[2];
        }else{//域名提取失败,显示默认小地球
            $domains = "example.com";
        }
        $output .= "<img src="http://www.google.com/s2/favicons?domain=$domains" $alt $title />";
    }
}

替换完成后将 _walk_bookmarks 改名,例如 my_bookmarks

3、编辑 wp_list_bookmarks 函数,将其中所有的 "_walk_bookmarks" 替换为新函数 "my_bookmarks"。三次替换,分别在228行、239行和242行左右。

4、将 wp_list_bookmarks 改名,比如 my_list_bookmarks。

5、检查一下代码,确保替换无误并且没有误删任何字符后,将两个函数复制到主题目录下的 function.php 文件中,原来的注释可以删掉。Bronco童鞋还 Email 给我修改好的 function.php(点击下载 1.76K),我就借花献佛拿出来共享下,将 function.php 中的代码复制到主题下 function.php 中即可。这样,自动获取favicon的功能就完成了。

现在,可以通过<?php my_list_bookmarks(show_images=1) ?>来生成链接列表了。当然,也可以修改主题的友情链接页面模板文件,找到 wp_list_bookmarks(…),替换为上述第二个函数,即 my_list_bookmarks。注意,需要在参数中增加一项"show_images=1"。以此模板创建一个页面,就可以看到效果。

最后,可能需要对 CSS 进行一下加工,以保证 img 能显示在对应位置上。

Bronco原创:http://heybronco.net/tech/wordpress/get-favicon-automatically/

++++++++++++++++++++++++++++++++++++++++++++++++++++

不过万戈后来有一个《JQ 完善 WordPress 友链的 Favicon》这个实在没有看懂(听说比上面那个方法更简单~~~)~~分享给大家

为了实现友情链接页面中带 favicon 小图标的友情链接,我写过一个用 PHP 实现此效果的教程,代码的原理很好理解,但是因为在 functions.php 中重新定义了 wp_list_bookmarks 函数,所以代码显得非常的冗长,足足有100多行。现在有了 JQuery 库,这就完全不必要了,仅需2、3行 JQ 执行代码即可搞定,而且所要遍历的标签选择更自由,还省了不少 PHP 的查询次数,爽歪歪了。

方法是从木木的《给友情链接添个 Favicon 美化美化》挖来的,简述如下:

1、加载 JQuery 库

这个是所有 JQuery 运行所必须的,你可以调用 google 托管的,也可以下载到自己的主机上调用,可取所需了。

2、载入 JQuery 执行代码

$(".linkpage a").each(function(e){
$(this).prepend("<img src=http://www.google.com/s2/favicons?domain="+this.href.replace(/^(http:\/\/[^\/]+).*$/, '$1').replace( 'http://', '' )+">");
});

不多说了,懂点点英文的就应该就能大致理解这段代码的意思,最终效果可以看我的友情链接页面,和之前 PHP 实现的效果一模一样,只是方法更简单了而已。JQuery 真伟大,我喜欢。

转日万戈:http://wange.im/improve-favicon-in-wordpress-link-with-jquery.html

+++++++++++++++++++++++++++++++++++++

都是牛人呀~~~继续努力,美丽的一天又开始了,,go  go  come on

— 于 共写了3116个字
— 文内使用到的标签:
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 中国大陆许可协议进行许可。

2条回应:“本站links页面更新《获取 Favicon 服务美化友情链接》”

  1. chaojip57说道:

    感觉还是比较复杂 看不懂啊 也是能弄个插件的话就再好不过了