QQ爹の博客 QQ爹の博客

typecho非插件实现回复可见功能

in Typecho 文章转载请注明来源!

因为一般首页很少有全文输出的,而且一般隐藏内容都放在文章后面,所以就不需要处理首页的输出内容了。

直接处理post.php就可以了,使用下面的代码

<?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">$1</div>',$this->content);
}
else{
    $content = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'<div class="reply2view">此处内容需要评论回复后方可阅读。</div>',$this->content);
}
echo $content 
?>

替换模板post.php中的

<?php $this->content(); ?>

使用方法,在写文章需要隐藏部分内容时用以下写法(去掉@)

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

css参考样式

.reply2view {
    background:#f8f8f8;
    padding:10px 10px 10px 40px;
    position:relative
}

代码来自typecho论坛http://forum.typecho.org/viewtopic.php?f=6&t=4939&p=25945

本文代码为了更好地适应各种模板,对原代码稍加了点删改

jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

typecho回复可见
发表新评论
已有 28 条评论
  1. 唐哥会发光
    唐哥会发光火狐浏览器
    回复

    话说垃圾评论失败了也可以显示啊怎么搞,随便回复个标点符号都可以

  2. 唐哥会发光
    唐哥会发光火狐浏览器
    回复

    谢谢 灰常好用

  3. 不暇
    不暇 MChrome
    回复

    厉害了我的哥,我等下就试试这个。

  4. owen
    owen 7Chrome
    回复

    你隐藏的不是地方,还以为就是那样设置~~

    1. owen
      owen 7Chrome
      回复

      @owen 这种方法,其实打开文章时,内容会传送两份,即正常的一份(默认注释掉),隐藏的一份,当回复或登录后,需要刷新一次页面,然后正常的一份显示,隐藏的一份不显示,这样会加大页面体积,对移动端不友好。

      1. Jrotty
        Jrotty本文作者 10Chrome
        回复

        @owen 知道为什么评论下需要刷新才能显示吗,因为我这个是ajax无刷新评论,正常评论默认就会刷新页面的

        1. owen
          owen 7Chrome
          回复

          @Jrotty 这个不清楚~ 会不会是 ajax 不支持 js 刷新?

  5. Moexin
    Moexin 10Chrome
    回复

    不过使用方法貌似显示出来=QwQ

    1. Jrotty
      Jrotty本文作者 10Chrome
      回复

      @Moexin 如果你处于登陆状态就可以看到的

  6. Moexin
    Moexin 10Chrome
    回复

    很强,找这个找了好久了

前篇 后篇
雷姆
拉姆