【问题标题】:Disable certain Shopify apps on certain pages在某些页面上禁用某些 Shopify 应用
【发布时间】:2025-12-31 11:00:17
【问题描述】:

我们的商店安装了大约 20 个应用程序。在不同的页面上使用不同的应用程序。例如,有些应用只在产品页面上使用。

但是,我看到所有应用程序都加载到每个页面上。查看页面源代码,我看到 JavaScript 函数 asyncLoad 是内置 {{ content_for_header }} 变量的一部分。此函数为每个页面上的所有应用程序加载脚本。那么,我可以以某种方式限制它吗?我的意思是-避免下载我不在特定页面上使用的脚本/css/任何应用程序。例如,在主页上,我只需要几个处于活动状态的应用程序,而不是全部 20 个。在 docs 或 Google 中没有找到答案。

【问题讨论】:

    标签: shopify shopify-app


    【解决方案1】:

    听起来您已经了解了很多关于 Shopify 如何允许应用加载其脚本的知识,所以您已经大功告成了!

    当我需要选择性地禁用应用程序时,我已使用以下内容将它们从 asyncLoad 函数中删除:

    {% capture modified_content_for_header %}{{ content_for_header }}{% endcapture %}
    {% if template.name == 'index' %}
      {% assign modified_content_for_header = modified_content_for_header | remove: 'some_app_url.js,' %}
    {% endif %}
    <!-- If you have a lot of templates you are checking, a case/when using template.name might be appropriate -->
    {{ modified_content_for_header }}
    

    我喜欢使用 {% if template.name == value %} 而不是 {% if template contains value %} 进行模板检查,因为这样可以确保我不会意外得到模板后缀的误报出于某种原因包含其他模板类型之一,例如 collection.alternate_product_layout 或类似的愚蠢的东西。

    免责声明:通过删除第三方应用程序的脚本文件来弄乱它们可能会产生意想不到的副作用,因此请务必谨慎行事,并在未发布的主题上进行彻底测试!

    【讨论】:

    • 嗨。我有一个与此答案相关的问题。我有一个可以添加到主题代码中的应用程序。有没有办法只在某个页面上动态安装应用程序?我们不希望用户在他们想要应用的页面上手动添加应用
    • @YahyaRehman - 这是个好问题!您可以尝试查看 Shopify 最近添加的 App snippets & sections - 我还没有任何经验,但它可能能够满足您的需求。