Z-BlogPHP 主题制作技巧

Z-BlogPHP 主题制作技巧

注意,本页内容为开发者提供的实现实例,请在理解代码后再使用。

同分类文章列表调用

{foreach GetList(调用条数,分类ID) as $related}<li><span>{$related.Time('Y-m-d')}</span><a href="{$related.Url}">{$related.Title}</a></li>{/foreach}
获取大目录下的所有文章(包括子目录文章),将上面的GetList改为:
Getlist(调用条数,分类ID,null,null,null,null,array('has_subcate'=>true));
调用其它数据参考文章标签,文章标签
注意:此处需要使用foreach循环中as后面变量名,如案列中使用的$related,如需调用标题则用{$related.Title},而并非是 {$article.Title}


网站关键词、描述添加

{if $type=='article'}
  <title>{$title}_{$article.Category.Name}_{$name}</title>
  {php}
    $aryTags = array();
    foreach($article->Tags as $key){
      $aryTags[] = $key->Name;
    }
    if(count($aryTags)>0){
        $keywords = implode(',',$aryTags);
    } else {
        $keywords = $zbp->name;
    }
    $description = preg_replace('/[\r\n\s]+/', ' ', trim(SubStrUTF8(TransferHTML($article->Content,'[nohtml]'),135)).'...');
  {/php}
  <meta name="keywords" content="{$keywords}"/>
  <meta name="description" content="{$description}"/>
  <meta name="author" content="{$article.Author.StaticName}">{elseif $type=='page'}
  
  <title>{$title}_{$name}_{$subname}</title>
  <meta name="keywords" content="{$title},{$name}"/>
  {php}
    $description = preg_replace('/[\r\n\s]+/', ' ', trim(SubStrUTF8(TransferHTML($article->Content,'[nohtml]'),135)).'...');
  {/php}
  <meta name="description" content="{$description}"/>
  <meta name="author" content="{$article.Author.StaticName}">  {elseif $type=='index'}
  
  <title>{$name}{if $page>'1'}_第{$pagebar.PageNow}页{/if}_{$subname}</title>
  <meta name="Keywords" content="自定义关键词,{$name}">
  <meta name="description" content="自定义描述_{$name}_{$title}">
  <meta name="author" content="{$zbp.members[1].StaticName}">{else}
  
  <title>{$title}_{$name}_第{$pagebar.PageNow}页</title>
  <meta name="Keywords" content="{$title},{$name}">
  <meta name="description" content="{$title}_{$name}_当前是第{$pagebar.PageNow}页"> 
  <meta name="author" content="{$zbp.members[1].StaticName}">{/if}


评论数判断

{if $article.CommNums==0}暂无留言{elseif $article.CommNums==1}仅有1条留言{else}已有{$article.CommNums}条留言{/if}


页面判断

{if $type=='index'&&$page=='1'}  /*判断首页*/
{if $type=='category'}  /*判断分类页*/
{if $type=='article'}  /*判断日志页,不含独立页面,{if $article.Type==ZC_POST_TYPE_ARTICLE}(另一方案)*/
{if $type=='page'}  /*判断独立页面*/
{if $type=='author'}  /*判断用户页*/
{if $type=='date'}  /*判断日期页*/
{if $type=='tag'}  /*判断标签页*/


示例:首页和分类列表页分离

在index.php文件里作判断,分离模板。比如:

{if $type=='index'&&$page=='1'} {template:c_index}{else}{template:c_list}{/if}
然后新建两个相应的模板文件:c_index.php和c_list.php


随机获得文章中的四张图片中的一张

适用于多图站点,在模板文件中使用:

{php}$temp=mt_rand(1,4);$pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png]))[\'|\"].*?[\/]?>/";$content = $article->Content;preg_match_all($pattern,$content,$matchContent);if(isset($matchContent[1][0])) $temp=$matchContent[1][0];else$temp=$zbp->host."zb_users/theme/$theme/style/images/random/$temp.jpg";//需要在相应位置放置4张jpg的文件,名称为1,2,3,4{/php} <img src="{$temp}" />


仅显示文字的文章简介调用方法

{SubStrUTF8(TransferHTML($article.Intro,"[nohtml]"),200)}


分类目录面包屑的代码编写

{php}$html='';function navcate($id){
        global $html;
        $cate = new Category;
        $cate->LoadInfoByID($id);
        $html ='>>  <a href="' .$cate->Url.'" title="查看' .$cate->Name. '中的全部文章">' .$cate->Name. '</a> '.$html;
        if(($cate->ParentID)>0){navcate($cate->ParentID);}}navcate($article->Category->ID);global $html;echo $html;{/php}


显示文章的相关文章

方法一和方法二的区别:方法一是通过匹配tags,然后按照更新时间列出相关文章;方法二,同样通过匹配tags,然后随机列出相关,但随机比较消耗资源,并且不支持SQLite数据库。

方法1

使用getlist,请参考GetList 函数 例5

友好的时间显示

function TimeAgo( $ptime ) {
    $ptime = strtotime($ptime);
    $etime = time() - $ptime;
    if($etime < 1) return '刚刚';
    $interval = array (
        12 * 30 * 24 * 60 * 60  =>  '年前 ('.date('Y-m-d', $ptime).')',
        30 * 24 * 60 * 60       =>  '个月前 ('.date('m-d', $ptime).')',
        7 * 24 * 60 * 60        =>  '周前 ('.date('m-d', $ptime).')',
        24 * 60 * 60            =>  '天前',
        60 * 60                 =>  '小时前',
        60                      =>  '分钟前',
        1                       =>  '秒前'
    );
    foreach ($interval as $secs => $str) {
        $d = $etime / $secs;
        if ($d >= 1) {
            $r = round($d);
            return $r . $str;
        }
    };}
友好时间在编译模板文件中使用方法
{TimeAgo($XXX.Time())}
例:{TimeAgo($article.Time())}


转载请说明出处内容投诉
zblog资源网 » Z-BlogPHP 主题制作技巧

发表评论

欢迎 访客 发表评论

加入会员,享受更优质的zblog技术服务!

马上加入 会员说明 联系客服