Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Shopify部分中的forloop.index出现问题_Loops_Iteration_Shopify_Liquid - Fatal编程技术网

Loops Shopify部分中的forloop.index出现问题

Loops Shopify部分中的forloop.index出现问题,loops,iteration,shopify,liquid,Loops,Iteration,Shopify,Liquid,我正在Shopify的动态选项卡部分工作,但面临一个问题。我创建了两个循环,一个用于选项卡的href标记,另一个用于关联的内容元素。我需要前者引用后者,但在我当前的代码中,href标记中的输出显示1或2,但在选项卡内容中,它们从3开始。请帮帮我 我的HTML/Liquid: <ul class="tabs-nav"> {%- for block in section.blocks -%} {% if block.type == 'tab-title' %} &

我正在Shopify的动态选项卡部分工作,但面临一个问题。我创建了两个循环,一个用于选项卡的href标记,另一个用于关联的内容元素。我需要前者引用后者,但在我当前的代码中,href标记中的输出显示1或2,但在选项卡内容中,它们从3开始。请帮帮我

我的HTML/Liquid:

<ul class="tabs-nav">
  {%- for block in section.blocks -%}
    {% if block.type == 'tab-title' %}
      <li class="tab-active">
        <a href="#tab-{{ forloop.index | plus: 1 }}">
          {{ block.settings.serv_title }}
        </a>
      </li>
    {% endif %}
  {%- endfor -%}
</ul>
<div class="tabs-stage">
  {%- for block in section.blocks -%}
    {% if block.type == 'tab-content' %}
      <div id="tab-{{ forloop.index }}" style="display: block;">
        {{ block.settings.serv_cont }}
      </div>
    {% endif %}
  {%- endfor -%}
</div>

我认为问题在于设置模式的结构。听起来您当前分别有标题块和内容块的模式(使用当前的配置设置数据,您总共有四个块)。您可以为一个包含相关标题和内容的块使用模式。然后,您只需使用一个for循环(尽管您必须捕获标题、捕获内容,并将每个内容分别输出到HTML中)

话虽如此,使用现有代码,您可以做到这一点(假设设置数据中标题和内容块的数量始终相等,并且它们在拖放编辑器中的顺序正确):

    {%-assign titleIndex=0-%} {%-for section.blocks-%} {%if block.type='选项卡标题“%” {%-assign titleIndex=0 |加:1-%}
  • {%endif%} {%-endfor-%}
{%-assign contentIndex=0-%} {%-for section.blocks-%} {%if block.type='选项卡内容“%” {%-assign contentIndex=0 |加:1-%} {{block.settings.serv_cont} {%endif%} {%-endfor-%}
我认为您的javascript没有那么重要,最好是包含您的设置模式。
$('.tabs-nav a').on('click', function (event) {
  event.preventDefault();
  $('.tab-active').removeClass('tab-active');
  $(this).parent().addClass('tab-active');
  $('.tabs-stage div').hide();
  $($(this).attr('href')).show();
});
$('.tabs-nav a:first').trigger('click');
<ul class="tabs-nav">
  {%- assign titleIndex = 0 -%}
  {%- for block in section.blocks -%}
    {% if block.type == 'tab-title' %}
      {%- assign titleIndex = 0 | plus: 1 -%}
      <li class="tab-active">
        <a href="#tab-{{ titleIndex }}">
          {{ block.settings.serv_title }}
        </a>
      </li>
    {% endif %}
  {%- endfor -%}
</ul>
<div class="tabs-stage">
  {%- assign contentIndex = 0 -%}
  {%- for block in section.blocks -%}
    {% if block.type == 'tab-content' %}
      {%- assign contentIndex = 0 | plus: 1 -%}
      <div id="tab-{{ contentIndex }}" style="display: block;">
        {{ block.settings.serv_cont }}
      </div>
    {% endif %}
  {%- endfor -%}
</div>