typecho导航修改的一些问题

当前分类的mid

这个相当不好理解
$this->_pageRow['mid']

不同分类不同模板

也是因为这个才找到了上面那个的解决办法

<?php if (in_array($this->_pageRow['mid'],array(1,8,11,15,16,17,21))) : echo 'caonima';endif; ?>

只显示当前分类的子分类

用于大分类内容的子分类显示,这个就更难了
参考:https://xiamp.net/archives/27.html
把下面的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'); }?>

而我测试之后呢,只能显示当前分类的子分类,更下级的分类就不显示了。所以还需要改。
所以就改了文件\var\Widget\Metas\Category\list.php 420行往后

    /**
     * 获取多个分类 
     * 
     * @param mixed $mids 
     * @access public
     * @return array
     */
    public function getCategories($mids)
    {
        $result = array();

        if (!empty($mids)) {
            foreach ($mids as $mid) {
                if (!$this->parameter->ignore
                    || ($this->parameter->ignore != $mid
                    && !$this->hasParent($mid, $this->parameter->ignore))) {
                    $result[] = $this->_map[$mid];
                }
            }
        }

        return $result;
    }

修改为:

    /**
     * 获取多个分类
     *
     * @param mixed $mids
     * @access public
     * @return array
     */
    public function getCategories($mids)
    {
        $result = array();
        $this->parameter->setDefault('view=0');
        $view = $this->parameter->view;
        if (!empty($mids)) {
            foreach ($mids as $mid) {
                if($view) {
                    if ($view == $mid || $this->hasParent($mid, $this->parameter->view)) {
                        $result[] = $this->_map[$mid];
                    }
                } else{
                    if (!$this->parameter->ignore
                        || ($this->parameter->ignore != $mid
                        && !$this->hasParent($mid, $this->parameter->ignore))) {
                        $result[] = $this->_map[$mid];
                    }
                }
            }
        }
        return $result;
    }

调用方法

<?php $this->widget('Widget_Metas_Category_List@options','view=1')->listCategories('wrapClass=topnav'); ?>

先记录备份备用,不一定用的上,还是jquery更强大。

完整安装classic主题及插件流程

本主题已在淘宝出售,欢迎支援:https://item.taobao.com/item.htm?id=631867287282

0.jpg

本文仅限全新安装typecho程序测试全通通过无错。如果不是全新安装,注意关注插件的兼容性,本主题已集成插件:阅读数、点赞这两个流行插件,其他小功能为不常见功能。安装前可禁用这两个插件。

主题安装

上传主题压缩包并解压在主题文件夹usr/themes/内,文件夹名称不要修改。后台启用主题即可。
主题配置说明:

  • 静态文件地址:如果设置了cdn,填入cdn地址,不然不需要修改。
  • 侧边栏推荐文章:填入推荐文章的id,英文逗号隔开。
  • 首页文章顶部通知:随便填写,支持html。
    示例:

    <div class="noticetips"><span class="btn noticeclose" title="关闭2小时">&times;</span>通知内容</div>
  • 侧边栏广告一:随便填写,支持html。

插件安装

按需选择插件安装即可。提供4个插件

  • avatarUpload.tar.gz,提供头像上传,上传了头像的则自动使用,没有上传的用gravatar头像。需手动在usr/uploads/内建立文件夹avatar
  • Cos.tar.gz,附件上传至腾讯cos云存储,可设置在本地保存一份。
  • Mail.tar.gz,邮件系统,整合了commenttomail插件和注册验证插件,如果开启,请禁用这两个插件,防止冲突。
  • Marked.tar.gz,markdown解析插件,前台解析,后台预览解析,如果安装了其他编辑器,注意兼容性测试。

后台主题安装

解压压缩包至根目录,文件夹名称可修改,同步修改根目录配置文件config.inc.php内的后台地址:define('__TYPECHO_ADMIN_DIR__', '/admin/');

兼容性检测

全部启用后,检测兼容性。全新安装的typecho测试通过无问题。如果有其他未知问题请联系我admin@gaobukai.com

主题预览

- 阅读剩余部分 -

扫一扫,访问移动端

高凯的个人主页
I am alone on my life's Journey up to now, and the future.

推荐 / Digest

热点 / Hot

评论 / Comments

  • Gaobukai: <img class="profile-avat...
  • nico: 头像改为以下函数,还是不起作用。src="<?php av...
  • nico: 现在主题是用下面代码实现src="<?php tx($ne...
  • nico: 博主,我想请教一下。在主题里面怎么调用上传头像。后天正常显示是上...
  • Gaobukai: 这个点赞的按钮为什么总报错呢?
  • Gaobukai: 既然能调用0号图片就能调用随机图片<?php rand(0...

标签 / Tags

推广 / Ads