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

Определить присутствие товара в категории


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

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

Здравствуйте! И снова Я =)

Мне нужно выводить одну картину в товаре, в случае если товар принадлежит определенной категории, и другую если это не так.

Мое решение:

{$isexist = true}
// поиск нужной категории
{foreach from=$product->categories item=cat}
	{if $cat->name == 'CATEGORY_NAME'}
		<img src="design/{$settings->theme|escape}/images/yes.png">
		{$quality_default = false}
	{/if}
{/foreach}
// если категория не обнаружена
{if $isexist}
	<img src="design/{$settings->theme|escape}/images/no.png">
{/if}

Скажите, можно ли это сделать без цикла и желательно без assign? и рыбку съесть...

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

{foreach from=$product->categories item=cat}

это старый метод, давно уже можно делать вот так (так проще и лаконичней):

{foreach $product->categories as $cat}

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

{foreach from=$product->categories item=cat}

это старый метод, давно уже можно делать вот так (так проще и лаконичней):

{foreach $product->categories as $cat}

Учту, спасибо =)

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

можно достать ключи и проверить на айди категории вот так:

{$cat_ids=$product->categories|@array_keys}
{if in_array(6,$cat_ids)}fuck{/if}

где 6 айди той категории которую надо проверить

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

можно достать ключи и проверить на айди категории вот так:

{$cat_ids=$product->categories|@array_keys}
{if in_array(6,$cat_ids)}fuck{/if}
где 6 айди той категории которую надо проверить

 

 

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

можно достать ключи и проверить на айди категории вот так:

{$cat_ids=$product->categories|@array_keys}
{if in_array(6,$cat_ids)}fuck{/if}

где 6 айди той категории которую надо проверить

 

%меня переполняют эмоции%

 

Здорово =) Спасибо за помощь!

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

mishanya, зачем же так усложнять?

{if $product->categories.6}
  товар относится к категории ID=6
{else}
  товар НЕ относится к категории ID=6
{/if}
Ссылка на сообщение
Поделиться на другие сайты

mishanya, зачем же так усложнять?

{if $product->categories.6}
  товар относится к категории ID=6
{else}
  товар НЕ относится к категории ID=6
{/if}

 

 

Можно еще так:
{if $product->categories[6]}
  товар относится к категории ID=6
{else}
  товар НЕ относится к категории ID=6
{/if}
Ссылка на сообщение
Поделиться на другие сайты
  • Решение

Он и так практически в одну строку. А можно и буквально:

<img src="design/{$settings->theme|escape}/images/{if $product->categories.6}yes.png{else}no.png{/if}">

 


 

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

ребян, помогите, не работает:

{get_featured_products var=featured_products}
        
        {if $featured_products}


        {foreach $featured_products as $product}


...
{if $product->categories.9} ok {else} null
{/if}


...

{/foreach}

{/if} 

 

Что не так?

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

 

ребян, помогите, не работает:

{get_featured_products var=featured_products}
        
        {if $featured_products}


        {foreach $featured_products as $product}


...
{if $product->categories.9} ok {else} null
{/if}


...

{/foreach}

{/if} 

 

Что не так?

 

то что виджеты не передают категорию товара, на главной это работать не будет. там надо добавлять выборку категорий.

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

Используйте

{if $product->categories.9 || $product->categories.23 ||$product->categories.37}

 

Перечислением через запятую вряд ли кратко выйдет. Либо цикл добавлять придется. Либо сложное что-то писать с array_intersect или чем-то подобным.

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

Используйте

{if $product->categories.9 || $product->categories.23 ||$product->categories.37}

 

Перечислением через запятую вряд ли кратко выйдет. Либо цикл добавлять придется. Либо сложное что-то писать с array_intersect или чем-то подобным.

 

Большое спасибо за подсказку, phukortsin

 

Я тут поискал и нашёл решение как это дело решить через цикл, но думаю в моём случае это решение не подойдёт, оно предлагалось для движка webasyst shop-script

 

Замена длинного участка кода..

{if $_cat.categoryID==104183 || $_cat.categoryID==104206 ||
$_cat.categoryID==104207 || $_cat.categoryID==104244 ||
$_cat.categoryID==104258 || $_cat.categoryID==104316 ||
$_cat.categoryID==104660 || $_cat.categoryID==104669 ||
$_cat.categoryID==104687 || $_cat.categoryID==104688 ||
$_cat.categoryID==104691 || $_cat.categoryID==104782 ||
$_cat.categoryID==104791 || $_cat.categoryID==104794 ||
$_cat.categoryID==105065 || $_cat.categoryID==105071}

таким образом..

{$selected = array('104207','104206','105071')} //и т.д.
{if $_cat.categoryID|in_array:$selected}
Код
{/if}

как думаете, такой цикл сработает в симпле?

это вроде тот же php

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

Задавать вопросы типа "cработает или нет" не стоит. Потратьте пару минут и проверьте.

Вряд ли это подойдет. И там не цикл совсем...

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

Задавать вопросы типа "cработает или нет" не стоит. Потратьте пару минут и проверьте.

Вряд ли это подойдет. И там не цикл совсем...

Понял Вас.. буду пробовать.

 

И если возможно, последний вопрос..

Возможно ли в моём случае указывать не все категории (перечислять в моём случае подкатегории), а указать основную родительскую категорию, и правило распространится и на все подкатегории этой основной?,  

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

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

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

Спасибо большое.. Буду использовать ваш вариант..

В шаблоне можно использовать что-то вроде этого:

{if in_array($object->id, [1,2,3,4,5])}
...
{/if}
Ссылка на сообщение
Поделиться на другие сайты

 

В шаблоне можно использовать что-то вроде этого:

{if in_array($object->id, [1,2,3,4,5])}
...
{/if}

Благодарю Noxter.

Попробую на досуге и вашу конструкцию использовать.

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

а как проверить принадлежность товара к категории и всем подкатегориям?

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

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

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

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

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

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

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

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

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

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

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