搜索结果

×

搜索结果将在这里显示。

搜索

请输入关键词进行搜索

分类图标设置插件修改方法

使用效果看本站(要配合修改的插件,不是改代码就行的)

修改前(每个模板不一样修改也不一样

/**
 * 侧边栏:分类列表
 */
function widget_side($currentArticleId = 0, $currentCategoryId = 0)
{
    $pageurl = Url::logPage();
    $output = '';

    if ($pageurl == Url::logPage()) {
        $db = Database::getInstance();
        $sortlist = $db->query("SELECT DISTINCT a.sid,a.sortname,a.taxis FROM " . DB_PREFIX . "sort as a INNER JOIN  " . DB_PREFIX . "blog as b on a.sid=b.sortid  ORDER BY a.taxis asc");
        $expand_sorts = _g('sidebar_expand_sorts');
        foreach ($sortlist as $sort) {
            if ($expand_sorts && in_array($sort['sid'], $expand_sorts)) {
                $isCollapsed = '';
            } else {
                $isCollapsed = ' menu__list-item--collapsed';
            }
$output .= "<li class='theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item" . $isCollapsed . "'><div class='menu__list-item-collapsible'><a class='menu__link menu__link--sublist' role='button'><strong>" . $sort['sortname'] . "</strong></a></div>";
            $output .= "<ul class='menu__list'>";

            $logss = $db->query("SELECT * FROM " . DB_PREFIX . "blog WHERE sortid={$sort['sid']} AND type='blog' AND hide='n' order by sortop desc, date desc");
foreach ($logss as $log) {
    $output .= "<li class='theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item'>";
    $output .= "<a class='menu__link'  tabindex='0'  href='" . Url::log($log['gid']) . "' style='" . toEver_titleColor_view($log['gid']) . "'>";
    $output .= TitleIco();
    $output .= $log['title'];
    $output .= "</a></li>";
}
            $output .= "</ul>";
            $output .= "</li>";
        }
    }

    return $output;
}

修改后的代码

/**
 * 侧边栏:分类列表(带图标,适配fenleiicon插件)
 */
function widget_side($currentArticleId = 0, $currentCategoryId = 0)
{
    $pageurl = Url::logPage();
    $output = '';

    if ($pageurl == Url::logPage()) {
        $db = Database::getInstance();
        // 1. 获取分类列表
        $sortlist = $db->query("SELECT DISTINCT a.sid,a.sortname,a.taxis FROM " . DB_PREFIX . "sort as a INNER JOIN  " . DB_PREFIX . "blog as b on a.sid=b.sortid  ORDER BY a.taxis asc");
        $expand_sorts = _g('sidebar_expand_sorts');

        // 2. 读取fenleiicon插件的图标数据(核心:确保与插件存储逻辑完全一致)
        // 存储实例键名:必须是插件保存时用的"fenleiicon"
        $plugin_storage = Storage::getInstance('fenleiicon');
        // 字段名:插件保存图标时的字段(通常是"category_icons",需与插件设置页保存逻辑一致)
        $category_icons = $plugin_storage->getValue('category_icons');

        // 调试1:输出插件存储的所有图标数据(用于确认是否有数据)
        $output .= "<!-- 调试:插件存储的所有图标数据 = " . print_r($category_icons, true) . " -->";

        // 初始化空数组(防止未获取到数据时报错)
        if (!is_array($category_icons)) {
            $category_icons = [];
            $output .= "<!-- 调试:未获取到图标数据,已初始化为空数组 -->";
        }

        foreach ($sortlist as $sort) {
            $cid = $sort['sid']; // 当前分类ID
            $cname = $sort['sortname']; // 当前分类名

            // 3. 匹配当前分类的图标(用分类ID关联)
            $icon_value = $category_icons[$cid] ?? '';

            // 调试2:输出当前分类的ID和匹配到的图标值
            $output .= "<!-- 调试:分类ID={$cid},分类名={$cname},图标值={$icon_value} -->";

            // 4. 生成图标HTML(区分图片URL和FontAwesome类名)
            $icon_html = '';
            if (!empty($icon_value)) {
                // 检测是否为图片URL(匹配常见图片扩展名)
                if (preg_match('/\.(jpg|jpeg|png|gif|svg|webp)$/i', $icon_value)) {
                    // 图片图标:拼接img标签(添加错误处理,方便排查无效图片)
                    $icon_html = "<img src='" . htmlspecialchars($icon_value) . "' " .
                                 "style='height:18px;width:18px;margin-right:8px;vertical-align:middle;' " .
                                 "alt='{$cname}的图标' " .
                                 "onerror=\"this.src='https://picsum.photos/18/18';this.title='图片加载失败'\">";
                } else {
                    // FontAwesome图标:拼接i标签(添加基础样式)
                    $icon_html = "<i class='" . htmlspecialchars($icon_value) . "' " .
                                 "style='font-size:18px;margin-right:8px;vertical-align:middle;' " .
                                 "alt='{$cname}的图标'></i>";
                }
                $output .= "<!-- 调试:分类ID={$cid},生成的图标HTML={$icon_html} -->";
            } else {
                $output .= "<!-- 调试:分类ID={$cid},未设置图标或图标值为空 -->";
            }

            // 5. 输出分类列表HTML(包含图标)
            $isCollapsed = $expand_sorts && in_array($cid, $expand_sorts) ? '' : ' menu__list-item--collapsed';

            $output .= "<li class='theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item{$isCollapsed}'>";
            $output .= "<div class='menu__list-item-collapsible'>";
            $output .= "<a class='menu__link menu__link--sublist' role='button'>";
            $output .= $icon_html; // 插入图标
            $output .= "<strong>" . $cname . "</strong>";
            $output .= "</a></div>";

            $output .= "<ul class='menu__list'>";
            $logss = $db->query("SELECT * FROM " . DB_PREFIX . "blog WHERE sortid={$cid} AND type='blog' AND hide='n' order by sortop desc, date desc");
            foreach ($logss as $log) {
                $output .= "<li class='theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item'>";
                $output .= "<a class='menu__link' tabindex='0' href='" . Url::log($log['gid']) . "' style='" . toEver_titleColor_view($log['gid']) . "'>";
                $output .= TitleIco();
                $output .= $log['title'];
                $output .= "</a></li>";
            }
            $output .= "</ul></li>";
        }
    }

    return $output;
}

其他修改方案:

模板调用方法
在模板文件中(如 模板下任意php 或其他需要显示分类的地方),使用以下代码调用带图标的分类:
直接输出分类列表(带图标):
<?php echo fenleiiconget_categories_with_icon(); ?>
自定义图标前后的内容:
<?php echo fenleiicon_get_categories_with_icon(false, '<span class="icon-wrapper">', '</span>'); ?>
获取分类数组,自行处理显示:
<?php 
$categories = fenlei_get_categories_with_icon(true);
foreach ($categories as $category) {
    echo '<a href="' . Url::sort($category['sid']) . '">';
    echo $category['icon_html'];
    echo $category['sortname'];
    echo '</a>';
}
?>

<?php
// 1. 直接输出带图标的分类列表
echo fenleiicon_get_categories_with_icon();

// 2. 自定义图标前后的HTML
echo fenleiicon_get_categories_with_icon(false, '<span class="icon-bg">', '</span>');

// 3. 获取分类数组自行处理
$categories = fenleiicon_get_categories_with_icon(true);
foreach ($categories as $cate) {
    echo '<a href="' . Url::sort($cate['sid']) . '">';
    echo $cate['icon_html']; // 图标HTML
    echo $cate['sortname']; // 分类名
    echo '</a>';
}
?>