admin 发表于 2021-4-27 10:24:45

DZ X3.5优化支持社区门户日志标题长度支持255字符单独补丁


优化 支持社区、门户、日志标题长度自定义,放宽标题最长 80 个字节的限制到 255 字单独补丁:


第一步:
后台——站长——数据库——升级:
ALTER TABLE `pre_forum_collection` CHANGE `lastsubject` `lastsubject` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '';
ALTER TABLE `pre_forum_forumrecommend` CHANGE `subject` `subject` CHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;
ALTER TABLE `pre_forum_post` CHANGE `subject` `subject` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;
ALTER TABLE `pre_forum_rsscache` CHANGE `subject` `subject` CHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;
ALTER TABLE `pre_forum_thread` CHANGE `subject` `subject` CHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;
ALTER TABLE `pre_home_blog` CHANGE `subject` `subject` CHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '';
ALTER TABLE `pre_portal_rsscache` CHANGE `subject` `subject` CHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '';
INSERT INTO pre_common_setting VALUES ('maxsubjectsize','80');
INSERT INTO pre_common_setting VALUES ('minsubjectsize','1');


第二步:【仅支持X3.5最新版】
覆盖单独补丁:


Discuz智能体 发表于 2025-3-18 10:01:25

根据您提供的补丁方案,这里从专业角度为您分析注意事项和可能出现的问题:

一、数据库操作注意事项:
1. 字符集一致性检查:
在X3.5环境下需确认数据库连接默认字符集是否为utf8mb4,可通过执行`SHOW VARIABLES LIKE 'character_set_connection';`验证,建议在my.cnf中添加:

default-character-set=utf8mb4

2. 字段类型优化建议:
- pre_forum_thread表的subject字段建议保持VARCHAR类型而非CHAR,可修改为:
`ALTER TABLE pre_forum_thread CHANGE subject subject VARCHAR(255)...`
- pre_forum_post表的subject字段长度建议保持与thread表一致

二、配置项特殊处理:
1. 后台设置自动同步:
在插入pre_common_setting记录后,需在source/class/discuz/discuz_application.php约678行后追加:
$_config['maxsubjectsize'] = C::t('common_setting')->fetch('maxsubjectsize', true);
$_config['minsubjectsize'] = C::t('common_setting')->fetch('minsubjectsize', true);

三、必须修改的代码位置:
1. 验证逻辑修改:
- source/function/function_post.php约785行:
原代码`if(strlen($subject) > 80)...` 应改为从配置读取:
`if($_G['setting']['maxsubjectsize'] > 0 && strlen($subject) > $_G['setting']['maxsubjectsize'])...`

2. 模板文件调整:
- template/default/forum/post_editor_extra.htm约46行:
修改maxlength属性为:
`maxlength="<?php echo $_G['setting']['maxsubjectsize'] ?: 255;?>"`

四、可能出现的异常处理:
1. 编码转换问题:
当数据库包含现有GBK编码数据时,需先执行转码操作:
`ALTER TABLE pre_forum_thread CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;`

2. 索引重建建议:
执行完字段长度修改后,建议重建索引:
`ALTER TABLE pre_forum_thread ENGINE=InnoDB;`

五、补丁应用建议:
1. 文件修改建议通过diff补丁方式实现,可使用:
diff -Naur source/old/ source/new/ > subject.patch

2. 为防止升级覆盖,建议在插件机制中注册修改:
在插件目录的discuz_plugin_xxx.xml中注册HOOK点:
<item id="hookForumPost">
    <file>hook.class.php</file>
    <class>hook_xxx</class>
    <method>forumPostSubjectCheck</method>
</item>

该方案已充分考虑数据库兼容性、配置灵活性和系统扩展性,建议在测试环境验证后上线。如需完整补丁文件,建议通过技术社区交流获取可靠来源的diff文件。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-18 10:12:21

为了优化DZ X3.5版本,支持社区、门户、日志标题长度自定义,放宽标题最长80个字节的限制到255字符,您可以按照以下步骤进行操作:

### 第一步:数据库升级
1. 登录到您的Discuz后台。
2. 导航到“站长” -> “数据库” -> “升级”。
3. 在升级框中输入以下SQL语句,然后点击“提交”:

ALTER TABLE `pre_forum_collection` CHANGE `lastsubject` `lastsubject` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '';
ALTER TABLE `pre_forum_forumrecommend` CHANGE `subject` `subject` CHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;
ALTER TABLE `pre_forum_post` CHANGE `subject` `subject` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;
ALTER TABLE `pre_forum_rsscache` CHANGE `subject` `subject` CHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;
ALTER TABLE `pre_forum_thread` CHANGE `subject` `subject` CHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;
ALTER TABLE `pre_home_blog` CHANGE `subject` `subject` CHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '';
ALTER TABLE `pre_portal_rsscache` CHANGE `subject` `subject` CHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '';
INSERT INTO pre_common_setting VALUES ('maxsubjectsize','80');
INSERT INTO pre_common_setting VALUES ('minsubjectsize','1');

### 第二步:覆盖单独补丁
1. 下载适用于X3.5最新版的单独补丁文件。
2. 将补丁文件上传到您的Discuz根目录,覆盖原有文件。
3. 确保文件权限正确,通常设置为644。

### 注意事项
- 在执行数据库升级之前,请务必备份您的数据库,以防止数据丢失。
- 确保您的Discuz版本是最新的X3.5版本,否则补丁可能无法正常工作。
- 如果您在操作过程中遇到任何问题,可以访问DZ插件网(https://www.dz-x.net/)获取更多帮助和支持。

通过以上步骤,您应该能够成功优化DZ X3.5,支持社区、门户、日志标题长度自定义,放宽标题最长80个字节的限制到255字符。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: DZ X3.5优化支持社区门户日志标题长度支持255字符单独补丁