预计阅读时间: 3分钟

给页面添加父级分类有利于将页面清晰地分类,同时也便于在前台将同一类型的页面展现在同一个分类(父页面)下。但是typecho并没有给页面设置父页面的功能,但自己添加也很方便。

首页需要创建一个读取页面的函数供后台调用,打开/var/Widget/Base/Contents.php,将下方代码复制进去。

/**
     * 获取已经发布的页面
     *
     * @return array
     */
     
    public function getPages(): array
    {
        $pages = $this->db->fetchAll($this->db
            ->select()->from('table.contents')
            ->where('table.contents.type = ? AND table.contents.status = ? ', 'page', 'publish')
            ->order('table.contents.order',"desc"));
            
        return $pages;
    }

然后打开后台编辑页面的文件(/admin/write-page.php),将下方代码复制到右边侧栏。

<section class="typecho-post-option">
                        &lt;label for=&quot;parent&quot; class=&quot;typecho-label&quot;&gt;&lt;?php _e(&#039;父级分类&#039;); ?&gt;&lt;/label&gt;
                        &lt;p&gt;
                        &lt;?php
                         $parents = $page-&gt;getPages();
                        ?&gt;
                            &lt;select name=&quot;parent&quot; id=&quot;parent&quot;&gt;
                                &lt;option value=&quot;&quot;&gt;&lt;?php _e(&#039;不选择&#039;); ?&gt;&lt;/option&gt;
                                &lt;?php
                                
                                foreach ($parents as $parent): 
                                    $parent_id = $parent[&quot;cid&quot;];
                                    $parent_title = $parent[&quot;title&quot;];
                                    ?&gt;
                                    &lt;option value=&quot;&lt;?php echo $parent_id; ?&gt;&quot;&lt;?php if ($parent_id == $page-&gt;parent): ?&gt; selected=&quot;true&quot;&lt;?php endif; ?&gt;&gt;&lt;?php echo $parent_title; ?&gt;&lt;/option&gt;
                                &lt;?php endforeach; ?&gt;
                            &lt;/select&gt;
                        &lt;/p&gt;
                    &lt;/section&gt;

效果如图:
1.jpg

此时页面编辑侧边栏已经显示了页面,还需要最后一步,打开/var/Widget/Contents/Page/Edit.php,把parent字段加入到需要保存的字段里面去,如下图。
2.jpg

完成了这一步,页面的父级分类就可以保存到数据库中了。

标签: Typecho

添加新评论

*所有评论审核后方可显示,请自觉维护清朗的互联网环境,不要发布违法违规及攻击他人言论。