Тагът за превключване на ExpressionEngine работи непоследователно

В 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="/bg{title_permalink='meet'}"><img src="{sp_headshot}" /></a>
          <a href="/bg{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="/bg{title_permalink='meet'}"><img src="{sp_headshot}" /></a>
          <a href="/bg{title_permalink='meet'}"><p>{title}</p></a>
        </li>                           
      {/if}
    {/exp:channel:entries}
  </ul>
</li>

Това, което се случва в случай на СПЕШНА И КРИТИЧНА ГРИЖА, е, че с 5-те записа, които имам под това, класовете се връщат така: две, едно, едно, едно, две. Някакви предложения за получаване на поведението, от което се нуждая?


person brunam    schedule 25.10.2012    source източник
comment
Какво се случва, ако извадите параметъра orderby?   -  person Anna_MediaGirl    schedule 25.10.2012
comment
Интересното е, че класовият ред остава същият, две, едно, едно, едно, две. Изглежда, че прилага реда на сортиране преди командата switch.   -  person brunam    schedule 25.10.2012
comment
@brunam просто ви уведомява за нашето предложение за сайт, специфичен за EE (ако вече го поддържате, трябва да свържете акаунта си, така че репутацията ви да се зачита към него) area51.stackexchange.com/proposals/46387/expressionengine   -  person Adrian Macneil    schedule 26.10.2012


Отговори (1)


Разбирам какво имаш предвид. Променливата за превключване прилага логиката си към всички записи, върнати от цикъла на записите - поради което виждате нечетно номериране в изобразената ви страница - защото ги прилага към записи, върнати от цикъла, към които след това прилагате условни условия, за да направите вашето групиране. Можете да използвате параметъра за търсене, за да направите част от това вместо вас, връщайки само записите, които търсите във всеки цикъл. Като този:

<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="/bg{title_permalink='meet'}"><img src="{sp_headshot}" /></a>
      <a href="/bg{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="/bg{title_permalink='meet'}"><img src="{sp_headshot}" /></a>
      <a href="/bg{title_permalink='meet'}"><p>{title}</p></a>
    </li>                           
{/exp:channel:entries}
</ul>
</li>

По този начин всеки цикъл връща САМО съвпадащите елементи, които търсите, елиминирайки необходимостта от условното условие и позволявайки на параметъра за превключване да работи както иска - прилагайки се по редуващ се начин към всеки върнат запис от цикъла.

person Jean St-Amand    schedule 25.10.2012
comment
Работи брилянтно. Благодаря за помощта! - person brunam; 25.10.2012
comment
Можете също така да използвате Stash, за да избегнете циклите на множество канали: записи и да приложите превключвател към изхода на Stash. Но за по-малки сайтове това работи добре; това е просто, че многобройните канали: входове цикли МОГАТ да се превърнат в проблем с производителността. - person adrienne; 27.10.2012