Как узнать ID категории 1-го уровня у товара?
Допустим товар "Шнурок" лежит тут:,
Одежда
- Обувь
- - Кроссовки
- - - Аксессуары
- - - - Шнурки
Как узнать ID "Одежды", то есть самой первой его категории?
Одежда
- Обувь
- - Кроссовки
- - - Аксессуары
- - - - Шнурки
Как узнать ID "Одежды", то есть самой первой его категории?
11 ответов
wa-apps/shop/lib/classes/shopCustom.class.php
<?php
class shopCustom
{
public static function getParentCat($id = null)
{
$model = new shopCategoryModel();
$cat = $model->getById($id);
while($cat["parent_id"]!=0){
$cat=$model->getById($cat[id]);
}
return $cat["id"];
}
}
В html вызываем {shopCustom::getParentCat()}
---------------------------
Код на ошибки не проверял, писал так сказать на память
Идея в том, чтобы обращаться к родительской категории пока родительская будет равна 0
Если что-то не получится в понедельник скину рабочий вариант, так как сам уже это делал
{shopCustom::getParentCat(идентификатор категории)}
В вашем варианте выполняется несколько SQL-запросов в цикле. Лучше этого избежать, получив одним запросом сразу все категории и выбирая родительские категории в полученном массиве.
Например, так можно сделать в шаблоне category.html:
Можно даже ещё проще и чуть быстрее сделать:
У меня получилось без хелпера... в Smarty по тому же принципу:
{$parentCat = $wa->shop->category($category.id)}
{while $parentCat.parent_id != 0}
{$parentCat = $wa->shop->category($parentCat.parent_id)}
{/while}
<h3>{$parentName = $wa->shop->category($parentCat.id)}{$parentName.name}</h3>
Соотвественно чтобы получить пункты каталога:
{$categories = $wa->shop->categories($parentCat.id, null, true)}
Это как раз вот этот вариант https://support.webasyst.ru/forum/1389/kak-uznat-i...
Подскажите как тут вывести key=value