MoeNetwork/MoeCDN-Typecho

关于gravatar加速的问题

Opened this issue · 4 comments

我直接在我模板的index.php里面调用了$this->author->gravatar();
也就是相当于调用了Widget_Abstract_Users这个类里面的gravatar方法
导致最终的输出结果还是原来的gravatar.com
这个方法似乎没有办法进行hook改写?

抱歉,无论是 Widget_Users_Author 类或是 Widget_Abstract_Users 类中,都没有提供接口来挂载函数,因此此方法可能得不到解决。但是,如果您愿意,请更新到最新的版本,这样您可以使用

MoeCDN_Plugin::getavatar($this);

来代替

$this->author->gravatar();

这样是可以得到等同的效果的,如果您的模板是自用的话,就可以像这样来解决。

3q,这的确是一个解决方法
不过是否可以使用跟 googleApi_beforeRender 一样的处理方法,直接在文章输出前把 gravatar 的 url 替换掉?
比如说这样
str_replace("//www.gravatar.com", "//gravatar.moefont.com", $html);

是的,确实可以这样。
但是因为如果那样做,可能会连带着替换了文章的内容(假设你的一篇文章里有 Gravatar/GoogleAPIs 的地址,即使这样的概率很小)。
所以这个方案,如果没有其他办法的万不得已情况才能这么做,这样能把误判误替换的可能降到最低。

那能不能用正则表达式匹配整个img标签,再进行替换?