Jump to content

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


Go to solution Solved by Kors,

Recommended Posts

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

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

Мое решение:

{$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? и рыбку съесть...

Edited by mikeevstropov
Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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

 

 

:rolleyes:
Link to post
Share on other sites

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

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

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

 

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

 

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

Edited by mikeevstropov
Link to post
Share on other sites

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

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

 

 

Можно еще так:
{if $product->categories[6]}
  товар относится к категории ID=6
{else}
  товар НЕ относится к категории ID=6
{/if}
Link to post
Share on other sites
  • Solution

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

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

 


 

Link to post
Share on other sites
  • 2 months later...

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

{get_featured_products var=featured_products}
        
        {if $featured_products}


        {foreach $featured_products as $product}


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


...

{/foreach}

{/if} 

 

Что не так?

Edited by kionlife
Link to post
Share on other sites

 

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

{get_featured_products var=featured_products}
        
        {if $featured_products}


        {foreach $featured_products as $product}


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


...

{/foreach}

{/if} 

 

Что не так?

 

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

Link to post
Share on other sites
  • 2 years later...

Используйте

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

 

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

Link to post
Share on other sites

Используйте

{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

Link to post
Share on other sites

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

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

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

 

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

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

Link to post
Share on other sites
  • 4 weeks later...

 

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

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

Благодарю Noxter.

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

Link to post
Share on other sites
  • 7 months later...

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

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...