【修复】侧边栏全局置顶文章数量不遵循插件配置

1. 基本信息

信息项详情
文件名称sidebar-left.php
文件路径/usr/themes/default/sidebar-left.php
修改描述修复BUG
最后更新2026-05-02

2. 修改说明(简述)

修复了首页左侧栏全局置顶文章数量不遵循插件配置的问题。原代码仅通过单一方式读取配置,当配置读取失败时始终使用默认值5篇。修改后增加了双重读取机制,确保正确获取插件设置的置顶数量。

3. 修改详情(核心内容)

修改点 1:全局置顶数量配置读取逻辑(第 7-35 行)

修改前代码

$categoryStickyConfig = $options->plugin('CategorySticky');

if ($categoryStickyConfig && property_exists($categoryStickyConfig, 'global_sticky_count')) {
    $configValue = intval($categoryStickyConfig->global_sticky_count);
    if ($configValue > 0) {
        $globalStickyCount = $configValue;
    }
}

修改后代码

// 方法1:尝试从Widget_Options获取插件配置
$categoryStickyConfig = $options->plugin('CategorySticky');
if ($categoryStickyConfig && isset($categoryStickyConfig->global_sticky_count)) {
    $configValue = intval($categoryStickyConfig->global_sticky_count);
    if ($configValue > 0) {
        $globalStickyCount = $configValue;
    }
}

// 方法2:如果方法1失败,直接从数据库读取配置
if ($globalStickyCount == 5) {
    $pluginConfig = $db->fetchRow($db->select('value')
        ->from('table.options')
        ->where('name = ?', 'plugin:CategorySticky'));
    
    if ($pluginConfig) {
        $configData = Typecho_Common::jsonDecode($pluginConfig['value'], true);
        if (isset($configData['global_sticky_count']) && intval($configData['global_sticky_count']) > 0) {
            $globalStickyCount = intval($configData['global_sticky_count']);
        }
    }
}

修改作用:增加了配置读取的双重保障机制。当标准插件配置接口无法获取配置时,自动降级到直接从数据库读取,确保侧边栏置顶文章数量始终遵循插件后台设置。

4. 影响范围

  • 影响模块:首页左侧栏(sidebar-left.php)的全局置顶文章列表展示
  • 配置更新:无需额外配置,修改后自动读取现有插件配置
  • 数据库:仅增加了一条查询,无数据变更

5. 测试建议

  1. 在插件后台设置「全局置顶数量」为20篇
  2. 访问首页查看左侧栏置顶文章列表
  3. 确认显示数量与插件配置一致(如设置20则显示20篇,若数据库中置顶文章不足则显示实际数量)

标签: none

暂无评论