给Joe主题添加隐私评论功能(其他主题部分通用)

chen'mo
2023-03-01 / 2 评论 / 6,014 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年02月28日,已超过416天没有更新,若内容或图片失效,请留言反馈。

前言

方法非全部原创(不懂PHP),我只写了部分Js代码,思路和部分代码来自由小王先森 (xwsir.cn)基于Joe主题开发的Word主题

教程开始

  1. 将下面这段代码插入评论区(请自行美化样式),一般放在提交评论的按钮前
<input type="checkbox" name="is-private" id="PrivateComments"><label for="PrivateComments" class="PrivateCommentsLable">

代码位置Joe主题放在在 public\comment.php

<span class="cancle joe_comment__cancle">取消</span>
<button type="submit">发送评论</button>

其他主题可以在comment.php搜索你主题提交评论按钮的汉字,并放入前方

  1. 插入JS,将下面这段代码插入 comment.php 最下方
<script>
document.getElementById('PrivateComments').addEventListener('click',function(){var commentField=document.getElementById('comment');if(document.getElementById('PrivateComments').checked){Qmsg.info('已开启密语');var currentValue=commentField.value;commentField.value='密语# '+currentValue;commentField.addEventListener('input',preventDeletingText)}else{Qmsg.info('已关闭密语');commentField.value=commentField.value.replace('密语# ','');commentField.removeEventListener('input',preventDeletingText)}});function preventDeletingText(){var commentField=document.getElementById('comment');if(!commentField.value.startsWith('密语# ')){commentField.value='密语# '+commentField.value.substring(3)}}
</script>
  1. 修改评论输出语句(以Joe主题为例) 在comment.php

    <?php _parseCommentReply($comments->content); 

并修改为

<?php _getParentReply($comments->parent) ?>
                           <?php
                        $db = Typecho_Db::get();
$smyk = $db->fetchRow($db->select('mail')->from('table.comments')->where('coid = ?', $comments->parent)->limit(1));
$smhf = $comments->mail;
$user = Typecho_Widget::widget('Widget_User');
if (strpos($comments->content, '密语# ') == true) {
    $ykmail = Typecho_Cookie::get('__typecho_remember_mail');
    if ($smhf == $user->mail or $smhf == $ykmail or $user->group == 'administrator' or $smyk['mail'] == $ykmail and !empty($smyk['mail'])) {
        _parseCommentReply(str_replace('密语# ', '', $comments->content));
    } else {
        echo '<div class="secret">此条为密语,发布者可见</div>';
    }
} else {
    echo _parseCommentReply($comments->content);
}
?>
  1. 修改文本输入框,给文本框添加 id="comment"

      <div class="body">
                        <textarea class="text joe_owo__target" name="text" value="" autocomplete="new-password" placeholder="说点什么吧,点击右上方切换成画图试试?"><?php echo random_comment(); ?></textarea>

    如果你的主题输入框已有id值,就将js中的'comment' 修改为主题的id值

注意
如果实在不会改第三步可以去购买泽泽的隐私评论插件,然后将第2步的Js代码中
密语#
(包括空格)修改为
$私密$

或者使用我已经改好的Joe主题详细信息请查看
https://letanml.xyz/web-build/21

VMware Workstation Pro 17正式版,附注册码
« 上一篇 02-28
阿里云做两分钟小实验免费领水杯
下一篇 » 03-02

评论 (2)

插入图片
  1. 头像
    小王先森 Lv.1   贵州省贵阳市
    Windows 10 · Google Chrome
    沙发
    此条为密语,发布者可见
    回复
  2. 头像
    何先生 Lv.1   四川省成都市
    Windows 10 · Google Chrome
    板凳

    很不错的功能,对于没有用户中心私信功能的主题,很有帮助。

    回复