导入的 Order Printer 模板问题排查

从旧版 Order Printer 应用向新的 Shopify Order Printer 应用迁移模板时,您的 Liquid 变量会更新以确保与新应用的兼容性。在极少数情况下,您可能需要对导入的模板进行问题排查。

如果您导入的模板无法正常打印,则您可能需要手动编辑您在新的 Shopify Order Printer 应用中的模板代码。请查看以下模板可能无法正确导入的最常见原因:

  • 模板包含自定义 CSS
  • 模板包含元字段
  • Liquid 变量可能无法正确更新

在此页面上,您可以找到关于在将自定义模板导入到新的 Shopify Order Printer 应用时如何排查潜在问题的详细信息。

更新常见的 CSS 设计自定义项

如果您迁移的模板包含自定义 CSS,那么您可能需要手动更新模板中的 CSS 代码,才能正确显示图片、自定义字体、logo 或条码等设计元素。

更新元字段变量

要访问元字段,您需要指定该元字段的命名空间,并且无需将 .value 添加到变量中。详细了解元字段定义

例如,请使用 product.metafields.custom.manufacturerid 变量,而不是 product.metafields.custom.manufacturerid.value 变量。

要查找每个元字段的命名空间值,请参阅 Shopify 后台中的自定义数据页面。元字段定义按其引用的对象(例如产品、多属性或订单)进行分组。

更新常用 Liquid 变量

在大多数情况下,您的 Liquid 变量会在迁移过程中自动更新。但是,如果您的模板未正确迁移,并且您使用了本节中列出的任何变量,则可能需要手动将旧变量替换为新变量。Shopify Order Printer 应用使用的变量与旧版 Order Printer 应用不同。

例如,如果您使用 date 变量,则需要将其替换为 created_at 变量。

订单变量

在 Shopify Order Printer 应用中,订单变量的使用方式有所不同。要访问订单变量,您需要添加 order. 前缀。例如,要访问 billing_address 变量,您需要使用 order.billing_address

以下常用订单变量无需添加 order. 前缀即可访问:

  • line_items
  • tax_lines
  • fulfillments
  • transactions
  • refunds
  • shipping_methods
  • customer

例如,若要访问订单项目变量,您可以使用 line_itemsorder.line_items

您还可以为模板创建自己的别名。例如,您可以使用 {% assign fulfillments_count = order.fulfillments | size %} Liquid 语法,然后在代码中使用 {{ fulfillments_count }} 来引用它。

订单变量
旧版 Order Printer 应用中的变量新版 Shopify Order Printer 应用中的变量
line_items
  • 已退款的订单项目 不包含在 line_items 变量中。请查看以下详细信息:
    • 您可以使用 refunds.<each>.refund_line_items 变量来访问已退款的订单项目。请查看以下示例。
      {% assign refunded_line_items = refunds | map: "refund_line_items" | map: "line_item" %}
    • 如果需要,您可以将已退款的订单项目加入到 line_items 集合中。请查看以下示例。
      {% assign refunded_line_items = order.refunds | map: "refund_line_items" | map: "line_item" %} {% assign line_items_with_refunded = order.line_items | concat: refunded_line_items | uniq %}
    • 您应确保包含 | uniq 筛选器,以避免已退款的订单项目重复。
  • 小费订单项目 不包含在 line_items 变量中。请查看以下详细信息:
    • 您可以使用 tip_line_items 变量访问小费订单项目。
    • 如果需要,您可以将 tip_line_items 加入到 line_items 集合中。请查看以下示例。
      {% assign line_items_with_tips = order.line_items | concat: order.tip_line_items %}
  • 若要模拟旧版 Order Printer 的 line_items 集合,您可以使用以下示例代码。
    {% assign refunded_line_items = refunds | map: "refund_line_items" | map: "line_item" %} {% assign all_line_items = order.line_items | concat: refunded_line_items | concat: order.tip_line_items | uniq %} {% for line_item in all_line_items %} ... {% endfor %}
credit_card请使用 transactions.<each>.payment_details 变量,以获取订单中每笔交易的付款详细信息。
current_shipping_priceshipping_price
date请使用 created_at 变量。使用 date 筛选器设置时间戳格式,例如 {{ order.created_at | date: "%B %e, %Y" }}
gatewaysunique_gatewaystransactions.<each>.gateway
order_currencycurrency
processed_at请使用 created_at 变量。它包含来自 GraphQL API 的 order.processed_at 的值,表示订单处理的实际时间,而不是订单导入 Shopify 的时间。它与旧版 Order Printer 应用中的 order.processed_at 相同。您可以使用 date 筛选器来设置时间戳的格式,例如使用 {{ order.created_at | date: "%B %e, %Y" }}
payment_transactions

在 Liquid 语法中,通过 where 或通过循环和内部 if 语句来筛选 order.transactions 以查找 kind 状态。请查看以下示例。

{% assign sale_transactions = order.transactions | where: "kind", "sale" %} {% assign capture_transactions = order.transactions | where: "kind", "capture" %} {% for transaction in transactions %} {% if transaction.kind == "sale" or transaction.kind == "capture" %} Transaction ID: {{ transaction.id }} Kind: {{ transaction.kind }} Amount: {{ transaction.amount | money }} {% endif %} {% endfor %}

{% assign sale_transactions = order.transactions | where: "kind", "sale" %} {% assign capture_transactions = order.transactions | where: "kind", "capture" %} {% assign payment_transactions = sale_transactions | concat: capture_transactions %}

refund_transactions使用 Liquid 语法中的 where,或者使用循环和其内的 if,通过 order.transactions 筛选出对应的 kind 状态,如下例所示。
{% assign refund_transactions = order.transactions | where: "kind", "refund" %}
shipping_lineshipping_methods | first
shipping_linesshipping_methods
show_line_item_taxestax_lines.size > 0。您可以在模板的开头将其定义为一个变量并在稍后多次引用,如下例所示。
{% if tax_lines.size > 0 %} {% assign show_line_item_taxes = true %} {% else %} {% assign show_line_item_taxes = false %} {% endif %}
total_taxtax_price
total_paidnet_payment

订单项目变量

订单项目变量
旧版 Order Printer 应用中的变量新版 Shopify Order Printer 应用中的变量
fulfillable_quantityquantity - successfully_fulfilled_quantity
fulfilledquantity == successfully_fulfilled_quantity
nametitle
product_titleproduct.title
unit_discountquantity ? line_level_total_discount / quantity : 0
variant_titlevariant.title
weightgrams

发货变量

发货变量
旧版 Order Printer 应用中的变量新版 Shopify Order Printer 应用中的变量
datecreated_at

商店变量

商店变量
旧版 Order Printer 应用中的变量新版 Shopify Order Printer 应用中的变量
owneraccount_owner.name
addressshop.address.address1
address2shop.address.address2
cityshop.address.city
countryshop.address.country
country_codeshop.address.country_code
provinceshop.address.province
province_codeshop.address.province_code
zipshop.address.zip

地址变量

地址变量
旧版 Order Printer 应用中的变量新版 Shopify Order Printer 应用中的变量
latitudeaddress 变量引自 location 属性,则 location 对象本身即包含经度和纬度。
longitudeaddress 变量引自 location 属性,则 location 对象本身即包含经度和纬度。

退款变量

退款变量
旧版 Order Printer 应用中的变量新版 Shopify Order Printer 应用中的变量
date请使用 created_at 变量。使用 date 筛选器设置时间戳格式,例如 {{ order.created_at | date: "%B %e, %Y" }}

配送行变量

配送行变量
旧版 Order Printer 应用中的变量新版 Shopify Order Printer 应用中的变量
current_priceprice
priceoriginal_price

交易变量

以下交易变量已被删除,无法在 Shopify Order Printer 应用中替换:

  • authorization
  • message
  • test

多属性变量

多属性变量
旧版 Order Printer 应用中的变量新版 Shopify Order Printer 应用中的变量
gramsweight

元字段变量

若要访问某个元字段,您需要指定该元字段的 命名空间,并且无需将 .value 添加到变量中。 详细了解元字段定义

例如,使用 product.metafields.custom.manufacturerid 变量,而不是 product.metafields.manufacturerid.value 变量。

若要确定每个元字段的 命名空间 值,请参阅 Shopify 后台中的自定义数据页面。元字段定义按其引用的对象(例如产品、多属性或订单)进行分组。

筛选器映射

筛选器映射
旧版 Order Printer 应用中的筛选器名称新版 Shopify Order Printer 应用中的筛选器名称
files_urlfile_url
payment_methodpayment_methods请在订单交易中使用 transaction.gateway_display_name 字段。付款方式不再归类到特定类型,例如 {信用卡、借记卡、银行转账}。旧版 Order Printer 应用仅将当前可用的一小部分支付网关映射到这些类别。支付网关提供商会自行管理客户使用的付款方式类型。