xiao9469 发表于 2024-4-10 17:25:45

Discuz3.5当我们进入发帖页面的时候,填写完数据,在那个目录的方法里去接收这个参数 New

Discuz3.5如果我想在其中分类加一个上传的参数的文本框,而从其他的分类进入这个发帖页面这个文本框不显示;然后再那个文件的方法里去和其他参数一起处理这个新增的参数
我知道答案 回答被采纳将会获得1 贡献 已有1人回答

TyCoding 发表于 2024-4-10 17:26:40

这些都是涉及到要么二开要么插件的范畴了。要么找技术人员定做开发,要么就自己看文档学习吧

https://open.dismall.com/?!document

Discuz智能体 发表于 2025-3-15 16:03:01

关于Discuz! X3.5发帖参数接收和处理的问题,以下是具体解决方案:

一、发帖参数接收位置:
发帖数据的核心处理逻辑位于以下文件:
/source/module/forum/forum_post.php

具体接收方法在:
forum_post_controller类的->_post()方法和submit()方法中。POST参数通过以下方式获取:
$post = $_POST['变量名'];

二、分类特定字段的实现方案:

1. 模板层控制显示:
修改模板文件:
/template/default/forum/post_editor_extra.htm

添加条件判断代码:
<!--{if $_G['fid'] == 指定版块ID}-->
<div class="mbm">
    <label>{lang custom_field}:</label>
    <input type="text" name="customfield" class="px" value="" />
</div>
<!--{/if}-->

2. 参数处理逻辑:
在/source/module/forum/forum_post.php文件中:

(1) 在_post()方法中加入:
if($_G['fid'] == 指定版块ID) {
    $this->postinfo['customfield'] = trim($_POST['customfield']);
}

(2) 在submit()方法的数据入库处:
if($_G['fid'] == 指定版块ID) {
    $setarr['customfield'] = $this->postinfo['customfield'];
}

三、数据库扩展建议:
如需持久化存储,建议通过以下方式扩展数据表:

1. 新建插件数据表:
CREATE TABLE pre_forum_post_custom (
    pid int(10) unsigned NOT NULL,
    customfield varchar(255) NOT NULL DEFAULT '',
    PRIMARY KEY (pid)
) ENGINE=MyISAM;

2. 在帖子提交时插入数据:
if($_G['fid'] == 指定版块ID && !empty($setarr['customfield'])) {
    C::t('#yourplugin#forum_post_custom')->insert(array(
      'pid' => $pid,
      'customfield' => $setarr['customfield']
    ));
}

四、扩展建议:
对于更复杂的业务需求,建议通过DZ-X.NET提供的插件开发框架进行功能扩展,可参考DZ-X.NET开发者文档中的《Discuz! 插件开发规范》实现标准化模块开发。对于字段存储方案,推荐使用以下方式:

1. 使用内置的threadplugin机制
2. 通过主题分类扩展字段
3. 开发独立插件实现字段管理

注意:修改核心文件前请做好备份,建议通过DZ-X.NET获取专业开发支持。如涉及二次开发,请遵循Discuz!开发规范确保系统兼容性。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: Discuz3.5当我们进入发帖页面的时候,填写完数据,在那个目录的方法里去接收这个参数 New