第三十一章 公共片段与区块

Ju7CMS 用户手册 · 发布于 2026-10-27 · 更新于 2026-10-27

页头、页脚与全站 meta 抽成公共片段;三个片段各管什么、区块怎么用、改片段必须遵守的四条规矩。

这一章解决什么

页头、页脚、全站 meta 不在每个模板里各写一遍,而是抽成公共片段,由模板用一句话引入。改站点名称、电话、备案号、导航菜单,只改片段,全站生效。

本站主题 theme/576so/ 有三个公共片段:

文件放什么被谁引入
theme/576so/head1.html站头:Logo、主导航、城市下拉、搜索框、手机菜单按钮首页与所有列表/详情页
theme/576so/foot1.html页脚:咨询弹窗、四栏导航、备案与友链、浮动工具条、底部脚本首页与所有列表/详情页
theme/576so/seo/head.html全站 meta:robots、viewport、canonical、Open Graph、结构化数据、css/js 引用、统计脚本所有页面模板

怎么引入

{andvar:include("../../seo/head.html")}{andvar:include("../../head[langid].html")}{andvar:include("../../foot[langid].html")}
要点说明
路径相对谁相对当前模板文件。首页 index1.html 在主题根目录,所以写 seo/head.html;model/list/ 下的模板要退两级,写 ../../seo/head.html
[langid]编译期替换成语言 ID。中文站载入 head1.html、foot1.html;将来加英文版就是 head2.html,模板不用改
只能写在模板里{andvar:include} 是模板令牌,写在正文或 JS 里不会执行
不要循环引用片段里不能再引入引用它的模板;递归超过十层会被截断并写错误日志

三个片段各管什么

head1.html:站头

  • 主导航从 category 表取 followid=0 and ismenu=1 的一级栏目,按 ordnum,autoid 排序。后台把栏目「是否菜单」改成否,导航里就消失,不用改代码。
  • 带下级的栏目(isnav=1)会展开二级面板;面板里再取该栏目的内容,所以「精选 / 全部」两个页签的数据也来自库。
  • 电话是写死在片段里的 tel: 链接;换号码要改 head1.html 与 foot1.html 两处。
  • 城市下拉从 plug_city 表取 islock=1 的分站,点击进入 /城市拼音/。加城市只加表,不动模板(见第二十二章)。

foot1.html:页脚与咨询弹窗

  • 整块咨询表单是页脚里的一段浮层(#lead_pop),点「免费咨询」才出现。字段定义、classid=16 的隐藏域、短信验证码三条件,见第二十章。
  • 四栏导航里「核心业务 / 服务项目 / 资料与支持」三列的链接按栏目 ID 集合取,栏目改名页脚跟着改。
  • 备案号、公安备案、Sitemap、隐私政策链接都在这一段的 foot-legal 里。
  • 浮动工具条与三个脚本(floatbar.js、leadform.js、表单运行库)在文件末尾,删任何一个都会让弹窗或回到顶部失效。

seo/head.html:全站 meta

  • 页面标题与三条基础 meta 由各模板自己写,这个片段只放全站共用的部分,避免重复。
  • {seo_pagetype} 决定输出哪套结构化数据:index 出 WebSite 与 LocalBusiness,list 出面包屑,show 出 Article 与百度熊掌号格式。
  • css/js 的版本号就写在 ju7.css?v=… 与 ju7.js?v=… 上。改完这两个文件必须同步改版本号,否则访客浏览器还在用旧文件;preload 与正式引用必须写同一个地址,否则同一份文件会被下载两遍。
  • 统计信标有两个:站内 plug/stat 与百度统计。站内那个故意写根路径 /plug/stat/stat.js,因为分站页面的 {webroot} 是 /LINHAI/,拼上去会 404。

区块:不用改模板的公共块

「内容 → 区块管理」里可以建命名区块,内容存成站点根的 block/名字.html,模板用一行引入:

{andvar:block("footer-notice")}

适合放「全站公告」「备案变更提示」这类运营内容:编辑在后台改文字,模板不用动。本站当前 block/ 目录为空,没有启用区块;要用时先在后台新建,再把令牌加到目标模板。

区块与片段不是一回事:片段是主题目录里的文件,跟着主题走;区块是站点根的文件,换主题后仍然存在。

改片段的四条规矩

  1. 先备份再改。片段被所有页面引用,改坏一个标点就可能让全站 500。改前把文件复制到站点外,改后先打开首页和任意一章确认。
  2. 片段也吃编译缓存。模板编译产物记录了主模板与所有 include/block 分片的大小和修改时间,改片段会让相关模板自动重编译(批 #302 起)。若改了没反应,先清「缓存管理」,再确认文件确实写到了主题目录。
  3. 版本号要一起升。只改 ju7.css 不改 ?v=,浏览器不会重新下载。
  4. 别在片段里写死城市或单页信息。片段是全站共用的;分站差异用 {c_name} 与条件判断,不要复制一份 head2.html 只为一个城市。

接下来怎么读

  1. 页头页脚里的表单怎么工作:第二十章。
  2. 片段改动为什么会影响所有页面:第二十九章与第三十章。
  3. 改完不生效的排查顺序:第三十三章,三层缓存。