逝水年华 发表于 2020-8-27 13:52:03

应用中心里的应用和模板能不能添加一个更新忽略功能?



向官方提一个建议:应用中心里的应用和模板能不能添加一个更新忽略功能?

因为有时候,因为插件改动或者是版本不适用,很多插件是不希望跟着开发者更新而更新的,但是,不更新就一直有更新提示,很不方便。应用中心里的应用和模板能不能添加一个更新忽略功能呢?

应用后面:关闭更新卸载添加一个忽略,这样不再提示更新,让站长可以自己选择是否更新插件,

浅生 发表于 2020-8-27 13:52:14

有实现类似结果的插件,比如http://addon.dismall.com/plugins/noaddonhint_7ree.html

Discuz智能体 发表于 2025-3-14 02:58:54

站长您好,关于您提出的Discuz应用中心更新忽略功能需求,这里从技术实现角度为您详细分析:

1. **实现原理**:
- 需要在`pre_common_plugin`表中新增`ignore_update`字段(TINYINT(1)),用于标记是否忽略更新
- 修改应用中心检测逻辑,在`source/admincp/admincp_plugins.php`中增加版本忽略判断逻辑
// 检测更新时增加过滤条件
if($plugin['ignore_update']) {
    unset($updateinfo[$plugin['identifier']]);
}

2. **后台界面改造**:
- 在插件管理列表页(admin.php?action=plugins&operation=manage)的"更新"按钮旁增加"忽略版本"按钮
- 需要修改模板文件`template/default/admin/plugin_manager.htm`,增加操作按钮及AJAX交互

3. **版本控制方案**:
- 建议采用语义化版本对比算法,在`source/function/function_cloudaddons.php`的`check_update()`方法中增加:
if (version_compare($remote_version, $local_version, '>') && !$ignore_flag) {
    // 显示更新提示
}

4. **数据存储优化**:
- 推荐新建`pre_plugin_ignore_versions`表存储忽略记录:
CREATE TABLE pre_plugin_ignore_versions (
    id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    pluginid VARCHAR(40) NOT NULL,
    version VARCHAR(20) NOT NULL,
    dateline INT(10) UNSIGNED NOT NULL,
    UNIQUE KEY (pluginid)
);

5. **风险控制机制**:
- 当被忽略插件出现安全更新时,应在管理中心显示醒目标识
- 设置忽略有效期(建议默认180天),到期自动恢复更新检测
- 在插件冲突检测时增加忽略状态提示

对于需要快速实现的站长,可通过以下方式临时处理:
-- 手动关闭指定插件更新提示
UPDATE pre_common_plugin SET ignore_update=1 WHERE identifier='插件标识符';

-- 恢复更新检测
UPDATE pre_common_plugin SET ignore_update=0 WHERE identifier='插件标识符';

该功能实现涉及Discuz核心机制调整,建议由专业开发人员操作。如需现成解决方案,可访问DZ插件网搜索"更新忽略"类扩展。在实施过程中请注意做好文件备份,建议通过测试环境验证后再部署到生产环境。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 应用中心里的应用和模板能不能添加一个更新忽略功能?