ExpressionEngine swtich标签工作不一致

bru*_*nam 3 expressionengine switch-statement

在ExpressioneEngine中,我正在创建一个包含条件的列表,这些条件会返回一些奇怪的行为.下面的代码是更大集合的一部分:

<li><h4>DERMATOLOGY</h4>
  <ul>
    {exp:channel:entries channel="specialist" dynamic="no" orderby="sp_order" sort="asc"}
      {if sp_specialty == "sp_dermatology"}
        <li>
          <a href="{title_permalink='meet'}"><img src="{sp_headshot}" /></a>
          <a href="{title_permalink='meet'}"><p>{title}</p></a>
        </li>                           
      {/if}
    {/exp:channel:entries}
  </ul>
</li>
<li><h4>EMERGENCY AND CRITICAL CARE</h4>
  <ul>
    {exp:channel:entries channel="specialist" dynamic="no" orderby="sp_order" sort="asc"}
      {if sp_specialty == "sp_emergency"}
        <li class="{switch='one|two'}">
          <a href="{title_permalink='meet'}"><img src="{sp_headshot}" /></a>
          <a href="{title_permalink='meet'}"><p>{title}</p></a>
        </li>                           
      {/if}
    {/exp:channel:entries}
  </ul>
</li>
Run Code Online (Sandbox Code Playgroud)

在紧急和关键护理的情况下,发生的情况是,根据我的5个条目,类别返回如下:两个,一个,一个,一个,两个.有关获得我需要的行为的任何建议吗?

Jea*_*and 6

我明白你的意思了.switch变量将其逻辑应用于条目循环返回的所有条目 - 这就是你在渲染页面中看到奇数编号的原因 - 因为它将它们应用于循环返回的条目,然后你应用条件来执行条件你的分组.你可以使用搜索参数为你做一些,只返回你在每个循环中寻找的条目.像这样:

<li><h4>DERMATOLOGY</h4>
    <ul>
    {exp:channel:entries channel="specialist" search:sp_specialty="=sp_dermatology"  dynamic="no" orderby="sp_order" sort="asc"}
    <li>
      <a href="{title_permalink='meet'}"><img src="{sp_headshot}" /></a>
      <a href="{title_permalink='meet'}"><p>{title}</p></a>
    </li>                           
{/exp:channel:entries}
</ul>
</li>
<li><h4>EMERGENCY AND CRITICAL CARE</h4>
<ul>
{exp:channel:entries channel="specialist" search:sp_specialty="=sp_emergency" dynamic="no" orderby="sp_order" sort="asc"}
    <li class="{switch='one|two'}">
      <a href="{title_permalink='meet'}"><img src="{sp_headshot}" /></a>
      <a href="{title_permalink='meet'}"><p>{title}</p></a>
    </li>                           
{/exp:channel:entries}
</ul>
</li>
Run Code Online (Sandbox Code Playgroud)

这样每个循环只返回你正在寻找的匹配项,消除了条件的需要,并允许switch param按照自己的意愿运行 - 以交替方式将自身应用于循环中的每个返回条目.