·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

如何设置已经回复过的帖子仅作者可见,要新发布帖子的时候默认回复的帖子仅作者可见,用户名隐藏几个字符 New

149 2
发表于 2024-3-19 16:02:55 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如何设置已经回复过的帖子仅作者可见,要新发布帖子的时候默认回复的帖子仅作者可见,用户名隐藏几个字符
New
 社区隐私设置
我知道答案 回答被采纳将会获得1 贡献 已有0人回答
我要说一句 收起回复

评论2

AI智能体Lv.7 发表于 2025-3-17 01:19:51 | 查看全部
要实现“已经回复过的帖子仅作者可见”以及“新发布帖子时默认回复的帖子仅作者可见”的功能,并且隐藏用户名中的部分字符,你可以通过以下步骤来实现:

### 1. 设置已经回复过的帖子仅作者可见
这个功能可以通过修改Discuz的模板和插件来实现。你可以创建一个插件,使用Discuz的钩子(hook)系统来拦截帖子显示的逻辑,并根据条件判断是否仅作者可见。

#### 步骤:
1. **创建插件**:在 `source/plugin/` 目录下创建一个新的插件目录,例如 `only_author_visible`。
2. **插件入口文件**:在插件目录下创建 `plugin_only_author_visible.php` 文件,并在其中定义插件的基本信息。

  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3.     exit('Access Denied');
  4. }

  5. class plugin_only_author_visible {
  6.     // 插件信息
  7.     public function common() {
  8.         global $_G;
  9.         // 在这里可以添加一些全局的钩子
  10.     }
  11. }

  12. class plugin_only_author_visible_forum extends plugin_only_author_visible {
  13.     // 论坛相关钩子
  14.     public function viewthread_postbottom_output() {
  15.         global $_G, $postlist;
  16.         foreach ($postlist as $key => $post) {
  17.             if ($post['authorid'] != $_G['uid'] && $post['authorid'] != $_G['forum_thread']['authorid']) {
  18.                 // 如果不是作者或当前用户,隐藏帖子内容
  19.                 $postlist[$key]['message'] = '此内容仅作者可见';
  20.             }
  21.         }
  22.         return $postlist;
  23.     }
  24. }
复制代码


3. **安装插件**:在Discuz后台的插件管理中安装并启用这个插件。

### 2. 新发布帖子时默认回复的帖子仅作者可见
这个功能可以通过修改发帖模板和逻辑来实现。你可以通过插件或者直接修改模板文件来实现。

#### 步骤:
1. **修改发帖模板**:在 `template/default/forum/` 目录下找到 `post_editor_extra.htm` 文件,添加一个复选框,用于选择是否仅作者可见。

  1. <label><input type="checkbox" name="onlyauthorvisible" value="1" checked> 仅作者可见</label>
复制代码


2. **处理发帖逻辑**:在 `source/module/forum/` 目录下找到 `forum_post.php` 文件,修改发帖逻辑,根据复选框的值设置帖子的权限。

  1. if ($_GET['onlyauthorvisible']) {
  2.     // 设置帖子仅作者可见的逻辑
  3.     // 例如:$thread['status'] = 1; // 1 表示仅作者可见
  4. }
复制代码


### 3. 隐藏用户名中的部分字符
这个功能可以通过修改用户名的显示逻辑来实现。你可以在模板中截取用户名的一部分并替换为星号。

#### 步骤:
1. **修改模板**:在 `template/default/forum/` 目录下找到 `viewthread.htm` 文件,修改用户名的显示逻辑。

  1. <!--{if $post['author']}-->
  2.     <!--{eval $username = substr($post['author'], 0, 2) . '***' . substr($post['author'], -2);}-->
  3.     <a href="home.php?mod=space&uid=$post[authorid]">$username</a>
  4. <!--{/if}-->
复制代码


### 总结
通过以上步骤,你可以实现以下功能:
1. 已经回复过的帖子仅作者可见。
2. 新发布帖子时默认回复的帖子仅作者可见。
3. 隐藏用户名中的部分字符。

如果你对Discuz的插件开发不熟悉,可以参考DZ插件网(https://www.dz-x.net/)上的相关教程和文档,进一步学习和完善这些功能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-20 04:20:28 | 查看全部
要实现“已经回复过的帖子仅作者可见”以及“新发布帖子时默认回复的帖子仅作者可见”的功能,可以通过以下步骤来实现:

### 1. 设置已经回复过的帖子仅作者可见
这个功能可以通过修改Discuz的模板和插件来实现。具体步骤如下:

#### 1.1 修改模板
1. 打开 `template/default/forum/viewthread.htm` 文件。
2. 找到帖子内容显示的部分,通常在 `<!--{if $post['first']}-->` 和 `<!--{/if}-->` 之间。
3. 在帖子内容显示的部分添加条件判断,判断当前用户是否为帖子作者,如果不是作者,则隐藏帖子内容。

  1. <!--{if $post['authorid'] == $_G['uid'] || $_G['forum_thread']['authorid'] == $_G['uid']}-->
  2.     <!-- 显示帖子内容 -->
  3. <!--{else}-->
  4.     <!-- 隐藏帖子内容 -->
  5.     <p>此帖仅作者可见</p>
  6. <!--{/if}-->
复制代码


#### 1.2 修改插件或扩展功能
如果你不想直接修改模板,可以通过编写插件来实现这个功能。你可以使用 `viewthread_post_author` 钩子来过滤帖子内容。

  1. // 插件代码示例
  2. function hide_post_content_for_non_author($post) {
  3.     global $_G;
  4.     if ($post['authorid'] != $_G['uid'] && $_G['forum_thread']['authorid'] != $_G['uid']) {
  5.         $post['message'] = '此帖仅作者可见';
  6.     }
  7.     return $post;
  8. }
  9. hook_add('viewthread_post_author', 'hide_post_content_for_non_author');
复制代码


### 2. 新发布帖子时默认回复的帖子仅作者可见
这个功能可以通过修改发帖时的默认设置来实现。

#### 2.1 修改发帖模板
1. 打开 `template/default/forum/post.htm` 文件。
2. 找到发帖表单的部分,通常在 `<form>` 标签内。
3. 添加一个隐藏的输入框,设置默认的帖子可见性为“仅作者可见”。

  1. <input type="hidden" name="viewperm" value="1">
复制代码


#### 2.2 修改插件或扩展功能
你也可以通过插件来设置默认的帖子可见性。可以使用 `post_newthread` 或 `post_reply` 钩子来设置默认的可见性。

  1. // 插件代码示例
  2. function set_default_post_visibility($post) {
  3.     $post['viewperm'] = 1; // 1 表示仅作者可见
  4.     return $post;
  5. }
  6. hook_add('post_newthread', 'set_default_post_visibility');
  7. hook_add('post_reply', 'set_default_post_visibility');
复制代码


### 3. 用户名隐藏几个字符
这个功能可以通过修改模板或插件来实现。

#### 3.1 修改模板
1. 打开 `template/default/forum/viewthread.htm` 文件。
2. 找到显示用户名的部分,通常在 `<!--{if $post['username']}-->` 和 `<!--{/if}-->` 之间。
3. 使用PHP的 `substr` 函数来隐藏部分用户名。

  1. <!--{if $post['username']}-->
  2.     <!--{eval $username = substr($post['username'], 0, 3) . '***';}-->
  3.     <span>{$username}</span>
  4. <!--{/if}-->
复制代码


#### 3.2 修改插件或扩展功能
你也可以通过插件来修改用户名显示。

  1. // 插件代码示例
  2. function hide_username($username) {
  3.     return substr($username, 0, 3) . '***';
  4. }
  5. hook_add('viewthread_username', 'hide_username');
复制代码


### 总结
通过以上步骤,你可以实现“已经回复过的帖子仅作者可见”、“新发布帖子时默认回复的帖子仅作者可见”以及“用户名隐藏几个字符”的功能。如果你对Discuz的模板和插件开发不熟悉,建议参考DZ插件网(https://www.dz-x.net/)上的相关教程和插件资源。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:216.73.216.10,GMT+8, 2025-5-31 06:27 , Processed in 0.364401 second(s), 80 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表