generatiumru Posted February 9, 2016 Report Share Posted February 9, 2016 В стандартной симпле товары выводятся в виде: товар 1 | товар 2 | товар 3 | товар 4 товар 5 | товар 6 | товар 7 | товар 8мне же необходимо сделать выводтовар 1 | товар 3 | товар 5 | товар 7 товар 2 | товар 4 | товар 6 | товар 8 как это сделать? Quote Link to post Share on other sites
Noxter Posted February 9, 2016 Report Share Posted February 9, 2016 В стандартной симпле как раз ни так ни так товары не выводятся. Quote Link to post Share on other sites
Kors Posted February 9, 2016 Report Share Posted February 9, 2016 мне же необходимо сделать вывод товар 1 | товар 3 | товар 5 | товар 7 товар 2 | товар 4 | товар 6 | товар 8 как это сделать? Изменить вывод в шаблоне. Многое зависит в того, как устроен шаблон и в каком порядке он реально выводит товары в HTML-код.Возможно, это окажется сложным - тогда придется работать и в файле PHP, меняя там порядок товаров либо как-то еще.В любом случае без шаблона вряд ли получите готовое универсальное решение... Quote Link to post Share on other sites
generatiumru Posted February 9, 2016 Author Report Share Posted February 9, 2016 В стандартной симпле как раз ни так ни так товары не выводятся. ну расскажите как тогда выводятся? Изменить вывод в шаблоне. Многое зависит в того, как устроен шаблон и в каком порядке он реально выводит товары в HTML-код.Возможно, это окажется сложным - тогда придется работать и в файле PHP, меняя там порядок товаров либо как-то еще.В любом случае без шаблона вряд ли получите готовое универсальное решение... разбираю стандартный шаблон, хтмл не поможет в этом вопросе, надо ковырять пхп Quote Link to post Share on other sites
Kors Posted February 9, 2016 Report Share Posted February 9, 2016 ну расскажите как тогда выводятся? Если посмотреть products.tpl, то легко понять, что HTML-код формируется в виде <ul class="products"><li class="product"> [Товар 1] </li><li class="product"> [Товар 2] </li><li class="product"> [Товар 3] </li><li class="product"> [Товар 4] </li><li class="product"> [Товар 5] </li><li class="product"> [Товар 6] </li><li class="product"> [Товар 7] </li><li class="product"> [Товар 8] </li></ul> если хотите<ul class="products"><li class="product"> [Товар 1] </li><li class="product"> [Товар 3] </li><li class="product"> [Товар 5] </li><li class="product"> [Товар 7] </li><li class="product"> [Товар 2] </li><li class="product"> [Товар 4] </li><li class="product"> [Товар 6] </li><li class="product"> [Товар 8] </li></ul> то проще, действительно, в PHP изменить порядок в списке товаров... Quote Link to post Share on other sites
generatiumru Posted February 9, 2016 Author Report Share Posted February 9, 2016 Если посмотреть products.tpl, то легко понять, что HTML-код формируется в виде<ul class="products"><li class="product"> [Товар 1] </li><li class="product"> [Товар 2] </li><li class="product"> [Товар 3] </li><li class="product"> [Товар 4] </li><li class="product"> [Товар 5] </li><li class="product"> [Товар 6] </li><li class="product"> [Товар 7] </li><li class="product"> [Товар 8] </li></ul>то проще, действительно, в PHP изменить порядок в списке товаров...как изменить в пхп? надо что бы товары располагались в 4 колонки, но порядок вертикальный Quote Link to post Share on other sites
Solution mishanya Posted February 9, 2016 Solution Report Share Posted February 9, 2016 как изменить в пхп? надо что бы товары располагались в 4 колонки, но порядок вертикальный в шаблоне: {$count_products = $products|count} {$row_count = ($count_products/4)|ceil} <ul class="products"> {$i=0} {foreach $products as $product} {$i=$i+1} {if $product@first || $i==1}<li class="product">{/if} <div class="product_block"> тут код для товара </div> {if $i==$row_count || $product@last}</li>{$i=0}{/if} {/foreach} </ul> Quote Link to post Share on other sites
simplashop Posted February 9, 2016 Report Share Posted February 9, 2016 нынче есть различные способы решения подобного казалось бы программного функционала с помощью правил CSS. НО устаревшие браузеры этого дела не одобрят. я бы порекоммендовал обратить внимание на flex-верстку и/или связочку правил column-count, column-gap, column-width, column-rule... Quote Link to post Share on other sites
generatiumru Posted February 9, 2016 Author Report Share Posted February 9, 2016 спасибо тебе добрый человек! Quote Link to post Share on other sites
Kors Posted February 9, 2016 Report Share Posted February 9, 2016 Если Вам подошел способ от mishanya, то и хорошо. А по-моему, способ какой-то странный и кривой. Например,1. если в списке 21 товар, то этот способ разобъет их по колонкам так: 6+6+6+3 (последняя колонка существенно меньше остальных).2. если в списке 5 товаров, то этот способ разобъет их по колонкам так: 2+2+1+0 (вообще одна колонка пустая будет). Quote Link to post Share on other sites
generatiumru Posted February 9, 2016 Author Report Share Posted February 9, 2016 Если Вам подошел способ от mishanya, то и хорошо. А по-моему, способ какой-то странный и кривой. Например,1. если в списке 21 товар, то этот способ разобъет их по колонкам так: 6+6+6+3 (последняя колонка существенно меньше остальных).2. если в списке 5 товаров, то этот способ разобъет их по колонкам так: 2+2+1+0 (вообще одна колонка пустая будет).у меня товаров 100+ в каждой категории, выводятся только названия, все на одной странице Quote Link to post Share on other sites
Kors Posted February 9, 2016 Report Share Posted February 9, 2016 у меня товаров 100+ в каждой категории, выводятся только названия, все на одной странице 3. если в списке 101 товар, то этот способ разобъет их по колонкам так: 26+26+26+23. Визуально, Вы может, и не заметите особой разницы, но метод явно неправильный. Но даже если у Вас в категории много товаров и работает разбивка на страницы, то на последней странице вполне может оказаться и 5 товаров, и 21 товар и отображение будет, скорее всего, некрасивым... Quote Link to post Share on other sites
generatiumru Posted February 9, 2016 Author Report Share Posted February 9, 2016 погинацию вообще выпилил, за ненадобностью так что думаю норм будетесли вы предложите более правильный вариант с радостью использую его Quote Link to post Share on other sites
Kors Posted February 9, 2016 Report Share Posted February 9, 2016 Подождем немного. Если mishanya не пожелает улучшить свой метод, тогда выложу свой вариант... Quote Link to post Share on other sites
Kors Posted February 9, 2016 Report Share Posted February 9, 2016 {$count_products = $products|count} {$row_count = ($count_products/4)|floor} {$big_columns = $count_products%4} <ul class="products"> {$i=0} {$i2=1} {foreach $products as $k =>$product} {$i=$i+1} {if $i==1}<li class="product">{/if} <div class="product_block"> [товар, колонка {$i2}, позиция {$i}] </div> {if ($i==$row_count && $i2>$big_columns ) || $i>$row_count || $product@last}</li>{$i=0}{$i2++}{/if} {/foreach} </ul> Quote Link to post Share on other sites
founder Posted March 14, 2024 Report Share Posted March 14, 2024 а как сделать такое отображение: товар 1 | товар 2 товар 3 | товар 4 товар 5 товар 6 | товар 7 товар 8 | товар 9 товар 10 товар 11 | товар 12 товар 13 | товар 14 товар 15 Quote Link to post Share on other sites
phukortsin Posted March 15, 2024 Report Share Posted March 15, 2024 Программировать все нужное, примеры в теме есть... Quote Link to post Share on other sites
founder Posted March 17, 2024 Report Share Posted March 17, 2024 В 15.03.2024 в 09:41, phukortsin сказал: Программировать все нужное, примеры в теме есть... делаю вот так <ul class="products"> {$i=0} {foreach $products as $key => $product} {$i=$i+1} {if $product@first || $i==1 || ($key % 5 == 0)}<li class="product">{/if} <div class="product_block"> {$product->name|escape} тут код для товара </div> {if $i==2 || ($key % 5 == 4) || $product@last}</li>{$i=0}{/if} {/foreach} </ul> Вначале нормально, а потом не закрывает </li> и отображает уже не правильно....почему? вот как отображает: <ul class="products"> <li class="product"> <div class="product_block"> 1 тут код для товара </div> <div class="product_block"> 2 тут код для товара </div> </li> <li class="product"> <div class="product_block"> 4 тут код для товара </div> </li> <li class="product"> <div class="product_block"> 5 тут код для товара </div> <div class="product_block"> 6 тут код для товара </div> </li> <li class="product"> <div class="product_block"> 7 тут код для товара </div> <div class="product_block"> 8 тут код для товара </div> </li> <li class="product"> <div class="product_block"> 9 тут код для товара </div> <li class="product"> <div class="product_block"> 10 тут код для товара </div> </li> <li class="product"> <div class="product_block"> 11 тут код для товара </div> </li> <li class="product"> <div class="product_block"> 12 тут код для товара </div> </li> </ul> Quote Link to post Share on other sites
phukortsin Posted March 18, 2024 Report Share Posted March 18, 2024 Это работает верно для простых данных (когда в массиве $products ключи идут по порядку 0,1,2,3). А когда ключи произвольные, возникает ошибка, потому что условие ($key % 5 == 4) фактически выдает результат СЛУЧАЙНЫМ ОБРАЗОМ. Можно, например, не использовать $key, а вместо нее вручную формировать свою переменную. Quote Link to post Share on other sites
founder Posted March 18, 2024 Report Share Posted March 18, 2024 (edited) 3 часа назад, phukortsin сказал: Это работает верно для простых данных (когда в массиве $products ключи идут по порядку 0,1,2,3). А когда ключи произвольные, возникает ошибка, потому что условие ($key % 5 == 4) фактически выдает результат СЛУЧАЙНЫМ ОБРАЗОМ. Можно, например, не использовать $key, а вместо нее вручную формировать свою переменную. Спасибо, сделал вот так: <ul class="products"> {$i=0} {$index=0} {foreach $products as $product} {$i=$i+1} {$index=$index+1} {if $product@first || $i==1 || ($index % 5 == 1)}<li class="product">{/if} <div class="product_block"> {$product->name|escape} тут код для товара </div> {if $i==2 || ($index % 5 == 0) || $product@last}</li>{$i=0}{/if} {/foreach} </ul> Edited March 18, 2024 by founder Quote Link to post Share on other sites
founder Posted March 18, 2024 Report Share Posted March 18, 2024 Если нужно менять <li> где вывод по 1 товару, нужно сделать вот так: <ul class="products"> {$i=0} {$index=0} {foreach $products as $product} {$i=$i+1} {$index=$index+1} {if $product@first || $i==1 || ($index % 5 == 1)}{if $index % 5 == 0}<li class="КЛАСС ДЛЯ ОДНОГО ТОВАРА">{else}<li class="product">{/if}{/if} <div class="product_block"> {$product->name|escape} тут код для товара </div> {if $i==2 || ($index % 5 == 0) || $product@last}</li>{$i=0}{/if} {/foreach} </ul> 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.