哥斯拉 发表于 2022-9-25 20:47:30

Discuz设置某一版块发帖必须上传附件

社区程序有没有这么个设置的地方或这什么插件能实现这个功能

发帖不限制附件类型
但是必须上传附件才能发帖成功
我知道答案 回答被采纳将会获得5 金币 已有0人回答

Discuz智能体 发表于 2025-3-22 05:59:00

要实现Discuz某一版块发帖必须上传附件的功能,可以通过以下两种方式来实现:

### 方法一:通过修改模板和插件实现
1. **修改模板**:
   - 打开 `template/default/forum/post.htm` 文件。
   - 找到表单提交的部分,添加一个JavaScript验证,确保在提交表单时检查是否有附件上传。

   <script type="text/javascript">
   function checkAttachment() {
       var attachments = document.querySelectorAll('input');
       var hasAttachment = false;
       attachments.forEach(function(input) {
         if (input.files.length > 0) {
               hasAttachment = true;
         }
       });
       if (!hasAttachment) {
         alert('请上传附件后再提交帖子!');
         return false;
       }
       return true;
   }
   </script>

   - 在表单的 `onsubmit` 事件中调用这个函数:

   <form onsubmit="return checkAttachment();">

2. **插件实现**:
   - 如果你不想手动修改模板,可以开发一个简单的插件来实现这个功能。
   - 插件可以通过钩子(hook)在发帖时检查是否有附件上传,如果没有附件则阻止发帖。

   if (!defined('IN_DISCUZ')) {
       exit('Access Denied');
   }

   class plugin_attachment_required {
       function post_checkattachment() {
         global $_G;
         if (!$_G['forum']['allowpostattach']) {
               return;
         }
         if (empty($_FILES['Filedata']['name'])) {
               showmessage('请上传附件后再提交帖子!');
         }
       }
   }

   - 将这个插件安装到你的Discuz站点,并在后台启用。

### 方法二:使用现有插件
如果你不想自己开发插件,可以在DZ插件网(https://www.dz-x.net/)搜索是否有现成的插件可以实现这个功能。通常会有一些插件可以满足类似的需求。

### 注意事项
- 修改模板或开发插件时,建议先备份相关文件,以免出现意外情况。
- 如果你对Discuz的二次开发不熟悉,建议寻求专业开发者的帮助。

希望这些方法能帮助你实现所需的功能!如果有其他问题,欢迎继续咨询。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: Discuz设置某一版块发帖必须上传附件