类似于wordpress ,Typecho的模板系统也遵循特定的优先级规则,当系统寻找模板文件时会按照以下顺序进行查找:
基础模板
模板路径:/usr/themes/你的主题/
模板文件命名规则:
文章模板:post.php
页面模板:page.php
分类模板:category.php
归档模板:archive.php
搜索模板:search.php
404模板:404.php
以下内容摘自deepseek,但测试下来,分类页即便添加后缀也无法被正确区分,其他尚未测试,待完善。
模板文件查找优先级
主题自定义模板 (最高优先级)
usr/themes/[主题名]/[模板文件]
例如:usr/themes/default/post.php
插件自定义模板
插件可以通过挂载点提供自定义模板
系统默认模板 (最低优先级)
var/Widget/[组件名]/[模板文件].php
例如:var/Widget/Archive/post.php
具体模板类型优先级
文章/页面模板
主题目录下的自定义模板(如 post-{cid}.php)
主题目录下的 post-{slug}.php
主题目录下的 post.php 或 page.php
系统默认模板
分类/标签模板
category-{slug}.php
category-{mid}.php
category.php
系统默认模板
虽然deepseek给出了这样一个规则,但博主用 1.2.1 版本测试后是无效的,最终只能自行添加判断,代码如下,供参考:
<div class="content">
<?php if ($this->category=='factory'): ?>
<?php $this->need('public/movies.php'); ?>
<?php else: ?>
<div class="module-no-head content-category">
<div class="content-category-img">
<?php $imageFound = false; ?>
<?php if ($this->options->AugCateImage): ?>
<?php $cateList = explode("\r\n", $this->options->AugCateImage); ?>
<?php $currentSlug = $this->category; ?>
<?php foreach ($cateList as $item): ?>
<?php $parts = explode('||', $item); ?>
<?php if (count($parts) >= 2 && trim($parts[0]) === $currentSlug): ?>
<?php $imageUrl = trim($parts[1]); ?>
<?php $imageFound = true; ?>
<img src="<?= AUG_IMAGE_URI . '/' .$imageUrl ?>" alt="categoryImage" />
<?php break; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
<?php if (!$imageFound): ?>
<img src="<?= AUG_IMAGE_URI . '/cate-default.jpg' ?>" alt="categoryImage" />
<?php endif; ?>
</div>
<h1 class="content-category-title"><?= $this->archiveTitle ?></h1>
<?php if ($this->description): ?>
<div class="content-category-description"><i class="fa fa-fw fa-quote-left" aria-hidden="true"></i><?= $this->description ?></div>
<?php endif ;?>
</div>
<?php endif ;?>
<?php $this->need('public/postlist.php'); ?>
</div>
归档模板
archive-{year}-{month}.php
archive-{year}.php
archive.php
系统默认模板
注意事项
模板文件后缀必须是 .php
模板文件名区分大小写
可以通过 $this->is('index'), $this->is('post')
等方法在模板中判断当前页面类型
主题开发者可以在 functions.php 中通过挂载点进一步自定义模板逻辑
了解这些优先级规则可以帮助你更好地组织和自定义 Typecho 的模板文件。