查看: 592|回复: 3

[教 程] 【首页代码分析】企业网站首页或传统网站首页会用的 子栏目数据循环代码详解

[复制链接]
发表于 2017-10-7 20:53:03 | 显示全部楼层 |阅读模式
本帖最后由 kwakmoon 于 2017-10-7 21:07 编辑

【首页代码分析】企业网站首页或传统网站首页会用的 子栏目数据循环

效果演示及说明:
演示站:http://demo3.newbeeit.com
排除几个子栏目原因:首页列出了各个子栏目的最新文章,但因为栏目数是单数会出现一个空白位,或者整个排版问题,不能把所有子栏目全部调用,需要排除不重要或经常不更新的栏目,或者不需要在首页子栏目调用里显示的栏目,或者已经在首页其他板块调用过的指定栏目,不需要重复显示等等原因。

phpcms v9 {loop subcat(0,0,0,$siteid) $r}子栏目数据循环

{loop subcat(0,0,0,$siteid) $r}{/loop}是一个循环标记,意思是调用(0,0,0,$siteid)这个里边的子栏目数据,也就是说主要作用是调用出同一个父级栏目下的子栏目数据。括号里边的这四个数值的含义依次是:
父级id 、栏目类型、是否包含本身(0为不包含、1为包括父栏目自身)、站点id


先看看代码分析:

{loop subcat(0,0,0,$siteid) $r}{/loop} 来源函数原型:
subcat函数的定义是在phpcms/libs/functions/global.func.php文件中,函数原型为:
/**
* 获取子栏目
* @param $parentid 父级id
* @param $type 栏目类型  //1为单网页类型,0为栏目类型(查看数据库可以看到)
* @param $self 是否包含本身 0为不包含
* @param $siteid 站点id
*/
function subcat($parentid = NULL, $type = NULL,$self = '0', $siteid = '') {
if (empty($siteid)) $siteid = get_siteid();
$category = getcache('category_content_'.$siteid,'commons');
foreach($category as $id=>$cat) {
if($cat['siteid'] == $siteid && ($parentid === NULL || $cat['parentid'] == $parentid) && ($type === NULL || $cat['type'] == $type)) $subcat[$id] = $cat;
if($self == 1 && $cat['catid'] == $parentid && !$cat['child'])  $subcat[$id] = $cat;
}
return $subcat;
}

示例1:官方模版首页示例

{loop subcat(0,0,0,$siteid) $r}
{php $num++}
<div class="box cat-area" {if $num%2!=0}style=" margin-right:10px"{/if}>
  <h5 class="title-1">{$r[catname]}<a href="{$r[url]}" class="more">更多>></a></h5>
  <div class="content">
  {pc:content  action="lists" catid="$r[catid]" order="updatetime DESC" thumb="1" num="1" return="info"}
  {loop $info $v}
    <p>
      <img src="{thumb($v[thumb],90,0)}" width="90" height="60"/>
      <strong><a href="{$v['url']}" target="_blank" title="{$v['title']}"{title_style($v[style])}>{str_cut($v['title'],28)}</a></strong><br />{str_cut($v['description'],100)}
    </p>
  {/loop}
  {/pc}               
    <div class="bk15 hr"></div>
    {pc:content action="lists" catid="$r[catid]" num="5" order="id DESC" return="info"}
    <ul class="list lh24 f14">
    {loop $info $v}
      <li>·<a href="{$v['url']}" target="_blank" title="{$v['title']}"{title_style($v[style])}>{str_cut($v['title'],40)}</a></li>
    {/loop}
    </ul>
    {/pc}
  </div>
</div>
{if $num%2==0}<div class="bk10"></div>{/if}
{/loop}

示例2:显示哪些栏目

{loop subcat(6,0,0,$siteid) $r}
{if $r['catid']==1||$r['catid']==2 } //显示栏目ID=1和栏目ID=2的栏目
{php $num++}
<div class="box cat-area" {if $num%2!=0}style=" margin-right:10px"{/if}>
  <h5 class="title-1">{$r}<a href="{$r}" class="more">更多>></a></h5>
  <div class="content">
    {pc:content  action="lists" catid="$r" order="updatetime DESC" thumb="1" num="1" return="info"}
    {loop $info $v}
      <p>
        <img src="{thumb($v,90,0)}" width="90" height="60"/>
        <strong><a   target="_blank" title="{$v['title']}"{title_style($v)}>{str_cut($v['title'],28)}</a></strong><br />{str_cut($v['description'],100)}
      </p>
    {/loop}
    {/pc}               
    <div class="bk15 hr"></div>
    {pc:content action="lists" catid="$r" num="5" order="id DESC" return="info"}
    <ul class="list lh24 f14">
    {loop $info $v}
      <li>·<a href="{$v['url']}" target="_blank" title="{$v['title']}"{title_style($v)}>{str_cut($v['title'],40)}</a></li>
    {/loop}
    </ul>
    {/pc}
  </div>
</div>
{if $num%2==0}<div class="bk10"></div>{/if}
{/if}
{/loop}

示例3:排除某个栏目

{loop subcat(6,0,0,$siteid) $r}
{if $r['catid']==3 }<?php continue; ?>{/if} //排除栏目ID=3的栏目,方法1
//{php if($r['catid']==3)continue;}//排除栏目ID=3的栏目,方法2
//{if $r['catid']==3||$r['catid']==4||$r['catid']==5 }<?php continue; ?>{/if}//排除栏目ID=3、栏目ID=4、栏目ID=5的栏目,方法1
//{php if($r['catid']==3||$r['catid']==4||$r['catid']==5)continue;}//排除栏目ID=3、栏目ID=4、栏目ID=5的栏目,方法2

{php $num++}
<div class="box cat-area" {if $num%2!=0}style=" margin-right:10px"{/if}>
<h5 class="title-1">{$r}<a href="{$r}" class="more">更多>></a></h5>
<div class="content">
{pc:content  action="lists" catid="$r" order="updatetime DESC" thumb="1" num="1" return="info"}
{loop $info $v}
<p>
<img src="{thumb($v,90,0)}" width="90" height="60"/>
<strong><a   target="_blank" title="{$v['title']}"{title_style($v)}>{str_cut($v['title'],28)}</a></strong><br />{str_cut($v['description'],100)}
</p>
{/loop}
{/pc}               
<div class="bk15 hr"></div>
{pc:content action="lists" catid="$r" num="5" order="id DESC" return="info"}
<ul class="list lh24 f14">
{loop $info $v}
<li>·<a href="{$v['url']}" target="_blank" title="{$v['title']}"{title_style($v)}>{str_cut($v['title'],40)}</a></li>
{/loop}
</ul>
{/pc}
</div>
</div>
{if $num%2==0}<div class="bk10"></div>{/if}
{/loop}
发表于 2017-10-10 23:54:16 | 显示全部楼层
不错,支持CIA
回复 支持 反对

使用道具 举报

发表于 2017-11-19 11:41:15 | 显示全部楼层
学习了。谢谢分享哦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 点击这里注册

本版积分规则

小黑屋|Archiver|phpcms网站管理系统 ( 京ICP备14011169 )

GMT+8, 2017-12-19 00:25 , Processed in 0.196499 second(s), 7 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表