本想Typecho调用分类列表后,隐藏两个不需要的分类。网上找了一大堆教程,基本都是官方的方法。
- 修改主题
functions.php
文件的function themeConfig($form)
函数,增加一项配置信息:
$nolist = new Typecho_Widget_Helper_Form_Element_Text('nolist', NULL, NULL, _t('首页不显示某些特定分类'), _t('仅用在首页,首页不显示某些分类,可填入<b style="color: red;">mid</b>一个或多个数字,英文逗号分隔!!!'));
$form->addInput($nolist);
- 修改模板中的index.php文件,找到自己对应的分类循环处:
<?php $this->widget('Widget_Metas_Category_List')->parse('<li><a href="{permalink}">{name}</a> ({count})</li>'); ?>
- 如果要隐藏某个分类ID,则增加'ignore=1'条件:
<?php $this->widget('Widget_Metas_Category_List','ignore=1')->parse('<li><a href="{permalink}">{name}</a> ({count})</li>'); ?>
但是如果要多个隐藏呢???找死方法也找不到!!!不过,虽然我不会php,但是好歹也是会Java的,还是有相似性的。大不了不用官方方法,用php的if语句判断,如果是我配置的隐藏mid,遍历循环时,则不显示。
有了思路,就看怎么取mid的值了。参照index.php的写法。有一个获取分类名称的语句,如下:
♾️ text 代码:<?php while ($categories->next()): ?>
<a href="<?php $categories->permalink(); ?>"><?php $categories->name(); ?></a>
<?php endwhile;?>
意思就是循环变量分类时,输出分类名称和分类链接呗!既然能拿到分类名称,那也能拿到分类ID,那所以根据自己的“经验”分类ID就是$categories->mid();
然后,我把需要隐藏的多个id,配置在后台的外观设置处
再将配置值获取到,并用逗号分隔成数组
♾️ text 代码:$ignoreMidArr = explode(',', $this->options->nolist);
最后,代码用if + in_array语句判断是否隐藏
原始写法:
<?php $this->widget('Widget_Metas_Category_List@options','ignore='.$this->options->nolist.'')->to($categories);
?>
<?php while ($categories->next()): ?>
<a href="<?php $categories->permalink(); ?>"><?php $categories->name(); ?></a>
<?php endwhile; ?>
修改为:
♾️ text 代码:<?php
$this->widget('Widget_Metas_Category_List@options')->to($categories);
$ignoreMidArr = explode(',', $this->options->nolist);
?>
<?php while ($categories->next()): ?>
<?php if (!in_array($categories->mid(),$ignoreMidArr)): ?>
<a href="<?php $categories->permalink(); ?>"><?php $categories->name(); ?></a>
<?php endif; ?>
<?php endwhile; ?>
**看看成果。
这TMD什么玩意!!! 没道理啊??? 看来我php学艺不精!!!
╮(╯▽╰)╭ 无奈
继续研究。。。。。
继续研究。。。。。
继续研究。。。。。
继续研究。。。。。
长达N个小时后,我发现,mid获取,竟然不要括号!!!! 是$categories->mid
而不是$categories->mid()
SHIT!!!
重新修改为:
♾️ php 代码:<?php
$this->widget('Widget_Metas_Category_List@options')->to($categories);
$ignoreMidArr = explode(',', $this->options->nolist);
?>
<?php while ($categories->next()): ?>
<?php if (!in_array($categories->mid,$ignoreMidArr)): ?>
<a href="<?php $categories->permalink(); ?>"><?php $categories->name(); ?></a>
<?php endif; ?>
<?php endwhile; ?>
成功!!!!
百度搜出来唯一不同,但我还想更深一点,每个分类再抓最新一篇文章内容的一张相片。
👍
💖
💯
💦
😄
🪙
博主
Chrison @无无无也👍
💖
💯
💦
😄
🪙
👍
💖
💯
💦
😄
🪙