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回复可见
发表新评论
已有 24 条评论
  1. owen
    owenWindows 7谷歌浏览器
    回复

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

    1. owen
      owenWindows 7谷歌浏览器
      回复

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

      1. Jrotty
        Jrotty本文作者Windows 10谷歌浏览器
        回复

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

  2. Moexin
    MoexinWindows 10谷歌浏览器
    回复

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

    1. Jrotty
      Jrotty本文作者Windows 10谷歌浏览器
      回复

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

  3. Moexin
    MoexinWindows 10谷歌浏览器
    回复

    很强,找这个找了好久了

  4. vasta
    vastaWindows 10火狐浏览器
    回复

    测试一下

  5. Sakura
    SakuraWindows Vista谷歌浏览器
    回复

    收下了,以后回te用上

  6. Hran
    HranMac OS XSafari浏览器
    回复

    看了看你博客的更新速度,又看了看我的。。。。
    突然泪目

    1. Jrotty
      Jrotty本文作者Windows 10谷歌浏览器
      回复

      @Hran 我这里全是水,不用在意233

PREVIOUS NEXT
雷姆
拉姆
音乐加载中...
0:00