You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopify模板中按域名控制collapsible_row-4显示状态的咨询

Shopify 按域名控制区块显示的解决方案

核心思路:用Liquid服务器端判断域名(推荐)

前端window.location是浏览器端执行的代码,而Shopify模板是服务器端渲染后才发送给浏览器,用JS控制会出现加载闪烁、依赖JS的问题。正确做法是用Liquid在模板渲染阶段直接判断域名,控制区块是否输出。

实现步骤:

  • 在对应区块的渲染代码外层包裹Liquid条件判断,用request.host获取当前访问的域名:

    {% if request.host contains '.fr' or request.host contains '.it' %}
      <!-- 放置collapsible_row-4的完整渲染代码 -->
      {% render 'collapsible-row', block: section.blocks | where: "handle", "collapsible_row-4" | first %}
    {% endif %}
    
  • 如果区块是在section的blocks里循环渲染的,修改section的liquid文件:

    {% for block in section.blocks %}
      {% if block.handle == 'collapsible_row-4' %}
        {% if request.host contains '.fr' or request.host contains '.it' %}
          {% render 'collapsible-row', block: block %}
        {% endif %}
      {% else %}
        {% render 'collapsible-row', block: block %}
      {% endif %}
    {% endfor %}
    

前端JS替代方案(仅当无法修改Liquid时使用)

如果必须用前端控制,确保在DOM加载完成后执行代码,避免找不到元素:

document.addEventListener('DOMContentLoaded', () => {
  const host = window.location.hostname;
  const targetRow = document.querySelector('.collapsible_row-4'); // 替换为你区块的实际CSS选择器
  if (targetRow) {
    targetRow.style.display = host.endsWith('.fr') || host.endsWith('.it') ? 'block' : 'none';
    // 也可用类名控制:targetRow.classList.toggle('hidden', !(host.endsWith('.fr') || host.endsWith('.it')))
  }
});

内容的提问来源于stack exchange,提问作者Daniel Shahin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:06:02