
一、通过修改程序源码来替换Gravatar头像地址
打开var/Typecho/Common.php,通过搜索“gravatar”找到下面的代码,大概在939行。
1. public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false)
2. {
3. if (defined(‘__TYPECHO_GRAVATAR_PREFIX__’)) {
4. $url = __TYPECHO_GRAVATAR_PREFIX__;
5. } else {
6. $url = $isSecure ? ‘https://secure.gravatar.com’ : ‘http://www.gravatar.com’;
7. $url .= ‘/avatar/’;
8. }
9.
10. if (!emptyempty($mail)) {
11. $url .= md5(strtolower(trim($mail)));
12. }
13.
14. $url .= ‘?s=’ . $size;
15. $url .= ‘&r=’ . $rating;
16. $url .= ‘&d=’ . $default;
17.
18. return $url;
19. }
修改上面的第6、7行即可,也就是将默认的两个地址进行替换,比如换成这样:
1. $url = $isSecure ? ‘https://cdn.v2ex.com/gravatar/’ : ‘http://gravatar.duoshuo.com/avatar/’;
请注意!两行变成了1行,是因为这两个地址的头像目录不同,所以直接合并写成了1个网址。
二、通过主题 functions.php 新增函数来替换Gravatar头像地址
打开 functions.php 第2行添加 define(‘__TYPECHO_GRAVATAR_PREFIX__’, ‘https://cdn.v2ex.com/gravatar/’); 即可实现地址更改,不需要在 config.inc.php 中修改源文件。如果想要更换成其它地址,修改 v2ex 地址为其它即可。
~~林三为了让主题更加质感,~~将地址修改功能集成到主题设置里面,需要在 functions.php 的 function themeConfig($form) 内增选项。基本逻辑是,如果没有选择使用哪个国内地址,则默认使用官方的头像地址。
1、先在首行 <?php if (!defined(‘__TYPECHO_ROOT_DIR__’)) exit; 下面添加判断函数之代码
1. if (Helper::options()->GravatarUrl) define(‘__TYPECHO_GRAVATAR_PREFIX__’, Helper::options()->GravatarUrl);
2、然后在 function themeConfig($form) 内使用对应的参数选项
1. $GravatarUrl = new Typecho_Widget_Helper_Form_Element_Radio(‘GravatarUrl’,
2. array(false => _t(‘官方源’),
3. ‘https://cn.gravatar.com/avatar/’ => _t(‘国内源’),
4. ‘https://cdn.v2ex.com/gravatar/’ => _t(‘V2EX源’)),
5. false, _t(‘Gravatar头像源’), _t(‘默认使用官方源之头像’));
6. $form->addInput($GravatarUrl);
3、保存后点主题设置,勾选自己喜欢的国内地址即可无缝切换。当然,这几个地址也可以换的,自己随意…
三、typecho 评论常用的输出调用代码
1. <?php $comments->author(true); ?>//输出评论人昵称,参数true为带链接的,false为不带链接的;
2. //ps.其实还有一个参数,类型也是布尔,作用是是否带noFollow
3. <?php $comments->excerpt(18, ‘…’); ?>//输出评论摘要,第一个参数是要截取的长度,第二个是截取后的字符串;
4. <?php $comments->permalink(); ?>//获取当前评论链接,木有参数;
5. <?php $comments->title(); ?>//获取当前评论标题,同样木有参数;
6. <?php $comments->dateWord(); ?>//输出词义化日期,就是输出“3小时前”、“三天前”之内的;
7. <?php $comments->gravatar(); ?>//调用gravatar输出用户头像,有两个参数,第一个是头像尺寸,默认是32,第二个是默认输出的头像。
就更新到这里,这是今天修改 man.linsan.cc 子站的时候,重新学习的内容。