Typecho多级分类套娃获取

Ryan

2020-04-06/0 评论/44 浏览

需求

在分类页面下,显示当前分类的子分类带超链接的名字,点击名字,进入子分类页面后,继续显示子子分类带超链接的名字...,上午改主题的时候弄出来的需求。

原理

Typecho如果直接列出所有分类的话很简单

<?php $this->widget('Widget_Metas_Category_List')->listCategories('wrapClass=menu-children&itemClass=menu-item&linkClass=menu-link');?>

难点就在分类页面下直接获取当前分类的mid。
获得mid之后就可以根据mid列出子分类...

把下面的listSubCategories函数放到主题的functions.php就可以用了。

/**
 * 列出子分类
 *
 * @param mixed $category
 * @param mixed $categoryOptions
 * @return void
 */
public static function listSubCategories($category = null, $categoryOptions = null)
{
    if ($category === null) {
        return;
    }

    $widget = Typecho_Widget::widget('Widget_Metas_Category_List');
    $categoryOptions = Typecho_Config::factory($categoryOptions);
    $categoryOptions->setDefault(array(
        'wrapTag' => 'ul',
        'wrapClass' => '',
        'itemTag' => 'li',
        'itemClass' => '',
    ));
    $subCategories = $widget->getCategories($widget->getAllChildren($category));
    if (count($subCategories)) {
        echo "<" . $categoryOptions->wrapTag . (!empty($categoryOptions->wrapClass) ? ' class="' . $categoryOptions->wrapClass . '"' : '') . ">";
        foreach ($subCategories as $subCategory) {
            if ($subCategory['parent'] === $category) { // 不继续寻找子子分类
                echo "<" . $categoryOptions->itemTag . (!empty($categoryOptions->itemClass) ? ' class="' . $categoryOptions->itemClass . '"' : '') . '><a href=' . $subCategory['permalink'] . '>' . $subCategory['name'] . '</a></' . $categoryOptions->itemTag . '>';
            }

        }
        echo "</" . $categoryOptions->wrapTag . ">";
    }
}

使用方式很简单,在archive.php需要列出子分类链接的地方加入以下代码

<?php if($this->is('category')) { listSubCategories($this->_pageRow['mid'], 'wrapClass=no-dots'); }?>

其中$this->_pageRow['mid']就是获取当前分类 MID。

限时免费
文章出自:虾米皮皮乐工作室 https://xiamp.net/archives/27.html,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。
0 评论
44 浏览

发表评论

虾米皮皮乐工作室

Ryan

版权申明:收费资源由本站发布,用户购买后只有终端使用权,禁止转售和转载

暂无附件
Typecho多级分类套娃获取
04/06
2020
需求在分类页面下,显示当前分类的子分类带超链接的名字,点击名字,进入子分类页面后,继续显示子子...
扫描右侧二维码阅读全文