好久没有写博客了,最近用自己半吊子的php知识改了一个很简易的Typecho导航网站模板(CyanNavi),过程中学到了很多东西,在这里简单记录一下。

导航分类

关于导航分类的设计,所需数据使用Typecho自带的分类功能,使用前在后台-管理-分类界面进行设置。

分类数据调用
    <?php $this->widget('Widget_Metas_Category_List')->to($categorys); ?>`

    <?php while ($categorys->next()): ?>`

    <?php $categorys->name(); ?> ` 

循环输出分类数据。

导航网站信息

关于网站信息展示的设计,所需数据通过系统自带的 文章 功能,以及撰写文章界面增加自定义字段的方式的方式实现。

调用某分类下的文章数据

<?php $this->widget("Widget_Archive@$categorys->mid", "pageSize=99999&type=category", "mid=$categorys->mid")->to($categoryPosts); ?> 获取$categorys->mid分类下的文章数据

pageSize为每次输出时的文章数目,可以通过后台-设置-阅读-每页文章数目进行设置,为了简便本模板中直接写死了。

<?php while($categoryPosts->next()): ?> 循环输出文章数据。

调用文章具体数据

<?php $categoryPosts->title(); ?> 输出网站名称,通过文章标题实现。

<?php $categoryPosts->fields->naviUrl(); ?> 输出网站链接,通过自定义字段 网址(naviUrl) 实现。

<?php $categoryPosts->fields->naviDesc(); ?> 输出网站简介,通过自定义字段 网站简介(naviDesc) 实现。

<?php $categoryPosts->fields->naviLogo(); ?> 输出网站LOGO,通过自定义字段 网站LOGO(naviLogo) 实现。

$naviCustom ,备用字段,根据特殊需要使用。

自定义字段

在模板 functions.php 文件中使用 function themeFields($layout) {} 函数自定义字段。

例如增加 网站LOGO(naviLogo) 字段,

function themeFields($layout) {

    $naviLogo = new Typecho_Widget_Helper_Form_Element_Text('naviLogo', NULL,NULL, _t('网站LOGO'), _t('在这里填入网站logo地址,建议大小20x20px'));   //第3个参数可设置默认值
    $naviLogo->input->setAttribute('style', 'width:100%');    //调整文本框的默认宽度
    $layout->addItem($naviLogo);
    
    //其他字段定义
    }

上述字段绑定的输入框除了 Text 外,常见的还有 RadioCheckboxTextareaSelect等。