Typecho设置评论可见

代码178 字

<?php
$db = Typecho_Db::get();
$sql = $db->select()->from('table.comments')
    ->where('cid = ?',$this->cid)
    ->where('mail = ?', $this->remember('mail',true))
    ->limit(1);
$result = $db->fetchAll($sql);
if($this->user->hasLogin() || $result) {
    $content = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'<div class="reply2view"><b>本贴隐藏的内容:</b><br><font color="#dc143c">$1</font></div>',$this->content);
}
else{
    $content = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'<div class="reply2view">此处内容已隐藏,<a href="#textarea">回复</a>可见</div>',$this->content);
}
echo $content 
?>
 代码中的<a href="#textarea">回复</a>可见,把textarea换成评论框id,不懂就直接把a标签删除,
 把<a href="#textarea">回复</a>可见换成 回复可见


解决缩略内容和feed暴露问题。

在functions.php文件末尾加入如下代码

Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('myyodux','one');
        Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = array('myyodux','one');
        class myyodux {
            public static function one($con,$obj,$text)
            {
              $text = empty($text)?$con:$text;
              if(!$obj->is('single')){
              $text = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'',$text);
              }         
                       return $text;
        }
        }

就是用插件接口,在缩略内容输出之前,隐藏掉或者替换掉回复可见内容,同时使用if判断,来针对非single页面进行隐藏。


可以放在post.php文件开头

<style>
.reply2view {
    background: #f8f8f8;
    padding: 3px;
    position: relative;   
}
</style>


写文章的时候把需要隐藏的内容用 [hide] 包起来

[hide]
需要隐藏的内容
[/gide]

云帆沧海
一个持续更新的个人博客,记录生活、工作、爱好的点点滴滴。
赞赏
OωO
开启隐私评论,您的评论仅作者和评论双方可见
评论 ( 1 )
  1. 请问一下single页是代表什么类型的页面呢,ty的源码看了半天还是不太懂

    2021年01月02日回复