Typecho主题自定义字段

Typecho主题自定义字段

0226150

主题设置字段定义后会显示在主题的外观设置页,用户可以使用定义好的选项来设置主题的外观和功能。

主题设置的字段需要在主题目录下的 funcions.php 中的 themeConfig 函数中定义。


input 输入框

下面定义一个 input 输入框:

function themeConfig($cfg) {
    $logoUrl = new Typecho_Widget_Helper_Form_Element_Text('logoUrl', null, null, _t('站点 Logo 地址'), _t('Logo 会显示在标签页的标题前面。'));
    $cfg->addInput($logoUrl);  //  注册
}

主题设置字段的 Typecho_Widget_Helper_Form_Element_Text 参数和文章自定义字段的 Typecho_Widget_Helper_Form_Element_Text 的参数是一样的。

主题设置字段可以在任何一个页面使用 $this->options->logoUrl() 输出,其中的 logoUrl 就是字段名。如果要判断字段是否有内容也可以用 if 来判断 $this->options->logoUrl ,如果有内容就会返回 true ,否则返回 false 。


textarea 输入框

下面定义一个 textarea 输入框:

function themeConfig($cfg) {
    $cssCode = new Typecho_Widget_Helper_Form_Element_Textarea('cssCode', null, null, _t('自定义 CSS'), _t('通过自定义 CSS 您可以很方便的设置页面样式,自定义 CSS 不会影响网站源代码。'));
    $cfg->addInput($cssCode);  //  注册
}

注意!所有的主题设置字段都需要写在 themeConfig 函数中,多个字段也只需要写在一个 themeConfig 函数中。

Typecho_Widget_Helper_Form_Element_Textarea 的参数和 input 输入框的参数是一样的。

textarea 的输出和查询和上面的 input 是一样的。


checkbox 复选框

下面定义一组 checkbox 复选框:

function themeConfig($cfg) {
    $sidebarBlock = new Typecho_Widget_Helper_Form_Element_Checkbox('sidebarBlock',
        array(
            'ShowRecentPosts' => _t('显示最新文章'),
            'ShowRecentComments' => _t('显示最近回复'),
            'ShowCategory' => _t('显示分类'),
            'ShowTag' => _t('显示标签云'),
            'ShowArchive' => _t('显示归档'),
            'ShowOther' => _t('显示其它杂项'),
            'HideLoginLink' => _t('隐藏登录入口')
        ),
        array(
            'ShowRecentPosts',
            'ShowRecentComments',
            'ShowCategory'
        ), _t('侧边栏显示')
    );
    $cfg->addInput($sidebarBlock->multiMode());  //  注册
}

Typecho_Widget_Helper_Form_Element_Checkbox 的第一个参数是字段名。第二个参数是复选框的内容,需要传入一个数组。第三个参数是复选框的选中状态,需要传入一个数组,数组的内容就是第二个参数中数组的键名。第四个参数是复选框组的标题,会显示在复选框的上方。

注意!在注册的时候需要传入 Typecho_Widget_Helper_Form_Element_Checkbox 的 multiMode() 方法。

如果需要判断复选框的选中状态可以使用 in_array 函数来查找 $this->options->sidebarBlock 的选项。

下面判断 显示最新回复 是否选中 :

if (is_array($this->options->sidebarBlock) && in_array('ShowRecentComments', $this->options->sidebarBlock)) {
    //  返回 true
}

如果一组复选框中没有一个被选中,$this->options->sidebarBlock 的值就是 null 。只使用 in_array() 查找的话可能会报错,需要先用 is_array() 判断是否是数组。

复选框的效果如下:

图片[1]-Typecho主题自定义字段-小语雀网

radio 单选框

下面定义一组 radio 单选框:

function themeConfig($cfg) {
    $navbarColor = new Typecho_Widget_Helper_Form_Element_Radio('navbarColor', array(
        'white' => '白色',
        'black' => '黑色'
    ), 'black', _t('导航栏颜色'));
    $cfg->addInput($navbarColor);
}

Typecho_Widget_Helper_Form_Element_Radio 的第一个参数是字段名。第二个参数是单选框的内容,需要传入一个数组。第三个参数是单选框的选中状态,需要传入第二个参数数组的键名。第四个参数是单选框组的标题,会显示在单选框的上方。

如果要判断单选框的选中状态可以用 if 来判断 $this->options->navbarColor 的值,其中的 navbarColor 是字段名。

下面判断单选框的选中状态:

if ($this->options->navbarColor == 'black') {
    //  如果黑色选中就返回 true
}

下面是单选框的效果:

图片[2]-Typecho主题自定义字段-小语雀网
© 版权声明
THE END
文章不错?点个赞呗
点赞150赞赏
分享
评论 抢沙发
小语雀的头像-小语雀网

昵称

取消
昵称表情代码图片