# metafield

> Shoplazza Theme 中的 metafield Liquid 对象，以及如何访问父级对象上的元字段，含对象类型和各数据类型的取值方式。

附加到父级 object 的 metafield。

要了解如何访问特定 object 的 metafield，请参阅[访问 metafields](./metafield#访问-metafields)。

| Properties | Description                 |
| :--------- | :-------------------------- |
| `value`    | metafield 的值。 |

下表列出了每种 metafield 类型的值格式：

  
    
      
        Type
      

      
        返回格式
      
    
  

  
    
      
        `single_line_text_field`  

        `multi_line_text_field`
      

      
        [A string](../basics/liquid-types#string)
      
    

    
      
        `product_reference`
      

      
        [A product object](./product)
      
    

    
      
        `collection_reference`
      

      
        [A collection object](./collection)
      
    

    
      
        `file_reference`
      

      
        [A image object](./image)
      
    

    
      
        `number_integer`  

        `number_decimal`
      

      
        [A number](../basics/liquid-types#number)
      
    

    
      
        `date`  

        `date_time`
      

      
        [A date string](../basics/liquid-types#string)
      
    

    
      
        `url`
      

      
        [A URL string](../basics/liquid-types#string)
      
    

    
      
        `json`
      

      
        [A JSON object](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON)
      
    

    
      
        `boolean`
      

      
        [A boolean](../basics/liquid-types#boolean)
      
    

    
      
        `color`
      

      
        [A color string](../basics/liquid-types#string)
      
    

    
      
        `weight`  

        `volume`  

        `dimension`
      

      
        [A measurement object](./measurement)
      
    

    
      
        `rating`
      

      
        [A rating object](./rating)
      
    
  

## 访问 metafields

metafields 的访问路径由两层组成：

* `namespace` - 用于防止冲突的 metafields 分组。
* `key` - metafield 名称。

因此，您可以使用以下语法访问 metafield object：

```liquid
{{ resource.metafields.namespace.key }}
```

```liquid title="代码"
{{ product.metafields.custom.directions.value }}
```

```html title="输出"
Take with a meal
```

## 访问特定类型的 metafields

`json` 类型的 metafields 的 `value` 属性返回一个 [JSON object](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON)。您可以直接在 Liquid 中通过名称或从 0 开始的索引访问该 object 的属性，也可以遍历这些属性。

```liquid title="代码"
Temperature: {{ product.metafields.custom.burn_temperature.value.temperature }}

Unit: {{ product.metafields.custom.burn_temperature.value['unit'] }}

{% for property in product.metafields.custom.burn_temperature.value %}
  {{ property[0] | capitalize }}: {{ property[1] }}
{% endfor %}
```

```html title="输出"
Temperature: 700

Unit: degrees

Temperature: 700
Unit: degrees
Scale: Fahrenheit
```

## 访问对象类型的 metafields

部分 metafield 类型返回一个 object，需通过 `value` 属性访问其中的嵌套数据。

`file_reference`（图片）类型的 metafield 把文件挂在 `value` 下。通过 `value.image` 读取图片，或将 `value` 传给 [`img_url`](../filters/media#img_url) 过滤器：

```liquid title="代码"
{{ product.metafields.custom.spec_file.value.image.src }}

{{ product.metafields.custom.spec_file.value | img_url: '200x' }}
```

`weight`、`volume`、`dimension` 类型的 metafield 返回一个 [measurement object](./measurement)：

```liquid title="代码"
{{ product.metafields.custom.net_weight.value.value }} {{ product.metafields.custom.net_weight.value.unit }}
```

```html title="输出"
20 KILOGRAMS
```

`rating` 类型的 metafield 返回一个 [rating object](./rating)：

```liquid title="代码"
{{ product.metafields.custom.review_score.value.value }} / {{ product.metafields.custom.review_score.value.scale_max }}
```

```html title="输出"
4 / 10.0
```

:::tip
访问 metafield 始终返回一个 metafield object——即使该 metafield 未定义，结果也不是 `nil`。要判断是否有值，请检测 `value`，例如 `{% if product.metafields.custom.spec_text.value != blank %}`。
:::
