李维亮_前端开发攻城狮 - PHPCMS最新文章
type: channel
link: https://www.liweiliang.com/tag/PHPCMS%E6%9C%80%E6%96%B0%E6%96%87%E7%AB%A0/
items: PHPCMS最新文章
items: PHPCMS如何调用多个分类栏目的最新文章

PHPCMS最新文章
type: item
date: 2016-04-14T11:06:00+08:00
description: 分类最新文章{pc:content action="lists" catid="$catid" num="20" order="id DESC"} {loop $data $v} {$v['title']} {/loop} {/pc} 以上代码为当前分类最新文章。指定分类最新文章只需把$catid改成分类ID即可。全站最新文章{pc:get sql="SELECT * FROM v9_news ORDER BY id DESC"} {loop $data $v} {$v[title]} {/loop} {/pc} 全站最新文章和内容{pc:get sql="SELECT * FROM v9_news a,v9_news_data b WHERE a.id=b.id ORDER BY updatetime DESC"} {loop $data $v} {$v[title]} {$v[content]} {/loop} {/pc} 跟上面的全站最新文章的代码区别在于这里需要调用2个表，没办法，标题字段title虽然在表v9_news，但是内容字段content却在表v9_news_data补充添加翻页功能以上代码如果用于列表页还需要翻页功能，只需在pc标签后加一个参数page="$page" 在循环内一般用以下方法调用 {if $pages} {$pages} {/if} 意思为：如果存在分页则显示分页注意：在首页调用全站最新文章时，分页参数要看首页是动态还是静态。page=”$page” 默认的静态page=”$_GET[page]” 首页动态必须把上面的替换成这个，否则分页失效。只调用带缩略图的文章在标签里加上参数 thumb="1"注意：hits方法不支持thumb属性 lists方法才行

PHPCMS如何调用多个分类栏目的最新文章
type: item
date: 2016-04-13T17:22:00+08:00
description: 如果你的是一个小型的网站，只有一级分类，不存在子分类，那很简单，上代码{pc:get sql="SELECT * FROM v9_news WHERE catid in(1,3,5) ORDER BY id DESC" num="10"} {loop $data $v} {$v[title]} {/loop} {/pc} 这里我调用了分类ID为1，3，5的最新文章。但是，如果是一个稍大一些的网站，有的存在子分类，有的不存在，那该如何调用呢？在PHPCMS中只能调用直接分类下的文章，也就是说如果指定一个分类ID存在子分类，那么将无法调出文章。所以我们要做的是如果是直接分类那么直接显示分类id，如果存在子分类，那么显示所有子分类id，最后再把他们用逗号连起来，就实现了相同的效果。<?php $assigncatid=array(23,24,19); $str =array(); foreach($assigncatid as $row){ $str[]=$CATEGORYS[$row][arrchildid]; } $finalcatid= implode(',', $str); ?> {pc:get sql="SELECT * FROM v9_news WHERE catid in($finalcatid) ORDER BY id DESC" num="14"} {loop $data $v} {$v[title]} {/loop} {/pc} 这里我选了3个指定的分类id，其中23，24没有子栏目，19有很多子栏目。$CATEGORYS[$row][arrchildid] 这一句很重要，如果没有子分类直接显示该分类id，如果有子分类，就会以1,2,3,4,5这种格式显示所有子分类，数组中有3个值，所以foreach后会形成3个数组，分别为 23、24、以及19,43,44 其中43,44为19的子分类id.把这3组数据赋值给一个数组，然后在循环外用逗号切割成字符串，拼起来就是 23,24,19,43,44 到这里是不是已经一目了然了，该实现的功能都实现了，enjoy!网上查了些资料，发现也有人这样来获取子分类ID{loop subcat(15) $k $v} {php $subcatid[] = $k;} {/loop} {php $subcatid = implode(',', $subcatid);} 然后在读取SQL的条件中这样写 WHERE catid in($finalcatid)其实个人觉得这种做法纯属鸡肋，要获取一个指定栏目下的所有子栏目ID，直接用 $CATEGORYS[$catid][arrchildid]不就好了，其中$catid可以改成指定的父分类ID