Как вывести категории Есть решение

Всем привет,

Вывожу категории следующим кодом:

{$cats=$wa->shop->categories(1, null, true, true)}
<table cellspacing="0" cellpadding="0" width="100%" height="80px">
<tr align="center">
{foreach $cats as $categories}
<td>
<a href="http://{$categories.url}" target="_blank" rel="nofollow"><br>
<img src="img/{$category.params.image}"><br>
{$categories.name}<br>
<br>
</a>
</td>
{/foreach}
</tr>
</table>

Как ограничить количество выводимых категорий и исключить активную категорию из списка?

Заранее благодарен!

3 ответа

  • 1
    Игорь 17 октября 2015 17:07 #

    Знатоки в отпуске(

  • 3
    Rat Laughter Партнер-разработчик 19 октября 2015 10:27 # Решение

    Так вроде должно сработать:

    {$cats = $wa->shop->categories(1, null, true, true)}
    {$cats_count = 0}
    <table cellspacing="0" cellpadding="0" width="100%" height="80px">
        <tr align="center">
            {foreach $cats as $categories}
                {* условие для отображения всех категорий, кроме текущей *}
                {if $categories.id == $category.id|default:null}
                    {continue}
                {else}
                    {$cats_count = $cats_count + 1}
                {/if}
                {* ограничение количества *}
                {if $cats_count > 5}
                    {break}
                {/if}
                <td>
                    <a href="http://{$categories.url}" target="_blank" rel="nofollow"><br>
                        <img src="img/{$category.params.image}"><br>
                        {$categories.name}<br><br>
                    </a>
                </td>
            {/foreach}
        </tr>
    </table>
    • +2
      Игорь Игорь 19 октября 2015 11:49 #

      Огромное человеческое спасибо, вы очень помогли! , это работает)
      Это для того чтобы выводить соседние категории той в которой находишься, сделал так:

      {$cats = $wa->shop->categories($category['parent_id'], null, true, true)}
      {$cats_count = 0}
      <table cellspacing="0" cellpadding="0" width="100%" height="80px">
          <tr align="center">
              {foreach $cats as $categories}
                  {* условие для отображения всех категорий, кроме текущей *}
                  {if $categories.id == $category.id|default:null}
                      {continue}
                  {else}
                      {$cats_count = $cats_count + 1}
                  {/if}
                  {* ограничение количества *}
                  {if $cats_count > 5}
                      {break}
                  {/if}
                  <td>
                      <a href="http://{$categories.url}" target="_blank" rel="nofollow"><br>
                          <img src="img/{$category.params.image}"><br>
                          {$categories.name}<br><br>
                      </a>
                  </td>
              {/foreach}
          </tr>
      </table>

      Хорошо ли подходит для этой цели: $category['parent_id']? или $category.parent_id как правильней? оба работают.

      • +2

        Разницы нет, по-моему. Второй вариант просто менее "многословный". А первый можно использовать для динамического указания ключа массива, например (пример простой и не универсальный — просто для демонстрации моих слов):

        {if $category.parent_id}
            {$id = $category.parent_id}
        {else}
            {$id = $category.id}
        {/if}
        
        Категория верхнего уровня: {$category[$id]|print_r:true}

        Тут используется запись со скобками, потому что ключ элемента массива определяется динамически и заранее неизвестен.

  • 2
    {if $categories@iteration > 5}
    {break}
    {/if}
    

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите