如何设置已经回复过的帖子仅作者可见,要新发布帖子的时候默认回复的帖子仅作者可见,用户名隐藏几个字符 New
我知道答案 回答被采纳将会获得1 贡献 已有0人回答 要实现“已经回复过的帖子仅作者可见”以及“新发布帖子时默认回复的帖子仅作者可见”的功能,并且隐藏用户名中的部分字符,你可以通过以下步骤来实现:
### 1. 设置已经回复过的帖子仅作者可见
这个功能可以通过修改Discuz的模板和插件来实现。你可以创建一个插件,使用Discuz的钩子(hook)系统来拦截帖子显示的逻辑,并根据条件判断是否仅作者可见。
#### 步骤:
1. **创建插件**:在 `source/plugin/` 目录下创建一个新的插件目录,例如 `only_author_visible`。
2. **插件入口文件**:在插件目录下创建 `plugin_only_author_visible.php` 文件,并在其中定义插件的基本信息。
<?php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class plugin_only_author_visible {
// 插件信息
public function common() {
global $_G;
// 在这里可以添加一些全局的钩子
}
}
class plugin_only_author_visible_forum extends plugin_only_author_visible {
// 论坛相关钩子
public function viewthread_postbottom_output() {
global $_G, $postlist;
foreach ($postlist as $key => $post) {
if ($post['authorid'] != $_G['uid'] && $post['authorid'] != $_G['forum_thread']['authorid']) {
// 如果不是作者或当前用户,隐藏帖子内容
$postlist[$key]['message'] = '此内容仅作者可见';
}
}
return $postlist;
}
}
3. **安装插件**:在Discuz后台的插件管理中安装并启用这个插件。
### 2. 新发布帖子时默认回复的帖子仅作者可见
这个功能可以通过修改发帖模板和逻辑来实现。你可以通过插件或者直接修改模板文件来实现。
#### 步骤:
1. **修改发帖模板**:在 `template/default/forum/` 目录下找到 `post_editor_extra.htm` 文件,添加一个复选框,用于选择是否仅作者可见。
<label><input type="checkbox" name="onlyauthorvisible" value="1" checked> 仅作者可见</label>
2. **处理发帖逻辑**:在 `source/module/forum/` 目录下找到 `forum_post.php` 文件,修改发帖逻辑,根据复选框的值设置帖子的权限。
if ($_GET['onlyauthorvisible']) {
// 设置帖子仅作者可见的逻辑
// 例如:$thread['status'] = 1; // 1 表示仅作者可见
}
### 3. 隐藏用户名中的部分字符
这个功能可以通过修改用户名的显示逻辑来实现。你可以在模板中截取用户名的一部分并替换为星号。
#### 步骤:
1. **修改模板**:在 `template/default/forum/` 目录下找到 `viewthread.htm` 文件,修改用户名的显示逻辑。
<!--{if $post['author']}-->
<!--{eval $username = substr($post['author'], 0, 2) . '***' . substr($post['author'], -2);}-->
<a href="home.php?mod=space&uid=$post">$username</a>
<!--{/if}-->
### 总结
通过以上步骤,你可以实现以下功能:
1. 已经回复过的帖子仅作者可见。
2. 新发布帖子时默认回复的帖子仅作者可见。
3. 隐藏用户名中的部分字符。
如果你对Discuz的插件开发不熟悉,可以参考DZ插件网(https://www.dz-x.net/)上的相关教程和文档,进一步学习和完善这些功能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 要实现“已经回复过的帖子仅作者可见”以及“新发布帖子时默认回复的帖子仅作者可见”的功能,可以通过以下步骤来实现:
### 1. 设置已经回复过的帖子仅作者可见
这个功能可以通过修改Discuz的模板和插件来实现。具体步骤如下:
#### 1.1 修改模板
1. 打开 `template/default/forum/viewthread.htm` 文件。
2. 找到帖子内容显示的部分,通常在 `<!--{if $post['first']}-->` 和 `<!--{/if}-->` 之间。
3. 在帖子内容显示的部分添加条件判断,判断当前用户是否为帖子作者,如果不是作者,则隐藏帖子内容。
<!--{if $post['authorid'] == $_G['uid'] || $_G['forum_thread']['authorid'] == $_G['uid']}-->
<!-- 显示帖子内容 -->
<!--{else}-->
<!-- 隐藏帖子内容 -->
<p>此帖仅作者可见</p>
<!--{/if}-->
#### 1.2 修改插件或扩展功能
如果你不想直接修改模板,可以通过编写插件来实现这个功能。你可以使用 `viewthread_post_author` 钩子来过滤帖子内容。
// 插件代码示例
function hide_post_content_for_non_author($post) {
global $_G;
if ($post['authorid'] != $_G['uid'] && $_G['forum_thread']['authorid'] != $_G['uid']) {
$post['message'] = '此帖仅作者可见';
}
return $post;
}
hook_add('viewthread_post_author', 'hide_post_content_for_non_author');
### 2. 新发布帖子时默认回复的帖子仅作者可见
这个功能可以通过修改发帖时的默认设置来实现。
#### 2.1 修改发帖模板
1. 打开 `template/default/forum/post.htm` 文件。
2. 找到发帖表单的部分,通常在 `<form>` 标签内。
3. 添加一个隐藏的输入框,设置默认的帖子可见性为“仅作者可见”。
<input type="hidden" name="viewperm" value="1">
#### 2.2 修改插件或扩展功能
你也可以通过插件来设置默认的帖子可见性。可以使用 `post_newthread` 或 `post_reply` 钩子来设置默认的可见性。
// 插件代码示例
function set_default_post_visibility($post) {
$post['viewperm'] = 1; // 1 表示仅作者可见
return $post;
}
hook_add('post_newthread', 'set_default_post_visibility');
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` 函数来隐藏部分用户名。
<!--{if $post['username']}-->
<!--{eval $username = substr($post['username'], 0, 3) . '***';}-->
<span>{$username}</span>
<!--{/if}-->
#### 3.2 修改插件或扩展功能
你也可以通过插件来修改用户名显示。
// 插件代码示例
function hide_username($username) {
return substr($username, 0, 3) . '***';
}
hook_add('viewthread_username', 'hide_username');
### 总结
通过以上步骤,你可以实现“已经回复过的帖子仅作者可见”、“新发布帖子时默认回复的帖子仅作者可见”以及“用户名隐藏几个字符”的功能。如果你对Discuz的模板和插件开发不熟悉,建议参考DZ插件网(https://www.dz-x.net/)上的相关教程和插件资源。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]