tag:主题-Theme

主题-Theme

  • include
  • render
  • javascript
  • section
  • sections

include

包含某个snippets文件(小部件)

语法:

{% include 'filename' %}

include的用法和render是一样的,详细看下面的render

render

关于render:

  • 呈现代码片段应用程序块。(也就是snippets里面的文件,也可以叫做小部件)
  • 代码片段应用块内部,您无法直接访问在代码片段或应用块外部创建的变量。但是,您可以将变量指定为参数, 以便将外部变量传递给代码片段
  • 在fecify中,代码片段小部件文件,都放到了snippets文件夹里面,您可以在sections下的卡片文件里面使用render直接引入
  • 也可以在snippets文件夹的一个代码片段文件里面,使用render引入另外一个代码片段文件,也就是说snippets文件夹下的文件,是可以使用render相互引用的
  • 引用后,代码片段文件里面的内容,将嵌入到引用的地方,相当于代码嵌入进来。

虽然您无法直接访问已创建的变量,但可以访问全局对象,以及任何可在代码片段或应用程序块外部直接访问的对象。

  • 例如,产品模板内的 snippet 或 app block 可以访问product对象,而某个部分内的 snippet 或 app block 可以访问section对象。

在代码片段或应用程序块之外,您无法访问在代码片段或应用程序块内创建的变量。

1.语法:

  • filename: 要呈现的代码片段的名称,不带.liquid扩展名
{% render 'filename' %}

2.参数:for

  • 不常用
{% render 'foo' for collection.products %}

会对 collection.products 里的每一个元素执行一次(render 'foo'),并且把当前项赋值给变量名 foo, 您在foo.liquid里面可以直接使用,譬如:{{ foo.title }}

举例:

{% render 'foo' for collection.products %}

snippets文件:foo.liquid

  • collection.products是一个数组,对数组进行循环,每一个子项,执行一次 render 操作,foo就是子项的值,譬如:{{ foo.title }}
<div class="product">
  <h3>{{ foo.title }}</h3>
  <span>{{ foo.price }}</span>
</div>

3.参数:with

  • 不常用

语法:

{% include 'foo' with 'bar' %}

举例:

// 1.数据
{
  "bar": {
    "title":"Macbook Pro",
    "price":19999
  }
}


// 2.模版
{% include 'foo' with bar %}


// 3.snippet:foo.liquid
<h2>{{ foo.title }}</h2>
<p>{{ foo.price }}</p>


// 4.结果
<h2>Macbook Pro</h2>
<p>19999</p>

4.将变量传递给代码片段

  • 常用

语法:

{% render 'filename', variable: value %}

可以将外部变量,传递到代码片段小部件文件,在小部件文件里面可以直接使用该变量

举例:

// 1.数据
{
 "my_product":{
   "title":"product my title",
   "price":23.33
 }
}


// 2.代码
{% render 'product-card', product: my_product, show_price: true %}


// 3.snippet:product-card.liquid
<div class="card">
  <h3>{{ product.title }}</h3>
  {% if show_price %}
    <p>{{ product.price | currency_code }}</p>
  {% endif %}
</div>

// 4.输出
<div class="card">
  <h3>product my title</h3>
    <p>$23.33</p>
</div>

javascript

js片段

语法:

  • javascript_code:JavaScript 代码。
{% javascript %}
  javascript_code
{% endjavascript %}

和直接使用<script></script>标签不同的是

1.使用{% javascript %},代码片段将不在当前位置显示,而是放到HTML页面的最后面执行(js放到最后可以加快渲染UI)

2.对js代码会进行压缩(去掉回车,空白等无效字符,减少体积)

section

加载section文件

  • 一般都是在layout/theme.liqud入口文件里面使用
  • 加载section文件(sections文件夹里面的文件),也就是一个liquid文件

1.语法

{% section 'js-group' %}

将会加载section文件:sections/js-group.liquid文件

说明:

  • fecify目前,只有在layout/theme.liqud入口文件使用section标签

关于section更多信息,参看:Section深度解析

sections

加载section group

  • 加载一个section group,打开该文件,可以看到是一个json格式的文件,里面是配置信息,譬如:sections/header-group.liquid
  • 这个json文件里面,配置了多个section,进而加载多个section,因此是一个组合
  • 一般页面的头部header,footer会用到sections

语法:

{% sections 'header-group' %}

对应的文件是:sections/header-group.liquid,打开这个文件,可以看到里面是一个json,有2个子项

  • name:section group的名称
  • sections:配置的子项,每一个子项是一个section

对section的更多信息,参看: Sections详解

Copyright © fecify.com 2025 all right reserved,powered by Gitbook该文件修订时间: 2025-09-06 10:49:48

results matching ""

    No results matching ""