网站建设

让知更鸟主题的分类图标支持二级分类

Jager · 4月13日 · 2014年 · 779次已读

今天,突然想启用知更鸟主题的分类图标功能,之前是怕影响速度,现在开了静态缓存,安心了一点。

参照鸟哥的方法在主题选项里面开启后,发现图片的超链接打不开!检查后发现路径不对,比如玛思阁的 Batch 分类的地址应该是 https://zhang.ge/script/batch,而分类图标链接却是 https://zhang.ge/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 再获取父级别名。在测试时发现,多级分类图标链接已经修复了,可是。。。。如果是只有一个分类,即父级菜单为空的情况,得到的链接就会多了一个斜杠:/!,比如 https://zhang.ge//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 文件,替换成上方的全部代码,保存即可!好了,玛思阁又折腾了一把!

特别说明:以上方法仅适合最多二级分类,要是存在三级分类,请自己参考代码依葫芦画瓢再加上一层路径输出即可!俺就懒得写了~应该很少人蛋疼菊紧的弄个三级分类吧?

16 条回应
  1. 植物租赁 2014-4-13 · 15:50

    拎回去,试一下

    • avatar
      Jager 2014-4-13 · 16:08

      .....只有知更鸟主题适用

  2. 刘海江 2014-4-13 · 18:59

    乖乖龙帝龙。。。又是一个爱折腾的。。。

    • avatar
      Jager 2014-4-13 · 19:08

      做程序猿、攻城狮的估计都喜欢折腾。。。

  3. maillot radioshack 2014-4-14 · 9:20

    唔,对这方面一窍不通,只能支持一下啦。

    • avatar
      Jager 2014-4-14 · 17:21

      多谢捧场~

  4. 临沭人 2014-4-14 · 17:11

    多谢分享,学习博主的经验了。

    • avatar
      Jager 2014-4-14 · 17:24

      [握手]

  5. 勇敢de小细菌|ixchen.com 2014-4-14 · 23:39

    [闭嘴] 完善这些和修改这些功能,真是个力气活。

  6. 教师日记 2014-4-15 · 12:52

    说实在的,知更鸟的这个主题很不错呢。

    • avatar
      Jager 2014-4-15 · 21:38

      嗯,确实很强大。

  7. 小行 2014-4-16 · 16:58

    你的图片显示用的什么插件啊~挺不错的

    • avatar
      Jager 2014-4-16 · 17:09

      图片显示?你说的是暗窗弹出效果么?是知更鸟自带的。

      • 小行 2014-4-16 · 22:41

        啊。。自带的?= =我的好像没有哎 [衰]

        • avatar
          Jager 2014-4-17 · 1:43

          可能你用的不是最新的吧~

  8. 顶固衣柜 2014-11-29 · 13:08

    不错嘛,太给力了