ZBLOG PHP主题开发之自定义侧栏和导航标签调用

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>&nbsp;&nbsp;&nbsp;<a href="{$nowMonthUrl}">{$nowYear}年{$nowMonth}月</a>&nbsp;&nbsp;&nbsp;<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主题开发之自定义侧栏和导航标签调用 | 欢迎分享( 公众号:站长事儿 )