Typecho自定义字段用法记录

闲着没事在学嵌套Typecho主题,在嵌套的时候发现了自定义字段,以前一直没注意文章编辑页面的这个功能,然后顺手就点进了帮助文档,感觉打开了新世界。自定义字段功能有非常多的妙用,合理利用可以让主题如虎添翼,通过自定义字段可以实现自定义文章缩略图、幻灯片调用等图片调用功能以及自定义文章keywords和description等等,方法很多就看你怎么用,并且调用非常简单。看看官方文档给出的代码。

自定义字段代码

调用字段

$field = $this->fields->fieldName;

字段输出

$this->fields->fieldName();

判断字段

if(isset($this->fields->fieldName)){
  echo '字段存在,值为:'.$this->fields->fieldName;
}else{
  echo '字段不存在';
}

fieldName替换为你自定义的字段名称选择字符或者数字或者小数不能为中文,在字段值中填入内容,如图片调用就在字段值中填入图片链接。

实操1

如字段名称为sss字段值为Hello在主题文件中插入如下代码直接输出Hello

<?php $field = $this->fields->sss(); ?>

实操发现可输出,如果没有在自定义字段中添加sss字段时前端会报错。所以在文件中插入了上述代码就必须在文章中添加该自定义字段。

实操2

在主题functions.php文件中插入以下代码即可将代码中logoUrl字段名固定在文章/页面的撰写界面以后只需要填入字段值即可

//在文章/页面撰写页面自定义字段中固定该自定义字段
function themeFields($layout)
{
  $logoUrl = new Typecho_Widget_Helper_Form_Element_Text('logoUrl', NULL, NULL, _t('站点LOGO地址'), _t('在这里填入一个图片URL地址,需要带上http(s)://'));
  $layout->addItem($logoUrl);
}

然后在主题文件中插入以下代码调用

//判断:如果有该字段值就直接输出,反之输出默认值/assets/img/welcome.png
<?php if (!empty(thePrev($this)['logoUrl'])) {
                    echo thePrev($this)['logoUrl'];
                  } else {
                    echo '/assets/img/welcome.png';
                  } ?>

还有其它很多妙用,如将字段名定义为keywordsdescription单独定义该文章的关键词和描述用以SEO优化等。
参考:官方文档

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注