У меня есть небольшая проблема относительно 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}]
Любых идеи, где эта проблема может быть?
Почему вы используете механизм шаблонов для выполнения ваших логических операций? Если вы хотите отображать только 100 категорий, вы должны отправлять только 100 категорий из контроллера/модели в представление. – skrilled
Это может иметь какое-то отношение к вашему приведению в 'int' во втором' if-statement'. Может быть, этот актер делает то, чего вы не ожидаете, потому что это, очевидно, что-то еще, если вам нужно сначала бросить его. Вы можете попробовать посмотреть значение '$ ocat-> oxcategories__oxsort', когда вы передаете его в' int'. Тем не менее, я бы посоветовал вам следовать совету skrilled и отправлять только данные, которые вам нужны. – Bono