主题系列教程 ① - Typecho 主题的文件结构
前言
关于 《 面向小白的 Typecho 主题制作教程 》 这个系列
- 很多独立博客的小白,在折腾完虚拟主机、VPS 甚至独服之后,下一步就是尝试制作主题
- 打算从小白的视角写一个系列,从最基础的部分讲起,逐步拆解制作一个主题的各种方法和技巧
- 阅读本系列的前提是,你已经具备了基础 Html + CSS + PHP 知识,至于 JavaScript,并不是必须的
- 由于是业余时间更新,难免会有错误和疏漏,如有发现,欢迎指出和帮助修正,感激不尽
- 请勿随意转载
这是系列的第一篇:《 Typecho 主题的文件结构 》
文件结构
以默认主题为例
TYPECHO 安装目录
├─admin
├─install
├─usr
│ ├─plugins
│ ├─themes
│ │ ├─default // 主题文件夹
│ │ │ ├─img // 资源文件的文件夹,默认主题放的是搜索按钮的两张图片
│ │ │ │ ├─icon-search.png
│ │ │ │ └─icon-search@2x.png
│ │ │ ├─404.php // 404 页面
│ │ │ ├─archive.php // 存档页面,包括分类页、搜索页、作者页、标签页等
│ │ │ ├─comments.php // 评论部分
│ │ │ ├─footer.php // 页脚部分
│ │ │ ├─functions.php // 各种函数都放在这个文件里,可以在主题的任何地方调用
│ │ │ ├─header.php // 页头部分
│ │ │ ├─index.php // 主页
│ │ │ ├─page.php // 独立页面,对应 后台 -> 管理 -> 独立页面 创建的页面
│ │ │ ├─post.php // 文章详情页,对应 后台 -> 管理 -> 文章 创建的页面
│ │ │ ├─sidebar.php // 侧栏目部分
│ │ │ ├─style.css // 样式表 1
│ │ │ ├─grid.css // 样式表 2
│ │ │ └─screenshot.png // 主题截图
│ └─uploads
├─var
├─config.inc.php
├─index.php
├─install.php
└─LICENSE.txt
几个特殊的文件
index.php
这个文件中包含了主题的一些基础信息
/**
* 这是 Typecho 0.9 系统的一套默认皮肤
*
* @package Typecho Replica Theme
* @author Typecho Team
* @version 1.2
* @link http://typecho.org
*/
这些信息会自动显示到 “控制台 -> 外观”
screenshot.png
主题截图,用于显示在 “控制台 -> 外观”
- 只要名称设置为 screenshot,就会自动显示在上图的位置
functions.php
这个文件不是主题所必须的,如果你有一些希望在其他主题文件内调用的工具函数,可以写在这里
- 例如:《 无需插件,使用阿里云 OSS 托管 Typecho 图片 》 这篇文章中的图片替换功能
默认主题的 functions.php 就定义了一些主题的设置项,这些后面的章节会讲到
function themeConfig($form) {
$logoUrl = new Typecho_Widget_Helper_Form_Element_Text('logoUrl', NULL, NULL, _t('站点 LOGO 地址'), _t('在这里填入一个图片 URL 地址, 以在网站标题前加上一个 LOGO'));
$form->addInput($logoUrl);
$sidebarBlock = new Typecho_Widget_Helper_Form_Element_Checkbox('sidebarBlock',
array('ShowRecentPosts' => _t('显示最新文章'),
'ShowRecentComments' => _t('显示最近回复'),
'ShowCategory' => _t('显示分类'),
'ShowArchive' => _t('显示归档'),
'ShowOther' => _t('显示其它杂项')),
array('ShowRecentPosts', 'ShowRecentComments', 'ShowCategory', 'ShowArchive', 'ShowOther'), _t('侧边栏显示'));
$form->addInput($sidebarBlock->multiMode());
}
header.php
这个文件包含了网页头部的一些信息,后面会有一篇文章单独讲解
没有提到的文件
在默认主题中,分类页面、Tag 页面、搜索页面、作者页面都是由 archive.php 定义的,如果你想要单独定义其中某种类型的页面,也可以为其创建单独的文件
例如,当 search.php 存在的时候,搜索页面就会由 search.php 定义,而不是 archive.php
- 其他存档类页面还是由 archive.php 定义
- 可以参见本站的搜索页面教程 《 为 Typecho 增加独立的搜索页面 》
其他常见问题
Typecho 主题的使用方法
- 将主题文件夹上传到 {Typecho 安装目录}/usr/themes/
- 在 Typecho 管理后台 -> 控制台 -> 外观 即可查看和启用相应的主题
- 如果你没有主动修改后台的路由,地址应该是 https://{站点地址}/admin/themes.php 或者 https://{站点地址}/index.php/admin/themes.php
为什么 “编辑当前外观” 页面提示 “此文件无法写入” ?
- 没有写入权限就会有这个提示
- 请检查当前这个文件的权限是否为 777