登录 注册 VIP特权 提交收录
Search Engine Optimization,不撸代码不修BUG
主页 » 教程 » 正文

Typecho多级分类套娃层层获取

需求

在分类页面下,显示当前分类的子分类带超链接的名字,点击名字,进入子分类页面后,继续显示子子分类带超链接的名字...,需求就是三级分类,但实际上typecho貌似可以无限套娃,所以需要写个一劳永逸的方法。

原理

在分类页面下获取当前分类的身份证号(mid),然后根据身份证号(mid)找儿子...,但是typecho获取当前分类的身份证号(mid)有点问题,只能获取到文章用的分类的mid,所以改为获取缩略名,然后通过缩略名查到(mid),进而在通过mid找儿子

实操
functions.php中加入如下代码

class Widget_Post_cat extends Widget_Abstract_Metas
{
    public function __construct($request, $response, $params = NULL)
    {
        parent::__construct($request, $response, $params);
        $this->parameter->setDefault(array('pageSize' => $this->options->commentsListSize, 'parentId' => 0, 'ignoreAuthor' => false));
    }
    public function execute()
    {
$db= Typecho_Db::get();
$prefix = $db->getPrefix();
$po  = $this->select()->from($prefix.'metas')
->where('table.metas.slug = ?',$this->parameter->slug)
->where('table.metas.type = ?','category')
->order('table.metas.mid', Typecho_Db::SORT_DESC);
$po = $this->db->fetchRow($po);//根据缩略名找到该行
$select  = $this->select()->from($prefix.'metas')
->where('table.metas.parent = ?',$po['mid'])//从所有分类中找到爸爸是这个mid的
->where('table.metas.type = ?','category')
->order('table.metas.mid', Typecho_Db::SORT_DESC);
$this->db->fetchAll($select, array($this, 'push'));
    }
}

archive.php中加入如下代码

<div style="background: red;color: #fff;display: block;"><h2>分类列表</h2>
<?php if($this->is("category")): ?>
<?php 
$this->widget('Widget_Post_cat@cat', 'slug='.$this->getArchiveSlug())->to($cat); ?>
<?php while($cat->next()): ?><br>
<a href="<?php $cat->permalink() ?>"><?php $cat->name(); ?></a><br>
 <?php endwhile; ?>
<?php endif; ?>
</div>


标签: 多级分类
! 如链接失效请在下方留言。本站所发布的全部内容源于互联网搬运,仅限于小范围内传播学习和文献参考,请在下载后24小时内删除,如果有侵权之处请第一时间联系我们删除。敬请谅解! E-mail:49613651@qq.com
原创文章,作者:一宇A1xt,如若转载,请注明出处:https://www.a1xt.com/archives/389.html

相关推荐


猜你喜欢

Typecho评论回复按钮文字自定义

需求在分类页面下,显示当前分类的子分类带超链接的名字,点击名字,进入子分类页面后,继续显示子子分类带超链接的名字...,需求就是三级分...


上一篇
下一篇

发表评论