首页 > 技术文章 > phpcms如何显示所有的列表和文章?

ityz 2016-12-06 17:05 原文

首先我们先理解一下,什么是显示所有分类以及分类下的文章,比如我们有五个大的分类,而每个大的分类下面又有文章,而我们要做的就是在首页面调用这些分类和文章,每个大的分类下面显示每个分类的文章,这就是PHPCMS显示所有分类以及每个分类下面的文章了。

在PHPCMS的演示站中,在首页我们可以看到,将大类以及分类的文章循环读取了出来,在我们制作模板时,经常会遇到要将所有分类以及分类下的文章读出来的时候,可以使用PHPCMS默认站中的代码了,代码如下:

{loop subcat(0,0,0,$siteid) $r}
<h3>{$r[catname]}</h3>
{pc:content action="lists" catid="$r[catid]" num="5" order="id D
ESC" return="info"}
<ul>
{loop $info $v}
<li><a href="{$v['url']}">{str_cut($v['title'],40)}</a></li>
{/loop}
</ul>
{/pc}
{/loop}

 将其代码复制到你制作的模板中,是不是已经把分类以及分类的文章循环出来了,这一部分的调用代码不太好理解的是 {loop subcat(0,0,0,$siteid) $r} 这一句,我们来还原一下标签样式: {loop subcat($parentid,$type,$self,$siteid) $r},这是获取子类目的标签,$parentid 父级id,$type 栏目类型,$self 是否包含本身 0为不包含,$siteid 站点id。 在上面的例子中,全部为 0,表示调用的是顶级的栏目,而内容则是调用整个大的分类下的文章,我们再来看一下在PHPCMS中的函数定义,代码如下:

function subcat($parentid = NULL, $type = NULL,$self = '0', $s
iteid = '') {
        if (empty($siteid)) $siteid = get_siteid();
        $category = getcache('category_content_'.$siteid,'com
mons');
        foreach($category as $id=>$cat) {
                if($cat['siteid'] == $siteid && ($parentid === N
ULL || $cat['parentid'] == $parentid) && ($type === NULL || $ca
t['type'] == $type)) $subcat[$id] = $cat;
                if($self == 1 && $cat['catid'] == $parent
id && !$cat['child'])  $subcat[$id] = $cat;
        }
        return $subcat;
}

 这个不是很容易理解,可以慢慢消化,这里就不讲解了。

推荐阅读