typecho自定义字段使用整理
typecho为主题开发者提供了themeConfig和themeFields两个函数,分别控制主题外观和文章页自定义字段。以下整理了各类自定义字段的使用方式。
使用方式
打开主题根目录/function.php,添加以下代码。
function themeConfig($form) {
$logoUrl = new Typecho_Widget_Helper_Form_Element_Text('logoUrl', NULL, NULL, _t('LOGO 图片地址'), _t('留空则直接显示站点文字标题'));
$form->addInput($logoUrl);
}
在主题中判断是否存在并取值:
<?php if($this->options->logoUrl){ ?>
<img src="<?php $this->options->logoUrl(); ?>">
<?php } ?>
以上代码将在主题的外观设置中显示,如果要在文章编辑页面自定义字段,用以下函数:
function themeFields($layout) {
$thumbnail = new Typecho_Widget_Helper_Form_Element_Text('thumbnail', NULL, NULL, _t('缩略图'), _t('输入图片地址'));
$layout->addItem($thumbnail);
}
在主题中判断是否存在并取值:
<?php if($this->themeFields->thumbnail){ ?>
<img src="<?php $this->fields->thumbnail(); ?>">
<?php } ?>
注意两个函数不同的地方,以下以themeConfig函数为例。
单行文本
同上使用案例。
new Typecho_Widget_Helper_Form_Element_Text
多行文本
主要将Text替换为Textaera
new Typecho_Widget_Helper_Form_Element_Textaera
单选框
$cdnMode = new Typecho_Widget_Helper_Form_Element_Radio('cdnMode',
array('0' => _t('本地js'),
'1' => _t('CDN加速')),
'0', _t('选择CDN加载js'));
$form->addInput($cdnMode);
注意array数组是单选项,数组后面的“0”是默认选项。
多选框
$sidebarBlock = new Typecho_Widget_Helper_Form_Element_Checkbox('sidebarBlock',
array('ShowRecentPosts' => _t('显示最新文章'),
'ShowRecentComments' => _t('显示最近回复'),
array('ShowRecentPosts', 'ShowRecentComments', 'ShowCategory', 'ShowArchive', 'ShowOther'),
_t('侧边栏显示内容'),
_t('表单下面的说明文字'));
$form->addInput($sidebarBlock->multiMode());
下拉框
$styleType = new Typecho_Widget_Helper_Form_Element_Select('styleType', array('circle' => _t('圆形'),'squared' => _t('方形')), 'circle', _t('自定义文章列表样式'));
$form->addInput($styleType);