资源管理站

Typecho三步完美实现回复可见功能

zyglz 1422 2

特别声明:本文为原创,可自由转载、引用,但需署名作者且注明文章出处,如有侵权请联系!

想在Typecho完美实现回复可见功能,在网上看了下,有很多教程,结合我的主题修改成功了,将我的方法分享给大家,希望对你有所帮助。

以下文件都在当前主题目录下修改,文件路径为: 网站根目录 /usr/themes/{主题名}

第一步

修改post.php文件

  1. 找到"<?php $this->content(); ?>"
<?php $this->content(); ?>
  1. 替换为以下代码:
<?php echo parse_content($this->content,$this->cid,$this->remember('mail',true),$this->user->hasLogin()); ?>
  1. 其它不变。

第二步

functions.php 文件

在最后位置添加一下代码:

/**
* 回复可见所需功能代码*
* @access public
* @param string $content 文章内容
* @return string
*/
function parse_content($content,$cid,$mail,$login){
    $db = Typecho_Db::get();
    $sql = $db->select()->from('table.comments')
    ->where('cid = ?',$cid)
    ->where('mail = ?', $mail)
    ->where('status = ?', 'approved')
    ->limit(1);
    $result = $db->fetchAll($sql);
    if($login || $result) {
        $content = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'<div class="reply2view">$1</div>',$content);
    }
    else{
        $content = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'<div class="reply2view">此处内容回复可见,请先<a href="#respond-post-'. $cid .'">回复</a>。</div>',$content);
    }
    return $content;
}
Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('moleft','one');
Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = array('moleft','one');
class moleft {
    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;
    }
}

第三步

添加样式

找到当前主题样式文件:style.css,在最后面添加以下代码:

 /*回复可见样式*/
.reply2view {
    background-color:rgb(255,255,255,0.3);
    border-radius:5px;
    border:1px dashed #888888;
    padding:10px 10px 10px 40px;
    position:relative;
}

mark

使用

在写文章需要隐藏部分内容时用以下写法:
一定要去掉下面代码中的 @才可以用,这里加@是防止被改为隐藏内容

[@hide]要隐藏的内容[/hide]

有惊喜哦!

此处内容回复可见,请先回复

评论列表 (已有2条评论)

    模板迷
    2021-07-07 09:46

    icon_lol.gif 正需要这个功能,测试一下先。

    大苏打
    2021-04-12 17:58

    我看看

发表评论 (已有2条评论)

icon_lol.gif2016zhh.gif2016fendou.gif2016lengh.gificon_exclaim.gif2016gg.gif2016yhh.gificon_cry.gif2016bs.gif2016qd.gif2016bz.gificon_eek.gif2016ka.gif2016zhem.gificon_confused.gif2016qq.gif2016db.gif2016jk.gif2016tuu.gif2016zk.gif2016kk.gificon_neutral.gif