typecho使用gravatar头像缓存服务器

2016/09/03 update: duoshuo开坑了, 404, 改7牛 http://gravatar2.u.qiniudn.com/avatar

gravatar 已经被墙了, 因而 gravatar 用户头像 也无法访问了.

于是typecho博客里的 评论留言全图裂了.

不过还好国内有些服务器缓存了 用户头像.


  • http://0.gravatar.com/avatar/bae9d4b1a95b2fa9bc21f732988c3218
  • http://gravatar.duoshuo.com/avatar/bae9d4b1a95b2fa9bc21f732988c3218

切换到 typecho 代码目录, 直接 一发 grep 即可找到相关代码:


$ grep gravatar.com -r
admin/profile.php:                <?php echo '<img class="avatar" src="http://www.gravatar.com/avatar/' . md5($user->mail) . '?s=50&r=X' .
var/Widget/Abstract/Comments.php:                    $host = 'https://secure.gravatar.com';
var/Widget/Abstract/Comments.php:                        $host = 'http://0.gravatar.com';
var/Widget/Abstract/Comments.php:                        $host = sprintf( "http://%d.gravatar.com", (hexdec($mailHash{0}) % 2));
var/Widget/Abstract/Users.php:        echo '<img' . (empty($class) ? '' : ' class="' . $class . '"') . ' src="http://www.gravatar.com/avatar/' .
var/Widget/Options/Discussion.php:            'commentsAvatar'        =>  _t('启用<a href="http://gravatar.com">Gravatar</a>头像服务, 最高显示评级为 %s 的头像',

于是把它们替换成新的服务器就行了.


添加后台配置项


但是不想每次换缓存服务器 代码都改来改去, 于是把缓存服务器加入后台配置项.

文件 var/Widget/Options/Discussion.php
添加配置输入框:


    /** avatar 缓存 chen added **/
    $commentsAvatarCache =  new Typecho_Widget_Helper_Form_Element_Text('commentsAvatarCache', NULL, $this->options->commentsAvatarCache,
    _t('头像缓存'), _t('说明: 因为GFW的原因, 这里设置 gravatar 头像缓存 服务器, 例如:<br>
    <b style="color:red">http://0.gravatar.com/avatar/</b>0dff6926206df3b0db6152b08be568af<br>
    <b style="color:red">http://gravatar.duoshuo.com/avatar/</b>bae9d4b1a95b2fa9bc21f732988c3218<br>
    填入红字部分, 留空使用gravater默认服务器.
    '));
    $form->addInput($commentsAvatarCache);

添加字段提交处理:

updateDiscussionSettings函数中, 添加 commentsAvatarCache


$settings = $this->request->from('commentDateFormat', 'commentsListSize','commentsAvatarCache', ...


数据库添加相应数据行:

数据库 options表 添加 commentsAvatarCache 数据行


INSERT INTO  `typecho_options` (`name`,`user`,`value`)
VALUES ('commentsAvatarCache',  '0', NULL)

使用配置值的位置


回复评论: var/Widget/Abstract/Comments.php gravatar 函数中


$url = $host . '/avatar/';
//chen added @ 2015-02
if( ! empty($this->options->commentsAvatarCache) ){
    $url = $this->options->commentsAvatarCache;
}

后台头像: admin/profile.php 此处访问options的方法 参考 grep options admin -r 结果,
发现直接就有$options 变量提供. ps: 开始习惯在linux下用grep了,以前都是用文本编辑器多文件查找.


<?php echo '<img class="avatar" src="'.
 (empty($options->commentsAvatarCache)? 'http://www.gravatar.com/avatar/': $options->commentsAvatarCache) .

其他: var/Widget/Abstract/Users.php

最终效果:

typecho_gravater_img.png


标签:

已有 11 条评论 »

  1. mail test!!!!

  2. 回复 测试邮件: 163 or QQ 23:52

    1. tester tester

      测试 评论邮件 03:46

  3. 我想问下这篇文章http://note.yurenchen.com/archives/typecho_siteUrl.html
    具体修改源码的哪个文件啊

    1. 那个站 评论不了么?
      typecho 的文件都是按 类命名空间存放的,
      具体路径我忘了, 不过你可以通过 关键词查找 轻松找到它的位置.

  4. 那个站评论有审核,审核没过呢

  5. 测试 测试!!!!

    1. 网站还可以, 但是不要重复刷帖

  6. 看看

  7. 哈哈。

添加新评论 »

贴图表情