在 Typecho 官方的主题开发文档中,很少有关于文章自定义字段和主题设置相关的开发说明。我也是查看了一些开源主题的代码才搞懂自定义字段和主题设置的开发。这里就简单写一下文章自定义字段和主题设置的定义和调用。
文章自定义字段
文章自定义字段定义后会显示在文章编辑界面的编辑框下方,用户可以使用定义好的选项来设置每篇文章的偏好,在输出文章的时候可以调用用户的设置,实现一些个性化功能。
文章自定义字段需要在主题目录下的functions.php
文件中的themeFields
函数中定义。
input
输入框
下面定义一个input
输入框:
function themeFields($layout) {
$image = new Typecho_Widget_Helper_Form_Element_Text('image', null, null, _t('文章头图'), _t('文章头图会显示在文章的顶部。'));
$layout->addItem($image); // 注册
}
Typecho_Widget_Helper_Form_Element_Text
的第一个参数是字段名。第二个参数目前暂时未知。第三个参数是默认值。第四个参数是提示信息,会显示在输入框关联的label
标签中。第五个参数是更详细的提示信息,会显示在输入框下方。
在输出文章的时候可以通过$this->fields->image()
输出自定义字段的内容,其中的image
就是字段名称。如果要判断字段是否有内容可以直接用 if
来判断$this->fields->image
,如果有内容就会返回true
,否则就返回false
。
select
下拉选择
下面定义一个select
下拉选择:
function themeFields($layout) {
$articleCopyright = new Typecho_Widget_Helper_Form_Element_Select('articleCopyright', array(
'show' => '显示',
'hide' => '不显示'
), 'show', _t('显示原创声明'), _t('开启后会在本篇文章底部显示版权声明。'));
$layout->addItem($articleCopyright); // 注册
}
注意!只要是文章的自定义字段都需要写在themeFields
函数内,多个字段也只需要写在一个themeFields
函数内。
Typecho_Widget_Helper_Form_Element_Select
的第一个参数是字段名称。第二个参数是下拉选择的内容,需要传入一个数组。第三个参数是默认值,默认值的类型为字符串,需要传入一个数组的键名。第四个参数是 label 标签关联的提示信息。第五个参数是更详细的提示信息。
在输出文章的时候可以用if
来判断$this->fields->articleCopyright
的值,其中articleCopyright
就是字段名。下面判断$this->fields->articleCopyright
的值:
if ($this->fields->articleCopyright == 'show') {
// 如果是选中状态就返回 true
}