Shopify二次开发之五:元字段(Metafields)

2023-12-07 07:36

本文主要是介绍Shopify二次开发之五:元字段(Metafields),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

解释

操作

1、添加Custom data

2、选择特定类型的数据

3、为Page配置元子段和值

4、模板访问


解释

Shopify Metafields 是一种用于存储和管理自定义数据的功能。它们允许商户在商城中的产品、订单、客户、Page等对象上添加自定义字段,以满足特定业务需求。

操作

1、添加Custom data

可以为Products、Pages添加自定义数据,比如选择了Pages,那么在任何Page模板下配置了metafield的值,可以用page.metafields.custom.metafield_name.value访问添加的特定类型的元字段内容,又比如选择了Products,那么在product模板下,可以用product.metafields.custom.metafield_name.value访问为产品添加的特定数据的元字段内容,Collections同上,其它的比如Orders也有特定的用法。

就拿pages做举例

2、选择特定类型的数据

为Pages添加自定义内容的数据type,可以有普通数据type:文本、日期、布尔、json、整数等,也可以有引用数据type:product、file、collection、page等。

3、为Page配置元子段和值

选择一个页面

show all

配置元字段值

4、模板访问

在page.xxx.json,通过.value访问元字段内容

<style>.page_title {font-size: 36px;padding: 24px 20px;background: #900C3F;color: #EFECCA;}.metafiled-section {background: #900C3F;padding: 20px;border-bottom: 1px solid #CFD8DC;display: flex;flex-direction: column;gap: 16px;}.metafiled-section .metafiled-section-title {font-size: 24px;font-weight: bold;line-height: 24px;color: #fff;}.metafiled-section .metafiled-section-content {display: flex;gap: 24px;}.metafiled-section .obj-content {border-radius: 12px;background: #FFFF8D;padding: 16px;}.metafiled-section .obj-content .code {display: flex;gap: 12px;font-weight: bold;padding: 12px 0;}.metafiled-section .obj-content ul {padding-bottom: 12px;border-bottom: 1px solid #900C3F;}.metafiled-section .obj-content ul:last-child {border: none;}.metafiled-section .obj-content ul li {font-weight: bold;padding: 6px 0;display: flex;align-items: center;}.metafiled-section .obj-content ul li span:nth-child(1) {width: 132px;}.metafiled-section .obj-content ul li span:nth-child(2) {flex: 1;}.metafiled-section .obj-content ul li span:nth-child(3) {flex: 1;}.metafiled-section .metafiled-section-content > div {border-radius: 12px;padding: 16px;font-weight: bold;background: #FFFF8D;flex: 1;}
</style><h1 class="page_title">{{ page.title }}</h1><div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: single line text</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.single_line_text.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.single_line_text.value }}</span></div></div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: list single line text</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.list_single_line_text.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.list_single_line_text.value }}</span></div></div><div class="obj-content">{% assign list_line_text = page.metafields.custom.list_single_line_text %}<div class="code"><span>Accessing list_single_line_text :</span><span>{% raw %}{% assign list_line_text = page.metafields.custom.list_single_line_text.value %}{% endraw %}</span></div><div class="code"><span>for loop :</span><span>{% raw %}{% for line_text in list_line_text.value %}{{ line_text }}{% endfor %}{% endraw %}</span></div><ul>{% for line_text in list_line_text.value %}<li><span>{% increment idx %} :</span><span>{% raw %}{{ line_text }}{% endraw %}</span><span>{{ line_text }}</span></li>{% endfor %}</ul></div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: multi line text</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.multi_line_text.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.multi_line_text.value }}</span></div></div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: integer</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.integer.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.integer.value }}</span></div></div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: true of false</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.boolean.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.boolean.value }}</span></div></div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: json</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.json.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.json.value }}</span></div></div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: date</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.date.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.date.value }}</span></div></div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: money</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.money.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.money.value }}</span></div>    </div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: product</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.product.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.product.value }}</span></div></div><div class="obj-content">{% assign product_value = page.metafields.custom.product.value %}<div class="code"><span>Accessing Reference Object :</span><span>{% raw %}{% assign product_value = page.metafields.custom.product.value %}{% endraw %}</span></div><ul><li><span>title :</span><span>{% raw %}{{ product_value.title }}{% endraw %}</span><span>{{ product_value.title }}</span></li><li><span>featured_image :</span><span>{% raw %}{{ product_value.featured_image }}{% endraw %}</span><span>{{ product_value.featured_image }}</span></li><li><span>price :</span><span>{% raw %}{{ product_value.price | money }}{% endraw %}</span><span>{{ product_value.price | money }}</span></li><li><span>url :</span><span>{% raw %}{{ product_value.url | link_to: product_value.url }}{% endraw %}</span><span>{{ product_value.url | link_to: product_value.url }}</span></li></ul></div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: list product</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.list_product.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.list_product.value }}</span></div></div><div class="obj-content"><div class="code"><span>Accessing Reference Object :</span><span>{% raw %}{% assign list_product = page.metafields.custom.list_product.value %}{% endraw %}</span></div><div class="code"><span>for loop :</span><span>{% raw %}{% for product_item in list_product %} {{ product_item.attr }}{% endfor %}{% endraw %}</span></div>{% assign list_product = page.metafields.custom.list_product.value %}{% for product_item in list_product %}<ul><li><span>title :</span><span>{% raw %}{{ product_item.title }}{% endraw %}</span><span>{{ product_item.title }}</span></li><li><span>featured_image :</span><span>{% raw %}{{ product_item.featured_image }}{% endraw %}</span><span>{{ product_item.featured_image }}</span></li><li><span>price :</span><span>{% raw %}{{ product_item.price | money }}{% endraw %}</span><span>{{ product_item.price | money }}</span></li><li><span>url :</span><span>{% raw %}{{ product_item.url | link_to: product_item.url }}{% endraw %}</span><span>{{ product_item.url | link_to: product_item.url }}</span></li></ul>{% endfor %}</div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: collection</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.collection.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.collection.value }}</span></div></div><div class="obj-content">{% assign collection = page.metafields.custom.collection.value %}<div class="code"><span>Accessing Reference Object :</span><span>{% raw %}{% assign collection = page.metafields.custom.collection.value %}{% endraw %}</span></div><ul><li><span>title :</span><span>{% raw %}{{ collection.title }}{% endraw %}</span><span>{{ collection.title }}</span></li><li><span>url :</span><span>{% raw %}{{ collection.url | link_to: collection.url }}{% endraw %}</span><span>{{ collection.url | link_to: collection.url }}</span></li></ul></div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: metaobjects</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.metaobjects.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.metaobjects.value }}</span></div></div><div class="obj-content">{% assign metaObject = page.metafields.custom.metaobjects.value %}<div class="code"><span>Accessing MetaObject :</span><span>{% raw %}{% assign metaObject = page.metafields.custom.metaobjects.value %}{% endraw %}</span></div><ul><li><span>name :</span><span>{% raw %}{{ metaObject.name }}{% endraw %}</span><span>{{ metaObject.name }}</span></li><li><span>gender :</span><span>{% raw %}{{ metaObject.gender }}{% endraw %}</span><span>{{ metaObject.gender }}</span></li></ul></div>
</div>
<div class="metafiled-section"><div class="metafiled-section-title">Metafield Type: file</div><div class="metafiled-section-content"><div class="metafiled-name">Liquid Metafield Code: <span>{% raw %}{{ page.metafields.custom.file.value }}{% endraw %}</span></div><div class="metafiled-value">Metafield Value: <span>{{ page.metafields.custom.file.value }}</span></div></div><div class="obj-content">{% assign file = page.metafields.custom.file.value %}<div class="code"><span>Accessing Reference Object :</span><span>{% raw %}{% assign file = page.metafields.custom.file.value %}{% endraw %}</span></div><ul><li><span>file :</span><span>{% raw %}{{ file | image_url: width: 100 | image_tag }}{% endraw %}</span><span>{{ file | image_url: width: 100 | image_tag }}</span></li></ul></div>
</div>

模板渲染

这篇关于Shopify二次开发之五:元字段(Metafields)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/465032

相关文章

对接Shopify电商平台的流程

对接Shopify平台的流程通常包括以下关键步骤,在整个对接过程中,需要密切关注Shopify的API使用限制、认证机制、数据隐私政策等,确保应用的安全性和合规性。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.创建Shopify应用: 在Shopify后台创建一个新的应用或合作伙伴应用,并获取API密钥和密码。 2.设置OAuth认证: 配置OAuth 2.0认

在eclipse中进行nutch1.7二次开发通过ant编译build.xml出现Class not found javac1.8

把nutch1.7通过svn导入到本地后打算进行二次开发却在开始用ant进行build.xml构建的时候出现Class not found javac1.8 暂且不管哪个sonar没有找到的问题,我们先把那个Class not found :javac1.8的问题: 多半是因为Ant版本太低,低于1.9,无法和java1.8兼容,因为我的java运行环境是1.8的,Ant版本也是1.8,所

NX/UG二次开发—其他—关于CATIA数据转UG数据

可以使用录制UG导入CATIA功能实现,但是根据UG版本的不同,里面的参数设置不同,不能做成通用的版本。对于UG文件名如果需要跟CATIA数据名一致,还需要考虑名字问题。因为CATIA数据的名字里可能还要特殊字符,但UG不支持,还需要写字符处理的功能,开发起来还是有一定的工作量。    以下是我的方案,只需两步(剩下的调用转换器和名字字符处理都交给UG去处理了):    1、直接打开catia

NX/UG二次开发—QT—基于QT平台的UG二次开发

1、新建QT工程,选择C++库,工程名称qtugdemo: 2、添加对话框文件: 3、将UG入口函数考入到qtugdemo.cpp中,并添加如下代码: 4、修改*.pro文件,添加UG函数需要的lib库和头文件包含路径: 5、编译运行,在UG中调用,效果如下:   PS:在开发过程中发现一个问题未解决:当我将QT窗口嵌入到BLOCK UI后,block ui对话框消

NX/UG二次开发—其他—分享几个UG内部函数

1、获取当前模块名称 ?MT_get_appname@@YAPEADXZ 2、获取当前过滤类型个数和激活项?SEL_ask_type_filter_index@@YAH_NPEAH@Z 3、设置当前过滤类型?SEL_set_type_filter_index@@YAXH_N0@Z  4、附加和获取UG标题字符?MT_append_ug_title@@YAXPEAD_N@Z ||?MT_ask_ap

NX/UG二次开发—其他—替换、新增UG启动界面+修改UG背景界面

一、修改UG启动画面(适用于UG6.0以前版本):           1.首先准备软件ResHacker,百度一下就行。   2.到UG的安装目录UGII下拷贝ugraf.exe(记住:复制一个放着备份,以免修改错误),去掉ugraf.exe的只读属性,然后用ResHacker打开,在>>资源>>位图>>130,点击一下,左侧显示的就是UG启动的那张画面,我们需要做的就是拿同样大小的图片用在位

NX/UG二次开发—CAM—获取加工环境下所有程序组、刀具组、加工坐标系并输出名称

以下代码为CAM所有程序组、刀具组、加工坐标系并输出名称   源文件在群共享文件中。(QQ群:1023204977)

NX/UG二次开发—CAM—获取刀轨最低点算法

找了半天帮助文档,没有找到关于刀轨加工Z向最低点的函数,既然没找到,那就换个方法。可以用UF_SETUP_generate_clsf导出程序的刀轨文件,然后再刀轨文件里遍历“GOTO”语句,查看最小的Z值。注意打孔的话还需要找到“CYCLE”语句后面的深度值,用最小Z值减去深度值。 按照这个思路,试运行一下,发现结果没问题。后来编制一个G18\G19的圆弧刀轨,发现出现BUG,因为圆弧的GOTO

NX/UG二次开发—其他—UFUN函数调用Grip程序

在平时开发中,可能会遇到UFUN函数没有的功能,比如创建PTP的加工程序(我目前没找到,哪位大神可以指点一下),可以使用Grip创建PTP,然后用UFUN函数UF_call_grip调用Grip程序。 具体如下截图(左侧UFUN,右侧Grip程序):

NX/UG二次开发—CAM—用户自定义刀轨(UDOP)+ 螺旋铣用例教程 + 源码

用户定义刀轨是指:在需要一种无法由标准制造处理器完成的加工方法时,使用NX以外的处理器生成刀具路径的操作。这可能是你自己的或第三方的代码。入口函数udop。以下是程序框架,可以往里面添加你的代码 extern void udop(char *param, int *status, int parm_len) {     char