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);