在 Typecho 主题中调用自定义字段,最推荐直接使用模板标签$this->fields->字段名,适用于已安装 Fields 插件或主题原生支持自定义字段的文章页面。修改主题文件前务必备份,避免主题更新导致代码丢失。
先说结论:Typecho 调用自定义字段依赖主题模板标签与后台字段数据的映射,无需复杂查询即可输出。
- 适合:需要为文章添加额外信息(如来源、版权、视频链接)的场景
- 先看:确认当前主题是否支持自定义字段或已启用官方 Fields 插件
- 建议:修改子主题或备份原文件,防止主题升级覆盖修改内容
命令速用版
此操作涉及代码编辑,无直接命令行,以下是快速处理思路:
<?php $this->fields->fieldName(); ?>将上述代码放入主题模板文件(如 post.php)需要显示的位置,fieldName 替换为实际字段名。
为什么会这样
Typecho 的自定义字段数据存储在文章 meta 表中,模板标签负责读取并序列化输出。
核心机制是 Typecho 在发布文章时允许写入额外的键值对,主题渲染时通过$this->fields对象访问这些数据。如果不使用插件或主题不支持,后台将无法录入字段,模板调用也会返回空值。
分步处理
1. 确认字段支持:进入后台撰写文章,查看是否有自定义字段输入框,若无需安装官方 Fields 插件。
2. 录入字段数据:在文章编辑页下方找到字段设置,输入字段名和对应值,保存文章。
3. 编辑主题模板:通过 FTP 或后台文件编辑,打开 post.php 或 index.php 文件。
4. 插入调用代码:在需要显示的位置插入<?php $this->fields->你的字段名(); ?>。
5. 保存并刷新:保存文件后刷新前台文章页,检查内容是否显示。
怎么验证是否生效
查看前台文章页面对应位置是否出现字段内容,若未显示,检查代码是否位于 PHP 循环内。
可临时在代码中加入<?php var_dump($this->fields); ?>查看字段对象是否包含数据,确认字段名拼写无误。
常见坑
1. 字段名为空:如果后台未填写字段值,前台调用可能显示空白,建议增加空值判断。
2. 主题更新覆盖:直接修改父主题文件会在更新时丢失,建议使用子主题或记录修改点。
3. 特殊字符转义:字段内容包含 HTML 标签时可能被过滤,需确认主题是否启用了安全过滤。
常见问题
如何安装自定义字段插件?
在后台插件面板启用官方 Fields 插件,无需额外下载,Typecho 自带该插件。
调用字段时显示空白怎么办?
检查文章是否已保存该字段值,并确认模板代码中的字段名与后台设置完全一致。
可以在首页列表调用自定义字段吗?
可以,在 index.php 循环内使用相同标签调用,但会增加数据库查询负载。
参考来源
- Typecho 官方网站,页面标题:Typecho 博客系统,URL: https://typecho.org
- GitHub Typecho 仓库,页面标题:typecho/core,URL: https://github.com/typecho/typecho