sergeypay Posted July 22, 2015 Report Share Posted July 22, 2015 (edited) Требуется на странице /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 July 22, 2015 by sergeypay Quote Link to post Share on other sites
mishanya Posted July 22, 2015 Report Share Posted July 22, 2015 почему вы не используете ф-ю древовидного вывода категорий? Quote Link to post Share on other sites
sergeypay Posted July 22, 2015 Author Report Share Posted July 22, 2015 почему вы не используете ф-ю древовидного вывода категорий?пробовал и функции но ничего так и не заработало (( если подскажите рабочий вариант буду очень благодарен. Quote Link to post Share on other sites
Solution Noxter Posted July 22, 2015 Solution Report Share Posted July 22, 2015 пробовал и функции но ничего так и не заработало (( если подскажите рабочий вариант буду очень благодарен.Вы забыли создать страницу в админке URL у которой должен быть catalog, из за этого и не срабатывает условие: {if $page->url=='catalog'} Quote Link to post Share on other sites
mishanya Posted July 22, 2015 Report Share Posted July 22, 2015 пробовал и функции но ничего так и не заработало (( если подскажите рабочий вариант буду очень благодарен. напишите в личку. еще {foreach $category as $c} не будет работать. Quote Link to post Share on other sites
sergeypay Posted July 23, 2015 Author Report Share Posted July 23, 2015 . еще {foreach $category as $c} не будет работать.Да, верно, позже заметил. {foreach $categories as $c} Вы забыли создать страницу в админке URL у которой должен быть catalog, из за этого и не срабатывает условие: {if $page->url=='catalog'} Спасибо большое за подсказку, Именно то что нужно было спасибо! Quote Link to post Share on other sites
sergeypay Posted July 23, 2015 Author Report Share Posted July 23, 2015 Не нахожу кнопки чтобы поставить что тема решена? Quote Link to post Share on other sites
akvk Posted August 4, 2016 Report Share Posted August 4, 2016 А подскажите пожалуйста как после вывода категорий на странице каталог убрать вывод всей продукции? Quote Link to post Share on other sites
Kors Posted August 5, 2016 Report Share Posted August 5, 2016 Подобным приемом: вместо <!--Каталог товаров-->{if $products} поставить <!--Каталог товаров-->{if $products && $page->url != 'catalog'} Quote Link to post Share on other sites
akvk Posted August 5, 2016 Report Share Posted August 5, 2016 Подобным приемом: вместо <!--Каталог товаров-->{if $products} поставить <!--Каталог товаров-->{if $products && $page->url != 'catalog'}Спасибо за помощь все работает!Если кому понадобится решение, то я сделал так: <!--Каталог товаров--> {if $products && $page->url != 'catalog'} <!-- Список товаров--> ... Здесь блок страниц товаров {elseif $page->url=='catalog'} <!-- Страница каталог --> {else} <h3>Товары не найдены</h3> {/if} Quote Link to post Share on other sites
akvk Posted August 5, 2016 Report Share Posted August 5, 2016 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} Quote Link to post Share on other sites
Kors Posted August 5, 2016 Report Share Posted August 5, 2016 Использовать что-то типа {if $c@iteration<=3} Вывод с первого по третий {elseif $c@iteration<=6} Вывод с 4-го по 6-ой {else} Вывод с 6-го и далее {/if} Может не совсем правильно работать, если есть отключенные категории. Кстати, в Вашем коде тоже есть этот недостаток, могут выводиться пустые <div class="row"></div>. Для совсем корректной работы надо еще усложнять... Quote Link to post Share on other sites
akvk Posted August 5, 2016 Report Share Posted August 5, 2016 Использовать что-то типа{if $c@iteration<=3}Вывод с первого по третий{elseif $c@iteration<=6}Вывод с 4-го по 6-ой{else}Вывод с 6-го и далее{/if} Может не совсем правильно работать, если есть отключенные категории.Кстати, в Вашем коде тоже есть этот недостаток, могут выводиться пустые <div class="row"></div>.Для совсем корректной работы надо еще усложнять...Спасибо Вам огромное за помощь! Quote Link to post Share on other sites
akvk Posted August 7, 2016 Report Share Posted August 7, 2016 Использовать что-то типа{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}и до бесконечности. Quote Link to post Share on other sites
yr4ik Posted August 7, 2016 Report Share Posted August 7, 2016 {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} Quote Link to post Share on other sites
akvk Posted August 8, 2016 Report Share Posted August 8, 2016 {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} Огромнейшее человеческое спасибо! Quote Link to post Share on other sites
get31 Posted November 14, 2020 Report Share Posted November 14, 2020 (edited) у меня стоит вывод название категории к которой принадлежит товар, их может быть несколько (чайник, электро чайник и тд), как сделать вывод чтобы отображало название первой категории а не второй, а то в каталоге может показывать название второй категории, а в карточке товара первой? Edited November 14, 2020 by get31 Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.