generatiumru Опубликовано 9 февраля, 2016 Жалоба Поделиться Опубликовано 9 февраля, 2016 В стандартной симпле товары выводятся в виде: товар 1 | товар 2 | товар 3 | товар 4 товар 5 | товар 6 | товар 7 | товар 8мне же необходимо сделать выводтовар 1 | товар 3 | товар 5 | товар 7 товар 2 | товар 4 | товар 6 | товар 8 как это сделать? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 9 февраля, 2016 Жалоба Поделиться Опубликовано 9 февраля, 2016 В стандартной симпле как раз ни так ни так товары не выводятся. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 9 февраля, 2016 Жалоба Поделиться Опубликовано 9 февраля, 2016 мне же необходимо сделать вывод товар 1 | товар 3 | товар 5 | товар 7 товар 2 | товар 4 | товар 6 | товар 8 как это сделать? Изменить вывод в шаблоне. Многое зависит в того, как устроен шаблон и в каком порядке он реально выводит товары в HTML-код.Возможно, это окажется сложным - тогда придется работать и в файле PHP, меняя там порядок товаров либо как-то еще.В любом случае без шаблона вряд ли получите готовое универсальное решение... Цитата Ссылка на сообщение Поделиться на другие сайты
generatiumru Опубликовано 9 февраля, 2016 Автор Жалоба Поделиться Опубликовано 9 февраля, 2016 В стандартной симпле как раз ни так ни так товары не выводятся. ну расскажите как тогда выводятся? Изменить вывод в шаблоне. Многое зависит в того, как устроен шаблон и в каком порядке он реально выводит товары в HTML-код.Возможно, это окажется сложным - тогда придется работать и в файле PHP, меняя там порядок товаров либо как-то еще.В любом случае без шаблона вряд ли получите готовое универсальное решение... разбираю стандартный шаблон, хтмл не поможет в этом вопросе, надо ковырять пхп Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 9 февраля, 2016 Жалоба Поделиться Опубликовано 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 изменить порядок в списке товаров... Цитата Ссылка на сообщение Поделиться на другие сайты
generatiumru Опубликовано 9 февраля, 2016 Автор Жалоба Поделиться Опубликовано 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 колонки, но порядок вертикальный Цитата Ссылка на сообщение Поделиться на другие сайты
Решение mishanya Опубликовано 9 февраля, 2016 Решение Жалоба Поделиться Опубликовано 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> Цитата Ссылка на сообщение Поделиться на другие сайты
simplashop Опубликовано 9 февраля, 2016 Жалоба Поделиться Опубликовано 9 февраля, 2016 нынче есть различные способы решения подобного казалось бы программного функционала с помощью правил CSS. НО устаревшие браузеры этого дела не одобрят. я бы порекоммендовал обратить внимание на flex-верстку и/или связочку правил column-count, column-gap, column-width, column-rule... Цитата Ссылка на сообщение Поделиться на другие сайты
generatiumru Опубликовано 9 февраля, 2016 Автор Жалоба Поделиться Опубликовано 9 февраля, 2016 спасибо тебе добрый человек! Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 9 февраля, 2016 Жалоба Поделиться Опубликовано 9 февраля, 2016 Если Вам подошел способ от mishanya, то и хорошо. А по-моему, способ какой-то странный и кривой. Например,1. если в списке 21 товар, то этот способ разобъет их по колонкам так: 6+6+6+3 (последняя колонка существенно меньше остальных).2. если в списке 5 товаров, то этот способ разобъет их по колонкам так: 2+2+1+0 (вообще одна колонка пустая будет). Цитата Ссылка на сообщение Поделиться на другие сайты
generatiumru Опубликовано 9 февраля, 2016 Автор Жалоба Поделиться Опубликовано 9 февраля, 2016 Если Вам подошел способ от mishanya, то и хорошо. А по-моему, способ какой-то странный и кривой. Например,1. если в списке 21 товар, то этот способ разобъет их по колонкам так: 6+6+6+3 (последняя колонка существенно меньше остальных).2. если в списке 5 товаров, то этот способ разобъет их по колонкам так: 2+2+1+0 (вообще одна колонка пустая будет).у меня товаров 100+ в каждой категории, выводятся только названия, все на одной странице Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 9 февраля, 2016 Жалоба Поделиться Опубликовано 9 февраля, 2016 у меня товаров 100+ в каждой категории, выводятся только названия, все на одной странице 3. если в списке 101 товар, то этот способ разобъет их по колонкам так: 26+26+26+23. Визуально, Вы может, и не заметите особой разницы, но метод явно неправильный. Но даже если у Вас в категории много товаров и работает разбивка на страницы, то на последней странице вполне может оказаться и 5 товаров, и 21 товар и отображение будет, скорее всего, некрасивым... Цитата Ссылка на сообщение Поделиться на другие сайты
generatiumru Опубликовано 9 февраля, 2016 Автор Жалоба Поделиться Опубликовано 9 февраля, 2016 погинацию вообще выпилил, за ненадобностью так что думаю норм будетесли вы предложите более правильный вариант с радостью использую его Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 9 февраля, 2016 Жалоба Поделиться Опубликовано 9 февраля, 2016 Подождем немного. Если mishanya не пожелает улучшить свой метод, тогда выложу свой вариант... Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 9 февраля, 2016 Жалоба Поделиться Опубликовано 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> Цитата Ссылка на сообщение Поделиться на другие сайты
founder Опубликовано 14 марта Жалоба Поделиться Опубликовано 14 марта а как сделать такое отображение: товар 1 | товар 2 товар 3 | товар 4 товар 5 товар 6 | товар 7 товар 8 | товар 9 товар 10 товар 11 | товар 12 товар 13 | товар 14 товар 15 Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 15 марта Жалоба Поделиться Опубликовано 15 марта Программировать все нужное, примеры в теме есть... Цитата Ссылка на сообщение Поделиться на другие сайты
founder Опубликовано 17 марта Жалоба Поделиться Опубликовано 17 марта В 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> Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 18 марта Жалоба Поделиться Опубликовано 18 марта Это работает верно для простых данных (когда в массиве $products ключи идут по порядку 0,1,2,3). А когда ключи произвольные, возникает ошибка, потому что условие ($key % 5 == 4) фактически выдает результат СЛУЧАЙНЫМ ОБРАЗОМ. Можно, например, не использовать $key, а вместо нее вручную формировать свою переменную. Цитата Ссылка на сообщение Поделиться на другие сайты
founder Опубликовано 18 марта Жалоба Поделиться Опубликовано 18 марта (изменено) 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> Изменено 18 марта пользователем founder Цитата Ссылка на сообщение Поделиться на другие сайты
founder Опубликовано 18 марта Жалоба Поделиться Опубликовано 18 марта Если нужно менять <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> Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.