Jump to content

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


Go to solution Solved by Noxter,

Recommended Posts

Требуется на странице /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}


Edited by sergeypay
Link to post
Share on other sites

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

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

Link to post
Share on other sites
  • Solution

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

Вы забыли создать страницу в админке URL у которой должен быть catalog, из за этого и не срабатывает условие:
{if $page->url=='catalog'}
Link to post
Share on other sites

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

 

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

 

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

Link to post
Share on other sites

.

 

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

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

 

 

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

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

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

Link to post
Share on other sites
  • 1 year later...

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

 

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

{if $products}

 

поставить

 

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

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

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

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

 

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

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

 

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

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

   

 

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

 

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

 

             {else}

            

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

 

            {/if}

Link to post
Share on other sites

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}
Link to post
Share on other sites

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

{if $c@iteration<=3}

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

{elseif $c@iteration<=6}

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

{else}

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

{/if}

 

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

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

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

Link to post
Share on other sites

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

{if $c@iteration<=3}

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

{elseif $c@iteration<=6}

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

{else}

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

{/if}

 

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

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

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

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

Link to post
Share on other sites

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

{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}

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

Link to post
Share on other sites

{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}
 
Link to post
Share on other sites

 

{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}
 

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

Link to post
Share on other sites
  • 4 years later...

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

Edited by get31
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...