不知不觉 我的Geek更新了八个版本 从刚开始 粗糙的动画 到现在基本无卡顿 今天又给它添加了一个口袋 使它装下了站点的全部分类和页面 又添加了一点儿小魔法进去 让侧栏丝滑起来 并且去掉它原本暂时存放分类和页面的零件

由于 分类有图标 于是给页面添加了图标字段 方便添加页面图标 这个字段只有页面才会显示 文章页不显示此字段 这是一个很简单的事 但是刚开始一直在报错 不知道什么问题 就放弃了 测试最普通的用法 还是报错 这就让我怀疑是不是PHP版本低留下的 没有犹豫的换上了8.0版本 确实可以了 就是 老插件该丢了

说说自定义字段如何设置

如下图 如果没有添加字段 又想要的话只能新建一个页面就要补一个字段

请输入图片描述

但是想要方便起来的话就要设置个自定义字段 打开主题的 functions.php 填入如下函数 就可以为你的主题增加一个自动绑定的输入框

function themeFields($layout) {
    $say = new Typecho_Widget_Helper_Form_Element_Text('say', NULL, NULL, _t('留言'), _t('输入想说的话)'));
    $layout->addItem($say);
}

模板这样设置后 文章字段就不用用户手动增加 而是默认就加好了 用户只需要提交 字段值(自己想填的内容) 就可以了

那么怎么输出 看下面了

    /** 整理的say对应上面字段设置的say **/
    <?php $this->fields->say(); ?>  

有了这个之后 如果用户不添加这个内容怎么把这一整串相关的内容去掉呢 如下

    /**判断有say字段内容**/
    <?php if ($this->fields->say): ?> 
    /** 用户添加之后输出内容 **/
    她:<?php $this->fields->say(); ?> 
    /** 结束 **/
    <?php endif;?>

有了这个 又想如果用户不填写自定义输出内容 就输出模板作者给的内容 怎么办 只要添加下面这一句

<?php else : ?>

那么合起来的用法就是 如下

    /**判断有say字段内容**/
    <?php if ($this->fields->say): ?> 
    /** 如果用户填写了字段则输出 **/
    她:<?php $this->fields->say(); ?> 
    <?php else : ?>
    /** 如果用户没有添加字段则输出 **/
    她:世界和平
    /** 结束 **/
    <?php endif;?>

就是这么简单 最后你又发现 这个字段越添加越多了 写文章的用户很经常把页面字段和文章字段弄错 该如何分开文章字段和页面字段 只要给 functions.php 添加个下面PHP

/** 请把if里的$后\去掉 这里过滤使用**/
if ($\_SERVER['SCRIPT_NAME']=="/admin/write-post.php"){
      这里添加字段内容
}