TpCache 之修复评论人信息缓存

文章目录:

  1. typecho插件魔改·tpcache
  2. TpCache 之修复评论人信息缓存
  3. TpCache 之修复阅读计数

在启用了全局缓存之后,很容易就会想到,如果一个用户输入了邮箱名字,发送了评论,那么 typecho 会缓存这些信息,以便下一次评论使用。在typehco 主题中,我们通常会这样写:

$this->remember('author');

这样来获取cookie 存储的评论作者名字。所以全局缓存之后,其他用户打开这个页面,看到的评论框里的名字邮箱,就可能是以前某个用户评论了被全局缓存留下的,全局缓存会把页面转成静态 html,所以执行不到 php 获取cookie那里去。

接下来我们来修复这个问题,既然是根据cookie获取的,我们就用js在把cookie获取一次回填不就好了吗?

一般主题的评论相关都在 comment.php 或者 comments.php,这里面可以找到:

<?php $this->remember('author'); ?>
<?php $this->remember('mail'); ?>
<?php $this->remember('url'); ?>

我们把这些语句删掉,在给节点加上id,以 joe主题为例,新版joe 6的文件在public/comment.php 里面:

<input id="comment-mail" type="text" value="<?php $this->remember('mail'); ?>" autocomplete="off" name="mail" placeholder="邮箱(必填)" />

删了之后:

<input id="comment-mail" type="text" value="" autocomplete="off" name="mail" placeholder="邮箱(必填)" />

此时对于邮箱的idcomment-mail,没有的可以自己加,其他作者和链接也是类似。

这里完成之后我们就要用 js 回填信息了。我们需要在引入 jquery 语句的后面加,一般在footer,joe主题可以加在config.php 最后面。根据之前设置的 3个id 分别设置信息。

/* 刷新 评论 cookie */
<?php if(!$this->user->hasLogin()){ ?>
function getCookie(name){
    const strcookie = document.cookie;//获取cookie字符串
    const arrcookie = strcookie.split("; ");//分割
    //遍历匹配
    for (let i = 0; i < arrcookie.length; i++) {
        const arr = arrcookie[i].split("=");
        if (arr[0] === name){
            return unescape(decodeURI(arr[1]));
        }
    }
    return "";
}
function adduser(){
    let nick = document.getElementById('comment-nick')
    let mail = document.getElementById('comment-mail')
    let url = document.getElementById('comment-url')
    if (nick) nick.value = getCookie(window.JOE_CONFIG.COOKIE_PREFIX+'__typecho_remember_author');
    if (mail) mail.value = getCookie(window.JOE_CONFIG.COOKIE_PREFIX+'__typecho_remember_mail');
    if (url) url.value = getCookie(window.JOE_CONFIG.COOKIE_PREFIX+'__typecho_remember_url');
}
adduser();
<?php } ?>

如果启用了 pjax ,可以在pjax 的回调函数加:

typeof adduser != 'undefined' && adduser()

清除缓存在刷新,就大功告成了~!

给TA打赏
共{{data.count}}人
人已打赏
建站教程软件工具

Typecho 缓存插件 TpCache 魔改版 by gogobody

2021-1-23 15:10:00

建站教程技术活

TpCache之修复阅读次数

2021-1-23 15:53:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索