使用 Liquid 根据页面显示不同的 .js 嵌入 URL
Using Liquid to display different .js embeds depending on page URL
我正在尝试让 Shopify 产品系列页面根据当前页面的 URL 在页面的特定部分显示不同的 .js 嵌入。
这可以使用 {% if page.url == %}
来完成吗?如果可以,我如何获得页面 URL 的变体和特定的嵌入代码?
页面 URL 如下所示:
https://www.example.com/collections/technology/technology-connected-home
嵌入代码如下所示:
<script type="text/javascript" src="https://apps.example.com/app/js/18218989163.js"></script>```
每个 Shopify 商店都有不同类型的页面:索引(也称为主页)、产品、产品系列、页面、博客、文章和购物车。这里是full list的页面类型。
因此,此 page.url
仅适用于 page
类型的页面对象,对于所有其他类型,您需要使用正确的页面对象来获取 url
:
collection.url
product.url
- 等...
在您的情况下,我建议使用 case/when
,将您的逻辑添加到片段中,然后 render
将其添加到 theme.liquid
。
这是一个例子:
{% if request.page_type == 'page' %}
{% case page.url %}
{% when '/pages/about-us' %}
{{ 'pages__about-us.js' | script_tag }}
{% when '/pages/contact-us' %}
{{ 'pages__contact-us.js' | script_tag }}
{% else %}
{{ 'pages__generic.js' | script_tag }}
{% endcase %}
{% endif %}
您必须在创建 case/when
之前检查 request.page_type
,或者另一种方法是检查代码段顶部的类型,例如:
{% comment %} Set page object type {% endcomment %}
{% case request.page_type %}
{% when 'page' %}
{% assign page_object = page %}
{% when 'collection' %}
{% assign page_object = collection %}
{% when 'product' %}
{% assign page_object = product %}
{% endcase %}
{% comment %} Load JS based on page URL{% endcomment %}
{% case page_object.url %}
{% when '/pages/about-us' %}
{{ 'pages__about-us.js' | script_tag }}
{% when '/pages/contact-us' %}
{{ 'pages__contact-us.js' | script_tag }}
{% else %}
{{ 'pages__generic.js' | script_tag }}
{% endcase %}
这不是一个万无一失的解决方案,但它应该足以让您在此基础上进行构建。
祝你好运!
我建议使用 page.handle 并确定句柄。我不相信 page.url 会做你需要的事
您也可以试试这个,因为 handle 永远无法更改。
{% case page.handle %}
{% when 'about-us' %}
{{ 'pages_about-us.js' | script_tag }}
{% when 'contact-us' %}
{{ 'pages_contact-us.js' | script_tag }}
{% else %}
{{ 'pages_generic.js' | script_tag }}
{% endcase %}
我正在尝试让 Shopify 产品系列页面根据当前页面的 URL 在页面的特定部分显示不同的 .js 嵌入。
这可以使用 {% if page.url == %}
来完成吗?如果可以,我如何获得页面 URL 的变体和特定的嵌入代码?
页面 URL 如下所示:
https://www.example.com/collections/technology/technology-connected-home
嵌入代码如下所示:
<script type="text/javascript" src="https://apps.example.com/app/js/18218989163.js"></script>```
每个 Shopify 商店都有不同类型的页面:索引(也称为主页)、产品、产品系列、页面、博客、文章和购物车。这里是full list的页面类型。
因此,此 page.url
仅适用于 page
类型的页面对象,对于所有其他类型,您需要使用正确的页面对象来获取 url
:
collection.url
product.url
- 等...
在您的情况下,我建议使用 case/when
,将您的逻辑添加到片段中,然后 render
将其添加到 theme.liquid
。
这是一个例子:
{% if request.page_type == 'page' %}
{% case page.url %}
{% when '/pages/about-us' %}
{{ 'pages__about-us.js' | script_tag }}
{% when '/pages/contact-us' %}
{{ 'pages__contact-us.js' | script_tag }}
{% else %}
{{ 'pages__generic.js' | script_tag }}
{% endcase %}
{% endif %}
您必须在创建 case/when
之前检查 request.page_type
,或者另一种方法是检查代码段顶部的类型,例如:
{% comment %} Set page object type {% endcomment %}
{% case request.page_type %}
{% when 'page' %}
{% assign page_object = page %}
{% when 'collection' %}
{% assign page_object = collection %}
{% when 'product' %}
{% assign page_object = product %}
{% endcase %}
{% comment %} Load JS based on page URL{% endcomment %}
{% case page_object.url %}
{% when '/pages/about-us' %}
{{ 'pages__about-us.js' | script_tag }}
{% when '/pages/contact-us' %}
{{ 'pages__contact-us.js' | script_tag }}
{% else %}
{{ 'pages__generic.js' | script_tag }}
{% endcase %}
这不是一个万无一失的解决方案,但它应该足以让您在此基础上进行构建。
祝你好运!
我建议使用 page.handle 并确定句柄。我不相信 page.url 会做你需要的事
您也可以试试这个,因为 handle 永远无法更改。
{% case page.handle %}
{% when 'about-us' %}
{{ 'pages_about-us.js' | script_tag }}
{% when 'contact-us' %}
{{ 'pages_contact-us.js' | script_tag }}
{% else %}
{{ 'pages_generic.js' | script_tag }}
{% endcase %}