Перейти к содержанию
Официальный форум поддержки Simpla

Как вывести все категории на странице /catalog ?


Перейти к решению Решено Noxter,

Рекомендуемые сообщения

Требуется на странице /catalog вывести все названия категорий 1 уровня, соответственно если зайти в категорию должно отображаться подкатегории.

 

В общем у меня все работает как нужно, когда заходишь в категорию 1 уровня подкатегории 2 уровня отображаются отлично, но когда заходишь на страницу site.ru/catalog не отображаются все Главные категории 1 уровня. подскажите как вывести на странице site.ru/catalog все названия категорий 1 уровня?

 

Код полу рабочего варианта

в .htaccess добавлено 
RewriteRule ^catalog/?$    index.php?module=ProductsView  [L,QSA]
для отображения страницы site.ru/catalog и убрать ошибку что такой страницы не существует.

{if $page->url=='catalog'}// пытался отобразить вывыд всех категорий 1 уровня если url == catalog, но в данном случае url вообще не выводится, а так бы был рабочий вариант; но если убрать эту проверку то выводится и категории 1 уровня и подкатегории, вообщем если убрать  вывод категорий 1 уровня в подкатегориях вариант вполне будет рабочий, помогите плиз.
{if $category}
<ul class="catalog_list">
        {foreach $category as $c}
            {if $c->visible}
                <li class="catalog_item">
                    <a href="catalog/{$c->url}">
                        <div class="catalog_image">
                            {if $c->image}
                                <img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}" title="{$c->name|escape}">
                            {else}
                                <img src="design/{$settings->theme|escape}/images/bg/nofoto.png" alt="{$c->name|escape}" title="{$c->name|escape}">
                            {/if}
                        </div>
                        <span class="catalog_name">{$c->name|escape}</span>
                    </a>
                </li>
            {/if}
        {/foreach}
    </ul>
<div class="clear_dot"></div>
{/if}

{if $category->subcategories}
    <ul class="catalog_list">
		{foreach $category->subcategories as $c}
			{if $c->visible}
				<li class="catalog_item">
					<a href="catalog/{$c->url}">
						<div class="catalog_image">
							{if $c->image}
								<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}" title="{$c->name|escape}">
							{else}
								<img src="design/{$settings->theme|escape}/images/bg/nofoto.png" alt="{$c->name|escape}" title="{$c->name|escape}">
							{/if}
						</div>
						<span class="catalog_name">{$c->name|escape}</span>
					</a>
				</li>
			{/if}
		{/foreach}
	</ul>
    <div class="clear_dot"></div>
{/if}
{/if}


Изменено пользователем sergeypay
Ссылка на сообщение
Поделиться на другие сайты

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

пробовал и функции но ничего так и не заработало (( если подскажите рабочий вариант буду очень благодарен.

Ссылка на сообщение
Поделиться на другие сайты
  • Решение

пробовал и функции но ничего так и не заработало (( если подскажите рабочий вариант буду очень благодарен.

Вы забыли создать страницу в админке URL у которой должен быть catalog, из за этого и не срабатывает условие:
{if $page->url=='catalog'}
Ссылка на сообщение
Поделиться на другие сайты

пробовал и функции но ничего так и не заработало (( если подскажите рабочий вариант буду очень благодарен.

 

напишите в личку.

 

еще {foreach $category as $c} не будет работать.

Ссылка на сообщение
Поделиться на другие сайты

.

 

еще {foreach $category as $c} не будет работать.

Да, верно, позже заметил.  {foreach $categories as $c}

 

 

Вы забыли создать страницу в админке URL у которой должен быть catalog, из за этого и не срабатывает условие:

{if $page->url=='catalog'}

Спасибо большое за подсказку, Именно то что нужно было спасибо! 

Ссылка на сообщение
Поделиться на другие сайты
  • 1 год спустя...

А подскажите пожалуйста как после вывода категорий на странице каталог убрать вывод всей продукции?

Ссылка на сообщение
Поделиться на другие сайты

Подобным приемом: вместо

 

<!--Каталог товаров-->
{if $products}
 

поставить

 

<!--Каталог товаров-->
{if $products && $page->url != 'catalog'}

Ссылка на сообщение
Поделиться на другие сайты

Подобным приемом: вместо

 

<!--Каталог товаров-->

{if $products}

 

поставить

 

<!--Каталог товаров-->

{if $products && $page->url != 'catalog'}

Спасибо за помощь все работает!

Если кому понадобится решение, то я сделал так:

 

<!--Каталог товаров-->

            {if $products && $page->url != 'catalog'}

 

               <!-- Список товаров-->

                 ... Здесь блок страниц товаров

   

 

              {elseif $page->url=='catalog'}

 

              <!-- Страница каталог -->

 

             {else}

            

            <h3>Товары не найдены</h3>

 

            {/if}

Ссылка на сообщение
Поделиться на другие сайты

Kors, а подскажи пожалуйста каким условием можно разбить вывод в цикле товаров в bootstrap разметки.
Есть три колонки:
 
<div class="row"></div>
<div class="row row-two"></div>
 <div class="row row-three"></div>
 
Нужно при выводе категорий подменить класс на следующий

{if $categories}
   {foreach $categories as $c}

 <div class="row"> (Вот здесь нужно подменить класс row на row row-two после вывода 3 записей и так далее на класс row row-three.)
     {if $c->visible}
       <a href="catalog/{$c->url}">
       <div class="catalog_image">
            {if $c->image}
              <img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}" title="{$c->name|escape}">
            {/if}
       </div>
      <span>{$c->name|escape}</span>
     </a>
     {/if}

</div>
    {/foreach}
{/if}
Ссылка на сообщение
Поделиться на другие сайты

Использовать что-то типа

{if $c@iteration<=3}

Вывод с первого по третий

{elseif $c@iteration<=6}

Вывод с 4-го по 6-ой

{else}

Вывод с 6-го и далее

{/if}

 

Может не совсем правильно работать, если есть отключенные категории.

Кстати, в Вашем коде тоже есть этот недостаток, могут выводиться пустые <div class="row"></div>.

Для совсем корректной работы надо еще усложнять...

Ссылка на сообщение
Поделиться на другие сайты

Использовать что-то типа

{if $c@iteration<=3}

Вывод с первого по третий

{elseif $c@iteration<=6}

Вывод с 4-го по 6-ой

{else}

Вывод с 6-го и далее

{/if}

 

Может не совсем правильно работать, если есть отключенные категории.

Кстати, в Вашем коде тоже есть этот недостаток, могут выводиться пустые <div class="row"></div>.

Для совсем корректной работы надо еще усложнять...

Спасибо Вам огромное за помощь!

Ссылка на сообщение
Поделиться на другие сайты

Использовать что-то типа

{if $c@iteration<=3}

Вывод с первого по третий

{elseif $c@iteration<=6}

Вывод с 4-го по 6-ой

{else}

Вывод с 6-го и далее

{/if}

 

Может не совсем правильно работать, если есть отключенные категории.

Кстати, в Вашем коде тоже есть этот недостаток, могут выводиться пустые <div class="row"></div>.

Для совсем корректной работы надо еще усложнять...

Извините пожалуйста, но у меня похожий вопрос, но я никак не могу сообразить как сделать.

А как сделать, чтобы в

{foreach $products as $product}

<div class="row">

 ----- Здесь три записи ----

 </div>

 <div class="row">

  ----- Здесь три записи ----

 </div>

 <div class="row">

 ----- Здесь три записи ----

 </div>

{/foreach}

и до бесконечности.

Ссылка на сообщение
Поделиться на другие сайты

{foreach $products as $product}
    {if $product@first || ($product@iteration - 1) is div by 3}<div class="row">{/if}
       .....
    {if $product@last || $product@iteration is div by 3}</div>{/if}
{/foreach}
 
Ссылка на сообщение
Поделиться на другие сайты

 

{foreach $products as $product}
    {if $product@first || ($product@iteration - 1) is div by 3}<div class="row">{/if}
       .....
    {if $product@last || $product@iteration is div by 3}</div>{/if}
{/foreach}
 

Огромнейшее человеческое спасибо!

Ссылка на сообщение
Поделиться на другие сайты
  • 4 года спустя...

у меня стоит вывод название категории к которой принадлежит товар, их может быть несколько (чайник, электро чайник и тд), как сделать вывод чтобы отображало название первой категории а не второй, а то в каталоге может показывать название второй категории, а в карточке товара первой?

Изменено пользователем get31
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...