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

Разный дизайн плиток товара для категории.


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

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

Подскажите как управляться с этим параметром

 

{if $category->id == 5}
Вывод плиткой
{else}
Вывод в ряд
{/if}

Мне нужно к примеру у меня 2 категории

1 - Плитки

2 - Список

 

Я хочу задать дизайн для плиток свой и для списка свой

Сама страница товара неизменна. 

 

Категории у меня называются plitka и cpicok 

Как правильно это все указать и расписать ?. 

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

Если это надо для страниц категорий, то

 

в view/ProductsView.php  вместо стандартной строки

        $this->body = $this->design->fetch('products.tpl');

 

ставьте что-то типа

 

if ($category->id == 5){
//Вывод плиткой из отдельного шаблона
$this->body = $this->design->fetch('products_plitka.tpl');
}
else{
//Вывод стандартный

$this->body = $this->design->fetch('products.tpl');
}

 

Универсальное решение:

http://simpla-tuning.com/raznye-shablony-dlya-kategorij

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

Спасибо за ращения.

Не подскажите что не так с этими блоками при просмотре с мобильного только они режутся. 

 

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

Если это надо для страниц категорий, то

 

в view/ProductsView.php  вместо стандартной строки

        $this->body = $this->design->fetch('products.tpl');

 

ставьте что-то типа

 

if ($category->id == 5){

//Вывод плиткой из отдельного шаблона

$this->body = $this->design->fetch('products_plitka.tpl');

}else{

//Вывод стандартный

$this->body = $this->design->fetch('products.tpl');

}

 

Универсальное решение:

http://simpla-tuning.com/raznye-shablony-dlya-kategorij

 

А как лучше? Как в вашем примере?  Или условием в шаблоне?

 

Я не люблю программный код трогать просто, но если чем-то лучше...

 

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

А как лучше? Как в вашем примере?  Или условием в шаблоне?

 

Я не люблю программный код трогать просто, но если чем-то лучше...

 

 

Как лучше - зависит от обстоятельств, целей, вкусов и проч.

 

Например, если это надо только для ОДНОЙ категории, то проще  так, как написано.

Если же у Вас сотня категорий, и Вы хотите, чтобы на них были разные шаблоны, и еще хотите эти шаблоны регулярно переназначать, тогда лучше сделать полноценную доработку, включающую редактирование шаблонов в админке...

 

А вообще способов много. Можно, видимо, сделать и условием в шаблоне. Способов разных много. Пишите свои способы, пусть народ смотрит и оценивает...

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

У меня есть еще решение как подкатегории вывести в виде плиток) Тоже удобно)

 

У меня теперь есть знание, что у larenso есть удобное решение. Очень полезно такое знать. А еще лучше на бумажке это написать и повесить на видном месте, чтоб не позабыть...

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

А сделать в карточке товара если количество вариантов ноль?

 

if ($product->variant-stock == 0){
return $this->design->fetch('product_stock.tpl');
}else{
return $this->design->fetch('product.tpl');
}

Как правильно написать такого плана в ProductView?

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

Примерно так и написать.

Желательно учесть только, что

1.  Написанное условие бессмысленно. Возможно, надо писать $product->variant->stock == 0.

2. "количество вариантов ноль" - такого штатно не бывает в принципе, у товара при редактировании в админке всегда есть минимум 1 вариант.  Если имеете в виду, что у каждого варианта товара кол-во нулевое, то так и писать надо, и соответственно условие менять...

Ссылка на сообщение
Поделиться на другие сайты
25 минут назад, phukortsin сказал:

Примерно так и написать.

Желательно учесть только, что

1.  Написанное условие бессмысленно. Возможно, надо писать $product->variant->stock == 0.

2. "количество вариантов ноль" - такого штатно не бывает в принципе, у товара при редактировании в админке всегда есть минимум 1 вариант.  Если имеете в виду, что у каждого варианта товара кол-во нулевое, то так и писать надо, и соответственно условие менять...

Да, имел ввиду что количество.

а можно как-то с foreach совместить?

ибо в шаблоне к примеру если из 4х вариантов с количеством 0, но один вариант имеет количество бесконечное, то отображается в шаблоне как с количеством ноль:

if ($product->variant-stock == 0){
return $this->design->fetch('product_stock.tpl');

Как правильно прописать условие, чтобы отображалось в шаблоне return $this->design->fetch('product.tpl'); ?

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

Ссори, вопрос все еще открыт)))))

Отображение идет в разные .tpl, но хочу сделать вывод в файле где количество варианта есть - вывод тех вариантов, которые с нулевым количеством. Подскажите плиз, как это сделать?

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

Так и делать - писать условие проверки кол-ва у вариантов.

{foreach $product->variants as $v}
{if $v->stock == 0}
{/if}
{/foreach}

Ссылка на сообщение
Поделиться на другие сайты
1 час назад, phukortsin сказал:

Так и делать - писать условие проверки кол-ва у вариантов.

{foreach $product->variants as $v}
{if $v->stock == 0}
{/if}
{/foreach}

у меня так и стоит, но не выводит варианты с нулевым количеством

Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, phukortsin сказал:

Надо все проверять, в том числе то, что эти варианты поступают в шаблон из PHP.

Делал на стандартной Simpla.

В ProductView.php заменил вывод шаблона

if ($product->variant->stock == 0){
return $this->design->fetch('product_stock.tpl');
}else{
return $this->design->fetch('product.tpl');
}

В шаблонах product.tpl

			{foreach $product->variants as $v}
				{if $v->stock > 0}
					<tr class="variant">
						<td>
							<input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
						</td>
						<td>
							{if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if}
						</td>
						<td>
							{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
							<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
						</td>
					</tr>
				{/if}
			{/foreach}
			{foreach $product->variants as $v}
				{if $v->stock == 0}
					<tr class="variant" style="opacity:.4;background:lime;">
						<td>
							<input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
						</td>
						<td>
							{if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if}
						</td>
						<td>
							{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
							<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
						</td>
					</tr>
				{/if}
			{/foreach}

 

в админке добавляем несколько вариантов, сразу ставим количество НОЛЬ, сохраняем, проверяем - работает норм. Потом одному варианту (не первому) убираем количество ноль и получаем не рабочий метод.

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

Надо проверять все моменты. Из написанного кода

1. неясно, какой набор вариантов поступает в шаблон  из PHP,

2. как идет вывод в шаблоне product_stock.tpl.

Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, phukortsin сказал:

Надо проверять все моменты. Из написанного кода

1. неясно, какой набор вариантов поступает в шаблон  из PHP,

2. как идет вывод в шаблоне product_stock.tpl.

1. варианты из php


		$variants = array();
		foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v)
			$variants[$v->id] = $v;
		
		$product->variants = $variants;
		
		// Вариант по умолчанию
		if(($v_id = $this->request->get('variant', 'integer'))>0 && isset($variants[$v_id]))
			$product->variant = $variants[$v_id];
		else
			$product->variant = reset($variants);
					

2. Вывод аналогичен product.tpl, только заменил <h1> на "ссори, товары не в наличии", чтобы понять переключает ли шаблон. Ну и {foreach $product->variants as $v} выше, который правильный

 

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

Из того, что написано, выходит, что выбираются лишь варианты с ненулевым к-вом ('in_stock'=>true). Что не стыкуется со сказанным ранее... 

Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, phukortsin сказал:

Из того, что написано, выходит, что выбираются лишь варианты с ненулевым к-вом ('in_stock'=>true). Что не стыкуется со сказанным ранее... 

Правильно, но если это убрать будет нормально выводиться, НО возникает другая проблема: если в админке ставим количество бесконечно какому-то варианту, то покажет страницу product_stock.tpl (нет в наличии)

Ссылка на сообщение
Поделиться на другие сайты
7 часов назад, get31 сказал:

Правильно, но если это убрать будет нормально выводиться, НО возникает другая проблема: если в админке ставим количество бесконечно какому-то варианту, то покажет страницу product_stock.tpl (нет в наличии)

Непонятно зачем вы дергаете вьюшку, не проще вашу манипуляцию реализовать внутри вью? 
Стукните в личку, думаю разберёмся за час.  

Ссылка на сообщение
Поделиться на другие сайты
15 часов назад, get31 сказал:

Правильно, но если это убрать будет нормально выводиться, НО возникает другая проблема: если в админке ставим количество бесконечно какому-то варианту, то покажет страницу product_stock.tpl (нет в наличии)

Так надо решать вопрос целиком комплексно, а Вы пока кидаетесь из стороны в сторону по методу "одно лечим, другое калечим". А вопрос-то не особо сложный... 

Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, phukortsin сказал:

Так надо решать вопрос целиком комплексно, а Вы пока кидаетесь из стороны в сторону по методу "одно лечим, другое калечим". А вопрос-то не особо сложный... 

Честно, не пойму. 

В 23.01.2023 в 09:47, get31 сказал:

foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) $variants[$v->id] = $v;

Нужно это заделать в if где в одном показать in_stock в другом без? или как?

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

Я вообще не пойму в чем проблема?

Если надо определить, есть ли у товара варианты в наличии - можно обойти все варианты и подсчитать, сколько есть в наличии.

Либо как вариант - выбираем варианты, которые есть в наличии. Если таких вариантов нет, то тогда выбираем варианты, которых нет в наличии и показываем шаблон, который нет в наличии.

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

На мой взгляд, проблема в том, что товарищ делает методом тыка, особо не понимая смысла. А как еще можно интерпретировать глуповатую фразу: 

2 часа назад, get31 сказал:

Нужно это заделать в if где в одном показать in_stock в другом без? или как?

Рассуждает про варианты с нулевым кол-вом, а изначально выбирает варианты только с НЕнулевым. 

Что ему сказать -  если надо непременно надо "заделывать", то заделывай да смотри.

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

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

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

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

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

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

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

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

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

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