栏目与导航

栏目决定站点目录结构与导航。讲清 slug、父子级、排序、隐藏、绑定模板,以及导航怎么自定义。

约 9 分钟 建站 代码块右上角可一键复制
本页目录(9 分钟读完)

这一章只做两件事:怎么加栏目、怎么排菜单。

入口:后台 →「内容」→「栏目管理」(/admin/node)。

怎么加一个栏目#

作用:决定内容放在站点哪个位置,也决定导航上显示什么。

步骤:

  1. 点左侧「内容」→「栏目管理」
  2. 点「新建」
  3. 按下表填
  4. 点「保存」
填什么填什么说明
栏目名称新闻中心必填。导航上显示的字
URL 别名news生成 /list/news;留空自动生成
上级栏目顶级要做二级就选父栏目
所属模型文章这个栏目下能发什么
页面标题新闻中心 - 某某网留空就用栏目名称
关键词新闻,公司新闻SEO 用,可不填
描述一句话说明SEO 用,可不填
排序值100数字越大越靠前
状态显示选「隐藏」就不出现在导航

slug 怎么起:

栏目推荐不要用
新闻中心newsxinwen、新闻
产品中心productsproduct_list、cp
关于我们aboutabout-us-page
下载中心downloaddown、下载

规则:

  • 只用小写字母、数字、短横线
  • 同一个父栏目下不能重名
  • 改 slug 会让老链接打不开

栏目页 404?→ 看「常见问题」

怎么加二级栏目#

作用:做「产品中心 → 室内机」这种层级。

步骤:

  1. 先建好父栏目,比如「产品中心」
  2. 点「新建」
  3. 栏目名称填「室内机」
  4. 上级栏目选「产品中心」
  5. 所属模型选「产品」
  6. 点「保存」

顺序:先建父,再建子。反过来也能建,只是建的时候选不到父级。

一个典型的企业站结构:

一级栏目二级栏目slug模型
关于我们—about单页型
产品中心—products产品
室内机indoor产品
室外机outdoor产品
配件parts产品
新闻中心—news文章
公司新闻company文章
行业资讯industry文章
服务支持—support不指定
常见问题faq文章
资料下载docs下载模型
联系我们—contact单页型

建的顺序:

  1. 先建一级:产品中心、新闻中心、服务支持
  2. 再建二级,上级选刚才建好的
  3. 最后改「排序值」,决定谁在前

怎么排菜单顺序#

作用:控制导航上谁先谁后。

步骤:

  1. 进「栏目管理」
  2. 点要调的栏目后面的「编辑」
  3. 改「排序值」
  4. 点「保存」

规则:

规则说明
数字越大越靠前100 在 90 前面
数字相同按 id,先建的在前
建议用整十100、90、80,方便以后插队

改完怎么生效:

  1. 进「缓存与维护」
  2. 点「重建缓存」
  3. 刷新前台

顺序没变?→ 缓存没清。去「缓存与维护」点一下

怎么把栏目从导航里藏起来#

作用:页面还在,只是导航上不显示。

步骤:

  1. 进「栏目管理」
  2. 点这个栏目后面的「编辑」
  3. 状态改成「隐藏」
  4. 点「保存」
文本
隐藏 ≠ 删掉。
隐藏只是导航上没有,地址照样能打开。
适合:活动落地页、只从广告进来的页。

真要关掉页面:删栏目,或者把栏目下的内容全下线。

怎么给栏目配图#

作用:列表卡片有图,栏目页头有横幅。

步骤:

  1. 进「栏目管理」→「编辑」
  2. 拉到最下面「栏目配图」
  3. 点「选择图片」上传
  4. 点「保存」
上传框用在哪建议尺寸
缩略图列表卡片、搜索结果400×400 以内
横幅图栏目页头背景1600×400

默认主题已经接好了,传完刷新就能看到:

传的前台出现在
横幅图栏目页最上面的页头背景
缩略图页头面包屑下面的小图
文本
图片地址只能用:
站内路径(以 / 开头),或者 http(s) 完整地址。
少写开头的斜杠会保存失败,这是故意的。
从「文件管理」里复制的地址一定是对的。

怎么给栏目换模板#

作用:同一个模型,不同栏目用不同版式。

步骤:

  1. 进「栏目管理」→「编辑」
  2. 找到「列表模板」或「详情模板」
  3. 填模板文件名(不带 .html)
  4. 点「保存」
输入框填什么结果
列表模板grid用 view/主题/node/grid.html
详情模板news用 view/主题/article/news.html

例子:

栏目列表模板效果
产品中心grid网格版式
案例masonry瀑布流
新闻不填用默认列表
文本
只填文件名,不带 .html,不带目录。
找不到文件会自动用默认模板,不会白屏。

优先级:
内容自己的「内容模板」> 栏目的详情模板 > 默认模板

模板没生效?→ 看 怎么换模板

导航是怎么出来的#

页头那排导航,现在由「导航组」决定,不是直接按栏目树排。

想在页头显示哪些栏目、叫什么名字、要不要加外链、做不做二级,都在后台「导航管理」里配。

最省事的用法:

  1. 后台「内容」→「导航管理」,新建一个导航组
  2. 把要显示的栏目放进去
  3. 勾「设为默认组」
  4. 前台页头就用这一套

想让不同大栏目显示不同导航:在「栏目编辑」里给顶级栏目选「导航组」。

详细步骤 → 看 导航组

页头模板里用的是 $primary_nav:

HTML
{loop $primary_nav as $nav}
<li>
  <a href="{$nav.url}">{$nav.name}</a>
  {if !empty($nav.children)}
  <ul>
    {loop $nav.children as $sub}
    <li><a href="{$sub.url}">{$sub.name}</a></li>
    {/loop}
  </ul>
  {/if}
</li>
{/loop}

页脚 / 侧边栏想按栏目树列,继续用 $nodes:

HTML
{loop $nodes as $nav}
  {if in_array($nav.slug, ['about', 'contact', 'faq'])}
  <a href="/list/{$nav.slug}">{$nav.name}</a>
  {/if}
{/loop}

模板语法记不住?→ 看 模板标签速查

栏目页模板里能拿到什么#

变量是什么
$node当前栏目:名称、slug、描述、配图
$model当前栏目绑的模型
$list本页内容列表
$pager分页信息
$primary_nav页头导航(导航组驱动,含二级与外链)
$nodes栏目树(页脚 / 侧边栏用)
$hot本页最热 5 条
$tags本页内容的标签
$seo标题、关键词、描述

常用写法:

HTML
{* 栏目描述 *}
{if !empty($node.description)}
<p>{$node.description}</p>
{/if}

{* 分页,直接用内置的 *}
{include common/pager}
文本
分页两个规则:
1) 翻页链接用 ?page=N,不是 /list/xxx/2
2) 页码用 $pager.pages,不要写 range(1, $pager.last_page)
   页多了会生成巨大的空白 HTML,页面会很慢。

常见问题#

问题怎么办
栏目页 404看 slug 是不是空的、模型有没有选、内容是不是全是草稿
导航顺序乱排序值越大越靠前。批量改成 100、90、80
删了栏目,内容去哪了内容还在,但进不了任何列表页。删之前先移走
想让栏目只给会员看在模板里判断,或用会员插件的 VIP 功能

只给会员看的写法:

HTML
{if !empty($user) && $user.level >= 2}
  {$article.content|raw}
{else}
  <div>本节内容仅会员可见,<a href="/member/vip">开通会员</a></div>
{/if}

下一步#

没找到答案? 在后台「缓存与维护 → 系统体检」里看环境是否正常;仍无解就打开 server_debug.php 复现一次,页面会直接告诉你异常文件与行号。