分类图标设置插件修改方法
使用效果看本站(要配合修改的插件,不是改代码就行的)

修改前(每个模板不一样修改也不一样
/**
* 侧边栏:分类列表
*/
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>';
}
?>
版权所有:鲜易达电子商务有限公司
文章标题:分类图标设置插件修改方法
文章链接:https://xianyida.ysxdo.com/post-30.html
本站文章均为原创,未经授权请勿用于任何商业用途
文章标题:分类图标设置插件修改方法
文章链接:https://xianyida.ysxdo.com/post-30.html
本站文章均为原创,未经授权请勿用于任何商业用途
撰写评论