使用subcat函数和get标签可实现PHPCMS栏目页调用子栏目及其内容。首先通过{loop subcat($catid) $v}获取子栏目信息,输出名称、链接、描述等字段;如需展示子栏目下的文章内容,可在循环内嵌套{get sql="SELECT title,url,description,thumb FROM v9_news WHERE catid={$v[catid]} ORDER BY id DESC LIMIT 1"}调用最新文章并显示标题、缩略图等;可通过if条件过滤外部链接类型或设置subcat参数控制层级;前端建议使用CSS布局优化显示效果,并限制SQL查询字段以提升性能。

在使用 PHPCMS 建站时,栏目页调用子栏目内容是一个常见需求,尤其适用于分类清晰、层级明确的网站结构。比如在“产品中心”主栏目下展示各个子类别的缩略图和简介。实现这一功能的关键是利用 PHPCMS 的标签系统,结合 get 标签 或 subcat 函数 来获取子栏目信息并输出内容。
1. 使用 subcat 函数调用子栏目
PHPCMS 提供了内置的 subcat 方法用于获取当前栏目的子栏目列表。可以在栏目页模板(如 category.html)中使用以下代码:
{loop subcat($catid) $v} 描述:{$v['description']}{$v['catname']}
{/loop}
说明:
- $catid 是当前栏目的 ID,系统自动识别。
- subcat($catid) 返回该栏目下的所有子栏目数组。
- 可以调用字段包括:catname(栏目名称)、url(链接)、image(栏目图片)、description(描述)等。
立即学习“PHP免费学习笔记(深入)”;
2. 调用子栏目的内容或推荐文章
如果希望不仅显示子栏目名称,还展示其下的一条或多条内容,可以嵌套 get 标签。例如:
{loop subcat($catid) $v}
{$v['catname']}
{get sql="SELECT title,url,description,thumb FROM v9_news WHERE catid={$v[catid]} ORDER BY id DESC LIMIT 1"}
{if $r[thumb]}{else}暂无图片{endif}
{/get}
{/loop}
注意:
- SQL 查询中的表名(如 v9_news)需根据实际数据表前缀调整。
- 使用 {$v[catid]} 动态传入子栏目的 ID。
- LIMIT 1 表示每个子栏目只取最新一条内容。
3. 控制仅显示一级子栏目或排除特定栏目
若只想显示一级子栏目,可加判断条件:
{loop subcat($catid) $v}
{if $v['type'] != 2} {$v['catname']}
{/if}
{/loop}
也可以通过设置 subcat($catid, 1, 0) 参数控制递归深度和是否包含自身。
4. 样式与前端优化建议
输出后可通过 CSS 控制布局,例如横向排列子栏目:
.subcol { float: left; width: 200px; margin: 10px; }
为避免页面加载慢,建议限制每条内容只取关键字段(title、url、thumb),避免查询过多字段。
基本上就这些方法,灵活运用 subcat 和 get 标签就能实现丰富的子栏目内容展示效果。











