Перейти к содержанию
Официальный форум поддержки Simpla

Вывод товара вертикальным списком


Перейти к решению Решено mishanya,

Рекомендуемые сообщения

В стандартной симпле товары выводятся в виде: 

товар 1 | товар 2 | товар 3 | товар 4 
товар 5 | товар 6 | товар 7 | товар 8

мне же необходимо сделать вывод

товар 1 | товар 3 | товар 5 | товар 7 
товар 2 | товар 4 | товар 6 | товар 8

 

как это сделать?

Ссылка на сообщение
Поделиться на другие сайты

мне же необходимо сделать вывод

 

товар 1 | товар 3 | товар 5 | товар 7 

товар 2 | товар 4 | товар 6 | товар 8

 

как это сделать?

 

Изменить вывод в шаблоне. Многое зависит в того, как устроен шаблон и в каком порядке он  реально выводит товары в HTML-код.

Возможно, это окажется сложным -  тогда придется работать и в файле PHP, меняя там порядок товаров либо как-то еще.

В любом случае без шаблона вряд ли получите готовое  универсальное решение...

Ссылка на сообщение
Поделиться на другие сайты

В стандартной симпле как раз ни так ни так товары не выводятся.

 

 

 ну расскажите как тогда выводятся? 

 

 

Изменить вывод в шаблоне. Многое зависит в того, как устроен шаблон и в каком порядке он  реально выводит товары в HTML-код.

Возможно, это окажется сложным -  тогда придется работать и в файле PHP, меняя там порядок товаров либо как-то еще.

В любом случае без шаблона вряд ли получите готовое  универсальное решение...

 

разбираю стандартный шаблон, хтмл не поможет в этом вопросе, надо ковырять пхп

Ссылка на сообщение
Поделиться на другие сайты

ну расскажите как тогда выводятся?

 

Если посмотреть 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 изменить порядок в списке товаров...

Ссылка на сообщение
Поделиться на другие сайты

Если посмотреть 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 колонки, но порядок вертикальный

Ссылка на сообщение
Поделиться на другие сайты
  • Решение

как изменить в пхп? 

надо что бы товары располагались в 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>
Ссылка на сообщение
Поделиться на другие сайты

нынче есть различные способы решения подобного казалось бы программного функционала с помощью правил CSS. НО устаревшие браузеры этого дела не одобрят. я бы порекоммендовал обратить внимание на flex-верстку и/или связочку правил column-count, column-gap, column-width, column-rule...

Ссылка на сообщение
Поделиться на другие сайты

Если Вам подошел способ от mishanya, то и хорошо.

 

А по-моему, способ какой-то странный и кривой. Например,

1. если в списке 21 товар, то этот способ разобъет их по колонкам так: 6+6+6+3 (последняя колонка существенно меньше остальных).

2. если в списке 5 товаров, то этот способ разобъет их по колонкам так: 2+2+1+0 (вообще одна колонка пустая будет).

Ссылка на сообщение
Поделиться на другие сайты

Если Вам подошел способ от mishanya, то и хорошо.

 

А по-моему, способ какой-то странный и кривой. Например,

1. если в списке 21 товар, то этот способ разобъет их по колонкам так: 6+6+6+3 (последняя колонка существенно меньше остальных).

2. если в списке 5 товаров, то этот способ разобъет их по колонкам так: 2+2+1+0 (вообще одна колонка пустая будет).

у меня товаров 100+ в каждой категории, выводятся только названия, все на одной странице

Ссылка на сообщение
Поделиться на другие сайты

у меня товаров 100+ в каждой категории, выводятся только названия, все на одной странице

 

3. если в списке 101 товар, то этот способ разобъет их по колонкам так: 26+26+26+23.

 

Визуально, Вы может, и не заметите особой разницы, но метод явно неправильный.

 

Но даже если у Вас в категории много товаров и работает разбивка на страницы, то на последней странице вполне может оказаться и 5 товаров, и 21 товар и отображение будет, скорее всего, некрасивым...

Ссылка на сообщение
Поделиться на другие сайты

погинацию вообще выпилил, за ненадобностью так что думаю норм будет

если вы предложите более правильный вариант с радостью использую его

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты
  • 8 лет спустя...

а как сделать такое отображение:

товар 1 | товар 2
товар 3 | товар 4 
товар 5
товар 6 | товар 7
товар 8 | товар 9
товар 10
товар 11 | товар 12
товар 13 | товар 14
товар 15

Ссылка на сообщение
Поделиться на другие сайты
В 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>

 

Ссылка на сообщение
Поделиться на другие сайты

Это работает верно для простых данных (когда в массиве $products ключи идут по порядку 0,1,2,3). А когда ключи произвольные, возникает ошибка, потому что условие ($key % 5 == 4) фактически выдает результат СЛУЧАЙНЫМ ОБРАЗОМ.

Можно, например, не использовать $key, а вместо нее вручную формировать свою переменную.

 

Ссылка на сообщение
Поделиться на другие сайты
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>

 

Изменено пользователем founder
Ссылка на сообщение
Поделиться на другие сайты

Если нужно менять <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>

 

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...