modd Posted April 21, 2011 Report Share Posted April 21, 2011 Помогите уже замаялся как сделать 3 и больше колонок товара. Как тут http://nanevskom.com/catalog/group=1 или тут http://samovary.su/. Перепробывал разные методы нечего не помогло(. пробывал так нечего не работает или я чего-то не то делаю Лезем в шаблон products.tplМеняем блок от :{if $products}<!-- Список товаров /-->до :<!-- Список товаров #End /-->{else}Товары не найдены{/if}Код зависим от верстки сайта Вашего, так что покажу на пальцах:{section name=lots loop=$products/3 step=3} $item=$smarty.section.foo.index; <!-- Выводим данные о $products[$item] /--> <!-- Выводим данные о $products[$item + 1] /--> <!-- Выводим данные о $products[$item + 2] /-->{/section}$item=$item+3;<!-- Выводим огрызки -->{section name=last_lots loop=$products%3 start=$item} <!-- Выводим данные о $products[last_lots] /-->{/section}<!-- Добиваем пустые блоки, если требуется /-->{if $products%3 == 2} <!-- Добить один пустой блок /-->{elseif $products%3 == 1} <!-- Добавить два пустых блока /-->{/if}и так пробывал в catalog.tpl нужно указать количество столбцов, найдите строчку {if $smarty.foreach.products.iteration%2 == 0} и вместо 2 укажите нужное число столбцов.покажите пожалуйста если не трудно пример на основе default темы. Quote Link to post Share on other sites
Kosjak76 Posted April 21, 2011 Report Share Posted April 21, 2011 {if $smarty.foreach.products.iteration%2 == 0} {/if}2 меняем на 3 и ВСЕ (но, естественно, блоки товаров надо переверстать, чтобы 3 помещалось) Quote Link to post Share on other sites
alaster Posted April 22, 2011 Report Share Posted April 22, 2011 Именно, при блочной верстке:{foreach name=products item=product from=$products}<div style="float:left;width:***;overflow:hidden;">Содержание элемента строки</div>{if $smarty.foreach.products.iteration%3 == 0}<div style="clear:both;"><!-- /--></div>{/foreach}Т.е. закидываем все товары подряд, и через три вставляем пустой блок, не обтекаемый ни с одной стороны - так организуем переход на следующую строку.Как верно говорит Косяк, ширина блоков должна быть соответствующая. И должен быть выставлен "overflow:hidden", чтобы содержание не распирало блоки больше нужного размера.Тот пример, что Вы в посте привели подходит пожалуй больше для табличной верстки.Минус верстки блоками в 3 столбца тоже есть. Если ширины их содержащего элемента слегка не достаточно (к примеру монитор старенький или окно браузера маленькое), очевидным образом один блок из трех уедет на следующую строку. И будет у вас[товар][товар][товар][товар][товар][товар][товар][товар][товар]Что на мой взгляд немного коряво.Можно избавиться: выставив блокам одинаковую высоту и удалив <div style="clear:both;"><!-- /--></div>Но ограничивать высоту блоков - плохая идея.При верстке в 2 столбца, конечно блоки красиво становятся в один столбец Quote Link to post Share on other sites
termint Posted April 22, 2011 Report Share Posted April 22, 2011 У меня вникакую не выходит. Можете скинуть поправленный products.tpl Очень нуждаюсь в данной переделке. Quote Link to post Share on other sites
alaster Posted April 22, 2011 Report Share Posted April 22, 2011 Несерьезно...В style.css.product_block {float:left;width:200px; <---- Вот тут ширина блока товара, уменьшаем ее !overflow:hidden;margin-bottom:16px;}В цикле в catalog.tpl и/или products.tpl в районе 95 строки:<!-- Товар #End /-->{if $smarty.foreach.products.iteration%3 == 0} <---- двоечку поменяли на троечку<div class="clear"><!-- /--></div> Quote Link to post Share on other sites
velesgs Posted May 28, 2014 Report Share Posted May 28, 2014 Подскажите как реализовать для последней версии, перепробовал все не получается 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.