Перейти к содержимому


Фото
- - - - -

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

smarty категория

Best Answer Kors , 30.10.2015 - 10:31

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

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

 


 

Перейти к посту


  • Чтобы отвечать, сперва войдите на форум
21 ответов в теме

#1 mikeevstropov

mikeevstropov
  • Пользователь
  • 16 сообщений
  • Пользователь
  • Версия CMS:1.x, 2.x
  • Откуда:Волгоград

Опубликовано 29.10.2015 - 21:18

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

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

Мое решение:

{$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, 29.10.2015 - 21:19


#2 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 837 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 29.10.2015 - 21:33

{foreach from=$product->categories item=cat}
это старый метод, давно уже можно делать вот так (так проще и лаконичней):
{foreach $product->categories as $cat}

#3 mikeevstropov

mikeevstropov
  • Пользователь
  • 16 сообщений
  • Пользователь
  • Версия CMS:1.x, 2.x
  • Откуда:Волгоград

Опубликовано 29.10.2015 - 21:37

{foreach from=$product->categories item=cat}
это старый метод, давно уже можно делать вот так (так проще и лаконичней):
{foreach $product->categories as $cat}

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



#4 mishanya

mishanya
  • Фрилансер
  • 2 557 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 29.10.2015 - 21:45

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

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

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



#5 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 837 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 29.10.2015 - 21:49

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

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


:rolleyes:

#6 mikeevstropov

mikeevstropov
  • Пользователь
  • 16 сообщений
  • Пользователь
  • Версия CMS:1.x, 2.x
  • Откуда:Волгоград

Опубликовано 29.10.2015 - 21:54

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

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

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

 

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

 

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


Изменено: mikeevstropov, 29.10.2015 - 22:11


#7 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 837 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 29.10.2015 - 22:09

ХуRcе...

Тише тише, скрытый мат также запрещен, за такое в бан пошлют :D.

#8 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 29.10.2015 - 22:38

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

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


#9 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 837 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 29.10.2015 - 22:52

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

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


Можно еще так:
{if $product->categories[6]}
  товар относится к категории ID=6
{else}
  товар НЕ относится к категории ID=6
{/if}


#10 mikeevstropov

mikeevstropov
  • Пользователь
  • 16 сообщений
  • Пользователь
  • Версия CMS:1.x, 2.x
  • Откуда:Волгоград

Опубликовано 29.10.2015 - 23:56

Думаю еще чуть-чуть и весь код уложится в одну строку  :D



#11 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 30.10.2015 - 10:31   Best Answer

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

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

 


 



#12 kionlife

kionlife
  • Пользователь
  • 27 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Ukraine, Sumy

Опубликовано 14.01.2016 - 17:54

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

{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, 14.01.2016 - 17:56


#13 mishanya

mishanya
  • Фрилансер
  • 2 557 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 14.01.2016 - 18:22

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

{get_featured_products var=featured_products}
        
        {if $featured_products}


        {foreach $featured_products as $product}


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


...

{/foreach}

{/if} 

 

Что не так?

 

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



#14 madison21

madison21
  • Пользователь
  • 120 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 17.09.2018 - 07:02

Народ, а если несколько категорий надо выбрать?
Через запятую просто не срабатывает..



#15 phukortsin

phukortsin
  • Пользователь
  • 595 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 17.09.2018 - 09:37

Используйте

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

 

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



#16 madison21

madison21
  • Пользователь
  • 120 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 17.09.2018 - 10:13

Используйте

{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



#17 phukortsin

phukortsin
  • Пользователь
  • 595 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 17.09.2018 - 11:40

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

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



#18 madison21

madison21
  • Пользователь
  • 120 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 17.09.2018 - 12:26

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

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

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

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



#19 phukortsin

phukortsin
  • Пользователь
  • 595 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 17.09.2018 - 13:30

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



#20 madison21

madison21
  • Пользователь
  • 120 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 09.10.2018 - 17:14

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







Также с меткой «smarty, категория»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых