2014-09-26 4 views
0

У меня есть небольшая проблема относительно smarty и OXID eShop. Получив кучу категорий, я пытаюсь отображать только категории в специальном диапазоне «сортировочный номер». Все ниже 100 должно отображаться. Но он также отображает элементы> 100.Smarty проблема с вложенными условными операторами

Вот мой фрагмент кода:

[{foreach from=$oxcmp_categories item=ocat key=catkey name=root}] 
    [{if $ocat->getIsVisible() }] 
     [{if ((int)$ocat->oxcategories__oxsort <100) }] 

      [{if $smarty.foreach.root.index % 3 == 0}] 
       <div style="clear: left;"></div> 
       <div class="mainMenu sub_[{$smarty.foreach.root.index}]"> 
        <div class="mm_header"> 
         <p class="mm_headline">[{$ocat->oxcategories__oxtitle->value}]</p> 
        </div> 
        <div> 
        <img src="[{if $ocat->getThumbUrl() != ''}] [{$ocat->getThumbUrl()}] [{else}] [{'http://placehold.it/299x230'}] [{/if}]" alt=""> 
        <p class="mm_desc">[{$ocat->oxcategories__oxdesc}]</p> 
       </div> 
       </div> 

      [{else}] 
       <div class="mainMenu sub_[{$smarty.foreach.root.index}]"> 
        <div class="mm_header"> 
        <p class="mm_headline">[{$ocat->oxcategories__oxtitle->value}]</p> 
       </div> 
       <div> 
        <img src="[{if $ocat->getThumbUrl() != ''}] [{$ocat->getThumbUrl()}] [{else}] [{'http://placehold.it/299x230'}] [{/if}]" alt=""> 
        <p class="mm_desc">[{$ocat->oxcategories__oxdesc}]</p> 
       </div> 
      </div> 
      [{/if}] 
     [{/if}] 
    [{/if}] 
[{/foreach}] 

Любых идеи, где эта проблема может быть?

+2

Почему вы используете механизм шаблонов для выполнения ваших логических операций? Если вы хотите отображать только 100 категорий, вы должны отправлять только 100 категорий из контроллера/модели в представление. – skrilled

+0

Это может иметь какое-то отношение к вашему приведению в 'int' во втором' if-statement'. Может быть, этот актер делает то, чего вы не ожидаете, потому что это, очевидно, что-то еще, если вам нужно сначала бросить его. Вы можете попробовать посмотреть значение '$ ocat-> oxcategories__oxsort', когда вы передаете его в' int'. Тем не менее, я бы посоветовал вам следовать совету skrilled и отправлять только данные, которые вам нужны. – Bono

ответ

2

AS Я нашел, что вы забыли написать значение в своем порядке сортировки. Вам просто нужно оценить в нижней строке, как я добавил, он должен работать.

[{if ((int)$ocat->oxcategories__oxsort->value <100) }] 
+0

это должно быть отмечено как правильный ответ. – Roman

Смежные вопросы