让知更鸟主题的分类图标支持二级分类
今天,突然想启用知更鸟主题的分类图标功能,之前是怕影响速度,现在开了静态缓存,安心了一点。
参照鸟哥的方法在主题选项里面开启后,发现图片的超链接打不开!检查后发现路径不对,比如玛思阁的 Batch 分类的地址应该是 http://zhangge.net/script/batch,而分类图标链接却是 http://zhangge.net/batch(Ps:本来路径中默认会有个 category 的,玛思阁用插件屏蔽了)。这样出来的链接的目的地就变成 404 了。。。看来,知更鸟主题的分类图标默认不支持 2 级分类呢!如图:
玛思戈只好硬着头皮自己修改,作为一个 PHP 外行,只能一边搜索资料,一边测试效果,折腾了半天才搞定!现在分享出来,希望能帮到比我还菜的使用知更鸟主题的博主(嘿嘿!)。
先记录下 Debug 过程:
按照 Debug 经验,出现问题,先看源码!于是,先打开了文章模板 single.php 看了下调用分类图标的相应代码,发现调用的是主题目录下的 includes/cat_ico.php 文件。进而发现源码如下:
<div class="cat_ico">
<a href="<?php bloginfo('url'); ?>/category/<?php $catArray = get_the_category();
$cat=$catArray[array_rand($catArray,1)];
echo $cat->category_nicename;?>" title="<?php echo $cat->cat_name;?>">
<img src="<?php bloginfo('template_url');?>/images/caticon/<?php echo $cat->category_nicename; ?>.gif" alt="<?php echo $cat->cat_name;?>"/>
</a>
</div>
由于玛思阁已经用插件屏蔽了分类前缀 category,所以不管三七二十一,先删除第二句中的“category/”(未屏蔽分类前缀路径的博友就不要这样做了!),然后开始想办法让这段代码支持二级分类图标调用。
保存后看了下结果,很容易就看出,这段代码只能获取当前文章的分类,而不能获取父级分类,也就是说,如果你这篇文章是属于二级分类,那么输出的图标链接就会少了一级分类路径,自然就是个死链了!就和本文开篇的举例一样。
看来,只要修改代码,输出父级分类别名不就可以了吗?通过搜索 get_category 函数资料,知道了如何获取父级 ID,然后通过这个父级 ID 再获取父级别名。在测试时发现,多级分类图标链接已经修复了,可是。。。。如果是只有一个分类,即父级菜单为空的情况,得到的链接就会多了一个斜杠:/!,比如 http://zhangge.net//website:就有 2 个斜杠了,虽然可以访问,但是博主有严重的强迫症。。。。好吧,继续折腾。。。
最终,在加入一个 if 判断后完美搞定!不啰唆了,上代码:
<div class="cat_ico">
<a href="<?php bloginfo('url'); ?>/<?php $catArray = get_the_category();
$cat=$catArray[array_rand($catArray,1)];
$cat_parent = get_category($catArray[0]->category_parent);
if (!empty($cat_parent->slug)) {
echo $cat_parent->slug."/";
}
echo $cat->category_nicename;?>" title="<?php echo $cat->cat_name;?>">
<img src="<?php bloginfo('template_url');?>/images/caticon/<?php echo $cat->category_nicename; ?>.gif" alt="<?php echo $cat->cat_name;?>"/>
</a>
</div>
最后总结一下,让知更鸟主题的分类图标支持多级分类的修改方法是:
编辑主题目录下的 includes/cat_ico.php 文件,替换成上方的全部代码,保存即可!好了,玛思阁又折腾了一把!
特别说明:以上方法仅适合最多二级分类,要是存在三级分类,请自己参考代码依葫芦画瓢再加上一层路径输出即可!俺就懒得写了~应该很少人蛋疼菊紧的弄个三级分类吧?
- Hadoop3.0通用版集群安装高可靠详细教程
- Hadoop3.0集群安装知识
- 分布式消息队列 RocketMQ 源码分析 —— Message 顺序发送与消费
- 深入解析快速排序算法的原理及其Go语言版实现
- Hadoop3.0: YARN Resource配置说明
- GO语言利用K近邻算法实现小说鉴黄
- Why Spring Boot
- 如何使用HammerDB进行MySQL基准测试
- 一个不可思议的MySQL慢查分析与解决
- Apache Spark 2.2中基于成本的优化器(CBO)
- golang的HTTP基本认证机制实例详解
- hdu----(3065)病毒侵袭持续中(AC自动机)
- Spark机器学习库(MLlib)指南之简介及基础统计
- 监控利器之 Prometheus
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 常用SQL语句
- Java中的时间和日期(三):java8中新的时间API介绍
- Java中的时间和日期(四):与java8时间API有关的一些总结和补充
- Head First设计模式——策略模式
- 可重用性的6个级别
- 您可能不需要使用Vue 3的Vuex
- 谈一谈若干的K-V NoSQL应用:LevelDB、Redis、Tair、RockesDB
- 高通量数据中批次效应的鉴定和处理(六)- 直接校正表达矩阵
- Go viper 配置文件读取工具
- spring security默认访问权限判定源码
- Springboot+mybatis最简单的增删改查写法
- Head First设计模式——观察者模式
- spring security oauth2 资源服务/客户端无法正确获取权限
- EXTJS grid.column.renderer绑定失效
- Head First设计模式——装饰者模式