ZBLOG PHP从1.5版本之后更新还是比较大的,在以前早期的版本的时候尤其是在开发主题侧栏的时候确实不够灵活。只能通过适配系统的样式才能做出侧栏调用,所以对于开发者开始就比较憋屈,有些功能样式不是特别容易丢进来。但是从1.5版本之后可以实现单独的侧栏模块自定义实现。
今天中午的时候在指导小梁同学开发ZBLOG PHP主题的时候他在侧栏这块遇到难题,于是老蒋就帮助他解决,直接拉出官方的文档。
侧栏的话需要文件:
1、sidebar.php
默认侧栏模板,可自定义 sidebar2.php~sidebar5.php 等为第2至第5侧栏模板
{* Template Name:侧栏模板 *}
{foreach $sidebar as $module}
{template:module}
{/foreach}
2、module.php
模块显示模板,可定义模块标题等格式,模块具体内容格式由下列细节模板决定。
{* Template Name:单个模块 *}
<dl class="function" id="{$module.HtmlID}">
{if (!$module.IsHideTitle)&&($module.Name)}<dt class="function_t">{$module.Name}</dt>{else}<dt style="display:none;"></dt>{/if}
<dd class="function_c">
{if $module.Type=='div'}
<div>{$module.Content}</div>
{/if}
{if $module.Type=='ul'}
<ul>{$module.Content}</ul>
{/if}
</dd>
</dl>
module 直接一点就是侧栏每个模块的外框。包括标题。
标签 | 含义 | 备注 |
---|---|---|
{$module.ID} | 内部ID | |
{$module.Name} | 模块名称 | |
{$module.FileName} | 文件名 | 文件名应是唯一的,如为主题添加模块请以theme_主题ID_filename命名,同理,如为插件添加模块请以theme_插件ID_filename命名 |
{$module.Content} | 模块内容 | 模块内容细节模板 |
{$module.HtmlID} | htmlID | |
{$module.Type} | 模块类型 | ul表示列表型,div表示混杂型 |
{$module.MaxLi} | ul类型模块显示的最大列数 | 默认为10。该数值不会影响存储,只会限制前端显示条数 |
{$module.Source} | 模块属性 | system=系统模块,theme=主题模块,plugin=插件模块 |
{$module.IsHideTitle} | 是否隐藏标题 | 1表示隐藏,0表示不隐藏,默认为0 |
3、module-xxx.php
这个就是我们侧栏小模块。
模板文件 | 说明 | 备注(默认列表行数) |
---|---|---|
module-archives.php | 文章归档模块 | 没有限制 |
module-authors.php | 作者列表模块 | 没有限制 |
module-calendar.php | 日历模块 | 没有限制 |
module-catalog.php | 分类列表模块 | 没有限制 |
module-statistics.php | 站点信息模块 | 没有限制 |
module-comments.php | 最近评论列表模块 | 10条 |
module-previous.php | 最近文章列表模块 | 10条 |
module-tags.php | 标签列表模块 | 25条 |
我们对应小模块后就先识别我们自定义的,如果我们没有自定义就识别系统自带的。
导航栏
module-navbar.php
{$content}
标签 | 含义 |
---|---|
{$content} | 导航数据未改动,直接返回导航模块内容 |
站点信息
module-statistics.php
{foreach $allinfo as $info}
<li>{$info['name']}:{$info['count']}</li>
{/foreach}
可用数据 | 数据类型 | 可用参数 | 含义 |
---|---|---|---|
$allinfo | 网站统计信息二维数组 | all_artiles | 文章总数 |
all_pages | 页面总数 | ||
all_categorys | 分类总数 | ||
all_tags | 标签总数 | ||
all_comments | 评论总数 | ||
all_views | 浏览总数 |
文章归档
module-archives.php
{if $style==1}
<select id="slArchives" onchange="window.location=this.options[this.selectedIndex].value">
{foreach $urls as $url}
<option value="{$url.Url}">{$url.Name} ({$url.Count})</option>
{/foreach}
</select>
{else}
{foreach $urls as $url}
<li><a href="{$url.Url}">{$url.Name} ({$url.Count})</a></li>
{/foreach}
{/if}
可用数据 | 数据类型 | 可用参数 | 含义 |
---|---|---|---|
$urls | url对象数组 | Url | 链接 |
Name | 归档名份名 | ||
Count | 文章数量 |
日历
module-calendar.php
<table id="tbCalendar">
<caption><a href="{$prevMonthUrl}">«</a> <a href="{$nowMonthUrl}">{$nowYear}年{$nowMonth}月</a> <a href="{$nextMonthUrl}">»</a></caption>
<thead><tr>{for $i = 1; $i <= 7; $i++}<th title="{$lang['week'][$i]}" scope="col"><small>{$lang['week_abbr'][$i]}</small></th>{/for}</tr></thead>
<tbody>
<tr>
{php}
$numberOfDays = date('t', strtotime($date));
$dayOfWeek = date('N', strtotime($date . '-1'));
$lastDayOfWeek = 7 - date('N', strtotime($date . '-' . $numberOfDays));
$dayOfWeekColspan = $dayOfWeek - 1;
$lastDayOfWeekColspan = $lastDayOfWeek - 1;
{/php}
{if $dayOfWeek > 1}<td class="pad" colspan="{$dayOfWeekColspan}"></td>{/if}
{php}
$weekCounter = $dayOfWeek - 1;
for ($i = 1; $i <= $numberOfDays; $i++) {
{/php}<td>{if isset($arraydate[$i])}<a href="{$arraydate[$i]['Url']}" title="{$arraydate[$i]['Date']} ({$arraydate[$i]['Count']})" target="_blank">{$i}</a>{else}{$i}{/if}</td>{php}
$weekCounter++;
if ($weekCounter % 7 == 0) {
{/php}</tr><tr>{php}
}
}
{/php}
{if $lastDayOfWeek > 1}<td class="pad" colspan="{$lastDayOfWeekColspan}"> </td>{/if}
</tr></tbody>
</table>
标签 | 含义 | 备注 |
---|---|---|
{$prevMonthUrl} | 上个月链接 | |
{$nowMonthUrl} | 当前月链接 | |
{$nextMonthUrl} | 下个月链接 | |
{$nowYear} | 当前年份 | |
{$nowMonth} | 当前月份 |
可用数据 | 数据类型 | 可用参数 | 含义 |
---|---|---|---|
$date | 指定日期对象 | PHP手册中Date章节 | 指日期归档页面的归档月份 |
$arraydate | 当月中含有文章的日期数组列表 | Url | 文章链接 |
Date | 日期 | ||
Count | 文章数量 |
网站分类
module-catalog.php
{$i = $maxLi}{$j = 0}{$s = ''}
{if $style==2}
{foreach $catalogs as $catalog}
{if $catalog->Level == 0}
{$s = $s . '<li class="li-cate"><a href="' . $catalog->Url . '">' . $catalog->Name . '</a><!--' . $catalog->ID . 'begin--><!--' . $catalog->ID . 'end--></li>'}
{/if}
{/foreach}
{for $i = 1; $i <= 3; $i++}
{foreach $catalogs as $catalog}
{if $catalog->Level == $i}
{$s = str_replace('<!--' . $catalog->ParentID . 'end-->', '<li class="li-subcate"><a href="' . $catalog->Url . '">' . $catalog->Name . '</a><!--' . $catalog->ID . 'begin--><!--' . $catalog->ID . 'end--></li><!--' . $catalog->ParentID . 'end-->', $s)}
{/if}
{/foreach}
{/for}
{foreach $catalogs as $catalog}
{$s = str_replace('<!--' . $catalog->ID . 'begin--><!--' . $catalog->ID . 'end-->', '', $s)}
{/foreach}
{foreach $catalogs as $catalog}
{$s = str_replace('<!--' . $catalog->ID . 'begin-->', '<ul class="ul-subcates">', $s)}
{$s = str_replace('<!--' . $catalog->ID . 'end-->', '</ul>', $s)}
{/foreach}
{php}ob_clean(){/php}{$s}
{elseif $style==1}
{foreach $catalogs as $catalog}
<li>{$catalog->Symbol}<a href="{$catalog.Url}">{$catalog.Name}</a></li>
{$j =$j + 1}
{if $i != 0 && $j >= $i}
{php}break;{/php}
{/if}
{/foreach}
{else}
{foreach $catalogs as $catalog}
<li><a href="{$catalog.Url}">{$catalog.Name}</a></li>
{$j =$j + 1}
{if $i != 0 && $j >= $i}
{php}break;{/php}
{/if}
{/foreach}
{/if}
可用数据 | 数据类型 | 可用参数 | 含义 |
---|---|---|---|
$maxLi | 数值 | 最大行数 | |
$style | 数值 | 0表示普通列表,1表示树型,2表示UL嵌套型 | |
$catalogs | 分类对象列表 | 分类标签 |
最新留言
module-comments.php
{foreach $comments as $comment}
<li><a href="{$comment->Post->Url}#cmt{$comment->ID}" title="{htmlspecialchars($comment->Author->StaticName . ' @ ' . $comment->Time())}">{FormatString($comment->Content, '[noenter]')}</a></li>
{/foreach}
可用数据 | 数据类型 | 可用参数 | 含义 |
---|---|---|---|
$comments | 最近评论对象列表 | 评论标签 |
作者列表
module-authors.php
{foreach $authors as $author}
<li><a href="{$author->Url}">{$author->Name}<span class="article-nums"> ({$author->Articles})</span></a></li>
{/foreach}
可用数据 | 数据类型 | 可用参数 | 含义 |
---|---|---|---|
$authors | 用户对象列表 | 用户标签 |
最近发表
module-previous.php
{foreach $articles as $article}
<li><a href="{$article.Url}">{$article.Title}</a></li>
{/foreach}
可用数据 | 数据类型 | 可用参数 | 含义 |
---|---|---|---|
$articles | 最近发表文章对象列表 | 文章标签_含独立页面 |
标签列表
module-tags.php
{foreach $tags as $tag}
<li><a href="{$tag.Url}">{$tag.Name}<span class="tag-count"> ({$tag.Count})</span></a></li>
{/foreach}
可用数据 | 数据类型 | 可用参数 | 含义 |
---|---|---|---|
$tags | tag标签对象列表 | tag标签 |
本文出处:老蒋部落 » ZBLOG PHP主题开发之自定义侧栏和导航标签调用 | 欢迎分享