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


Фотография
- - - - -

Не могу получить id подкатегорий


Лучший Ответ axeld , 16 November 2015 - 10:51

 

Вот так должно сработать

$catIds = $item->getRelatedCategoryIds();
 
if ($primary = $item->getPrimaryCategory()) {
    $children = $primary->getChildren();
    foreach ($children as $child) {
        if (in_array($child->id, $catIds)) {
            echo $child->name . ', ';
        }
    }
 
}

 

Да круто, вcе работает !

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 5

#1 axeld

axeld

Отправлено 10 November 2015 - 11:17

Здравствуйте, не могу получить id категории в модуле mod_jbzoo_item (/modules/mod_jbzoo_item/tmpl)

$category = $item->getPrimaryCategory();
$category = $category->getChildren();
echo $category->id;

 <hr>
У меня товар в основной категории и в подкатегории одновременно. Основную категорию получаю так

$category = $item->getPrimaryCategory();
echo $category->id;

А вот под категорию получить не могу  :(


  • 0

#2 SmetDenis

SmetDenis

Отправлено 10 November 2015 - 11:23

В первом листинге кода переменная category переопределяется и в итоге getChildren вернет массив, а вы работаете с ним как с объектом.

Примерно так...
$childs = $category->getChildren();
if ($childs) {
    reset($childs);
    echo current($childs)->id;
}

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 axeld

axeld

Отправлено 10 November 2015 - 14:40

Пишу так 

$childs = $item->getPrimaryCategory()->getChildren();
	foreach ($childs as $child)
	{
		echo $child->id."<br>";
	}

Выводит все подкатегории, оно и понятно. Но как мне все таки выбрать нужную подкатегорию?
Ведь у $item только она подкатегория, а тут мы сначала находим верхнюю категорию, а потом все остальные подкатегории. Все не нужны.

Как внутри  foreach сделать проверку ?


Сообщение отредактировал axeld: 10 November 2015 - 14:41

  • 0

#4 axeld

axeld

Отправлено 11 November 2015 - 16:38

Ни у кого нет ответа?


  • 0

#5 SmetDenis

SmetDenis

Отправлено 12 November 2015 - 16:20

Вот так должно сработать

$catIds = $item->getRelatedCategoryIds();
 
if ($primary = $item->getPrimaryCategory()) {
    $children = $primary->getChildren();
    foreach ($children as $child) {
        if (in_array($child->id, $catIds)) {
            echo $child->name . ', ';
        }
    }
 
}

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#6 axeld

axeld

Отправлено 16 November 2015 - 10:51   Лучший Ответ

 

Вот так должно сработать

$catIds = $item->getRelatedCategoryIds();
 
if ($primary = $item->getPrimaryCategory()) {
    $children = $primary->getChildren();
    foreach ($children as $child) {
        if (in_array($child->id, $catIds)) {
            echo $child->name . ', ';
        }
    }
 
}

 

Да круто, вcе работает !


  • 0




Click to return to top of page in style!