如何新建独立页面/单页模板
与一般的主题有些不同的地方是,在根目录下直接建立单页模板是无法达到目的的。由此,我们要摸索一下主题结构:
主题结构
在主题根目录下可以看到,无论是A_、B_前缀的模板文件或者post.php、page.php,内容基本都是<?php $this->need('Z_page.php'); ?>
。因此我们如果想修改单页模板,是不能直接在根目录的文件入手的。
观察z-page.php后可以发现,出现了许多<?php $this->need('parts/head.php'); ?>
等位于parts目录下的文件。在parts目录下我们可以看到很多熟悉的head.php等等啦,然后在article.php中可以发现如下的类似段落:
<?php if($this->template == 'A_page_links.php'): ?>
<?php $this->need('parts/article/links.php'); ?>
<?php elseif($this->template == 'A_page_about.php'): ?>
<?php $this->need('parts/article/about.php'); ?>
<?php elseif($this->template == 'A_page_welove.php'): ?>
<?php $this->need('parts/article/welove.php'); ?>
<?php elseif($this->template == 'A_page_map.php'): ?>
<?php $this->need('parts/article/map.php'); ?>
由此可以得知,假如我们想要添加自定义模板来增加独立页面,是不能直接在根目录下完成的,而是要在根目录下need z_page之后,在这里的article.php
中手动添加,然后在此目录的的article文件夹下新建你的文件进行编写。
详细步骤
以添加独立页面系列为例。
1.在主题根目录中
新建用于在typecho后台选择的模板文件,我的叫C_page_series.php
,像其他模板一样引入Z_page.php
,内容如下:
<?php
/**
* 展示系列文章
*
* @package custom
* @author ChatGpt
* @version 1.0.0
*/
if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php $this->need('Z_page.php'); ?>
?>
2.在主题根目录/parts/articles.php中
找到这一段:
php 代码: <?php if($this->template == 'A_page_links.php'): ?>
<?php $this->need('parts/article/links.php'); ?>
......
......
<?php elseif($this->template == 'B_page_douban.php'): ?>
<?php $this->need('parts/article/douban.php'); ?>
为了整齐,可以在前缀为B_的页面结束后,添加我们的自定义模板文件:
php 代码: <?php elseif($this->template == 'C_page_series.php'): ?><!--系列series-->
<?php $this->need('parts/article/C_page_series.php'); ?>
其中第一行的C_page_series.php
要与你在主题根目录中填写的文件名一致。
3.在主题根目录/parts/article中
新建C_page_series.php
,文件名需要与你刚刚在article.php中填写的<?php $this->need('parts/article/C_page_series.php'); ?>保持一致。然后在此文件中填写你的正常模板内容即可~