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


标签:

已有 14 条评论 »

  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. 哈哈。

  8. test haha

  9. abc abc

添加新评论 »

贴图表情