在网上搜索了好多的教程,只能单一实现回复可见或是登录可见,好多插件也是如此且年久失修,都不好用,于是在豆包AI的加持下实现了回复可见和登录可见的功能,正文开始:
修改<?php ($this->content); ?>
,一般在post.php
和page.php
将<?php ($this->content); ?>
替换为:
<!-- 回复&登录可见 -->
<?php
$db = Typecho_Db::get();
$sql = $db->select()->from('table.comments')
->where('cid =?',$this->cid)
->where('mail =?', $this->remember('mail',true))
->where('status =?', 'approved')
->limit(1);
$result = $db->fetchAll($sql);
$finalContent = $this->content; // 先保存原始内容
if($this->user->hasLogin()) {
// 处理登录可见
$finalContent = preg_replace("/\[login\](.*?)\[\/login\]/sm",'<div class="login_reply2view jz jc ys">$1</div>', $finalContent);
} else {
$finalContent = preg_replace("/\[login\](.*?)\[\/login\]/sm",'<div class="login_reply2view jz jc ys">此处内容需要<a href="/admin" target="_blank">登录</a>后方可阅读</div>', $finalContent);
}
if($this->user->hasLogin() || $result) {
// 处理回复可见
$finalContent = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'<div class="reply2view jz jc ys">$1</div>', $finalContent);
} else {
$finalContent = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'<div class="reply2view jz jc ys">此处内容需要<a href="#comments">评论</a>回复后(审核通过)方可阅读</div>', $finalContent);
}
echo $finalContent;
?>
<!-- 回复&登录可见 -->
如修改了默认后台地址请替换相应的登陆地址。
修改functions.php
将下面的代码片段添加到文件末尾处
// 回复可见
Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('z97hide','one');
Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = array('z97hide','one');
class z97hide {
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;
}
}
// 登录可见
Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('z97login','one');
Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = array('z97login','one');
class z97login {
public static function one($con,$obj,$text)
{
$text = empty($text)?$con:$text;
if(!$obj->is('single')){
$text = preg_replace("/\[login\](.*?)\[\/login\]/sm",'',$text);
}
return $text;
}
}
添加样式
.login_reply2view {
background-color: #f8f9fa;
padding: 10px;
border: 1px solid #dee2e6;
border-radius: 5px;
font-size: 14px;
color: #6c757d;
}
.reply2view {
background-color: #e9ecef;
padding: 10px;
border: 1px solid #ced4da;
border-radius: 5px;
font-size: 14px;
color: #495057;
}
您可以根据自己的需求进一步修改这些样式,例如颜色、字体大小、边距等,以使其更符合您的网站整体风格。
使用(使用时去掉@)
回复可见:在文章内使用[@hide][/hide]
标签包裹即可
登陆可见:在文章内使用[@login][/login]
标签包裹即可