概述

Layouts 是主题的基础,通过它可以渲染所有的 templates

Layouts 是 HTML 文件,允许你在单个位置包含多种页面类型上重复的内容。例如,layouts 是包含你可能想要在 <head> 元素中放入的任何内容以及页眉和页脚的理想位置。

你可以编辑默认的 theme.html layouts 文件,或者根据需要创建多个自定义 layouts 文件。你可以在模板级别指定要使用的 layouts 文件,或者是否使用 layouts 文件:

  • 在 JSON templates 中,渲染页面所使用的 layouts 通过 layout 属性指定。
  • 在 HTML 模板中,渲染页面所使用的 layouts 通过 layout helper 指定。

位置

Layouts 文件位于主题的 layout 目录中:

└── theme
├── layout
| ├── theme.html
| ...
├── templates
...

配置定义

因为 layouts 文件是主题的基础,所以在大多数情况下,它们应该遵循标准 HTML 文档的结构。大多数 layout 文件还包含以下 Handlebars 对象:

<!DOCTYPE html>
<html>
<head>
...
{{ content_for_header }}
...
</head>
<body>
...
{{ content_for_layout }}
...
{{ content_for_footer }}
</body>
</html>

内容

Layouts 文件允许你在一个位置包含跨多个页面类型重复的内容。例如,layouts 可能包括页眉和页脚 sections 以及 SEO 元数据

Layouts 文件是 .html 文件,因此内容可以使用标准的 HTML 和 Handlebars 构建。

Layouts 可以访问任何全局 Handlebars 对象,并可以包含以下 Handlebars 对象:

警告

这些对象在 theme.html 中是必须的。如果没有包含对这些对象的引用,那么你将无法使用代码编辑器或像 SHOPLINE CLI 这样的工具保存或更新文件。

content_for_header

content_for_header 对象在 theme.html 中是必须的。它必须放置在 HTML <head> 标签内。该对象会动态加载 SHOPLINE 所需的所有脚本到文档头部。这些脚本是实现如 SHOPLINE 分析、SHOPLINE apps 等功能所必需的。

你不应该尝试修改或解析 content_for_header 对象。如果 content_for_header 发生变化,那么你的 Handlebars 的行为也会随之改变。对 content_for_header 的修改会导致 SHOPLINE 和其他具有官方支持的集成路径的分析发生中断。

content_for_layout

content_for_layout 对象会动态输出每个 templates 的内容。你需要在 HTML 的 <body></body> 标签之间添加对该对象的引用。

content_for_footer 对象会输出 SHOPLINE Apps 相关的代码内容。你需要在 HTML 的 <body></body> 标签之间添加对该对象的引用。

你不应该尝试修改或解析 content_for_footer 对象。如果 content_for_footer 发生变化,那么你的 Handlebars 的行为也会随之改变。对 content_for_footer 的修改会导致 SHOPLINE 和其他具有官方支持的集成路径的分析发生中断。


使用

在处理 layouts 文件时,你需要熟悉以下概念:

支持特定模板的 CSS 选择器

你可以通过在 <body> 标签的类中输出 template 对象的数据,为特定模板创建 CSS 规则。

<body class="template--{{ template.name }}">
...
</body>
.template-collection {
margin-bottom: 2em;
}
这篇文章对你有帮助吗?