---
title: "Sline 概述"

doc_type: static
doc_category: static
doc_version: v20270301
source_url:
  html: 'https://developer.shopline.com/zh-hans-cn/docs/sline/sline-overview'
  md: 'https://developer.shopline.com/zh-hans-cn/docs/sline/sline-overview.md'
---
# Sline 概述
Sline 是一种模板语言，允许你创建一个模板来托管静态内容，并根据模板的渲染位置动态插入信息。例如，你可以创建一个产品模板，其中包含所有标准的产品属性，如产品图片、标题和价格。然后，该模板可以根据当前正在查看的产品动态地呈现这些属性，显示相应的内容。


## Sline 的使用{#tU3pG}
Sline 被用于动态呈现对象及其属性。你可以通过使用 [tag](#LFv2q) 编写逻辑，使用 [filter](#L5H40) 修改输出。[object](#lvfYC) 及其属性使用Sline 表达式进行呈现，格式为双花括号，如 `{{ 表达式 }}`。此外，三花括号 `{{{ 表达式 }}}` 用于直接输出未经 HTML 转义的内容，使其中的 HTML 标签作为纯文本显示。

> **warning**
>
> 注意：
> 
> Sline 的 tag/filter 完全内部实现，不支持自定义注册。

```typescript
<!-- Render html title -->
<title>
{{ page_title }}
</title>

<!-- Render html meta description -->
{{#if page_description}}
<meta name="description" content="{{ page_description | truncate(150) }}">
{{/if}}

<!-- Render unescaped html -->
<div class="product_description_container">{{{ product.description }}}</div>
```


## Sline 资源{#vVUES}

### 基础知识{#U24bY}
Sline 基础知识主要包含了资源 handle 的创建与使用、逻辑运算符和比较运算符的运用、以及对象及其属性输出的数据类型。在开始使用 Sline 之前，参考 [Sline 基础知识](https://developer.shopline.com/zh-hans-cn/docs/sline/basics.md?lang=zh-hans-cn) 了解该部分的内容。


### Tags{#LFv2q}
Sline 标签用于定义指示模板执行操作的逻辑。标签分隔符内的文本在网页渲染时不会产生可见的输出。

> **note**
>
> 提示
> 
> 标签分为普通标签和自闭合标签
> 
> + 普通标签是以 　`{{# tag_name }}`开头 `{{/ tag_name }}`结尾。
> + 自闭合标签 `{{# tag_name /}}`。

```typescript
{{#if customer != nil}}
  User {{customer.name}} is logged in!
{{/if}}

{{#product_form /}}
```


### Filter{#L5H40}
Sline filter 用于修改变量和对象的输出。可在`{{}}`中或者在 tag 中添加管道符后使用。

一个输出可以使用多个 filter 。它们按从左到右的顺序进行解析。

```typescript
<div class=”product-page”>
  <div class=”product-image”>
    <!-- get the product image link to generate the image tag -->
    {{#image_tag product.featured_image | image_url() /}}
  </div>
  <div class=”product-title”>
    {{ product.title }}
  </div>
  <div class=”product-price”>
    {{ product.price | money() }}
  </div>
</div>
```


### Object{#lvfYC}
Sline 对象代表你可以用来构建主题的变量。对象类型包括但不限于：

+ 店铺资源，如 [collection](https://developer.shopline.com/zh-hans-cn/docs/sline/object/collection.md) 或 [product](https://developer.shopline.com/zh-hans-cn/docs/sline/object/product.md) 及其属性。
+ 用于构建互动性的功能元素，如 [paginate](https://developer.shopline.com/zh-hans-cn/docs/sline/object/paginate.md) 和 `search`。

对象既可以代表单一的数据点，比如 [page_title](https://developer.shopline.com/zh-hans-cn/docs/sline/object/page-title.md)，也可以是一个包含多种属性的结构，比如 [product](https://developer.shopline.com/zh-hans-cn/docs/sline/object/product.md) 。


#### 作用域{#uUWnT}
对象分为全局和局部两种。全局对象可在所有 [主题模板](https://developer.shopline.com/zh-hans-cn/docs/online-store-3-0-themes/theme-structure/templates.md) 中使用，例如 [page_title](https://developer.shopline.com/zh-hans-cn/docs/sline/object/page-title.md)。而由 tag 定义的局部对象仅限在定义它的当前模板文件中使用，例如 [forloop](https://developer.shopline.com/zh-hans-cn/docs/sline/object/forloop.md)。

