1 1 1 1 1 1 1 1 1 1 Рейтинг: 4.25 - 2 отзывов

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

Интересует нас файл http://ваш_сайт\modules\mod_jshopping_categories\helper.php

Перед тем как изменять какой-то файл, обычно я сохраняю оригинальный как "_old", например helper_old.php. Всегда потом можно вернуться назад, если что-то пошло не так.

Выглядит он примерно так:

 (Кстати, ты уже расположил товары горизонтально в JoomShopping?)

<?php
class jShopCategoriesHelper{

// ВОТ СЮДА БУДЕМ ВСТАВЛЯТЬ КОД ................ 


public static function getTreeCats($order, $ordering, $category_id, $categories_id, &$categories, $level=0){
if ($category_id){
if (isset($categories_id[$level])){
$cat = JTable::getInstance('category', 'jshop');
$cat->load($categories_id[$level]);

$cats = $cat->getSisterCategories($order, $ordering);
foreach ($cats as $key=>$value){
$value->level = $level;
if (in_array($value->category_id, $categories_id)){
$categories[] = $value;
// get Children cats
if ($value->category_id == $category_id){
$cat = JTable::getInstance('category', 'jshop');
$cat->load($categories_id[$level]);
$cat->category_id = $category_id;
$childs = $cat->getChildCategories($order, $ordering);
foreach ($childs as $key2=>$value2){
$value2->level = $level + 1;
$categories[] = $value2;
}
}
jShopCategoriesHelper::getTreeCats($order, $ordering, $category_id,$categories_id, $categories, ++$level);
$level--;
} else {
$categories[] = $value;
}
}
}
} else {
$cat = JTable::getInstance('category', 'jshop');
$cat->category_parent_id = 0;
$cats = $cat->getSisterCategories($order, $ordering);
foreach($cats as $key=>$value){
$cats[$key]->level = 0;
}
$categories = $cats;
}

}


 // ВОТ ДО СЮДА ВСЕ СТИРАЕМ И ВМЕСТО ЭТОГО ВСТАВЛЯЕМ КОД

 


public static function getCatsArray($order, $ordering, $category_id, $categories_id = array()){
$res_arr = array();
jShopCategoriesHelper::getTreeCats($order, $ordering, $category_id, $categories_id, $res_arr, 0);
return $res_arr;
}

}
?>

Место, куда будем вставлять код, обозначено. Все что между моими надписями БОЛЬШИМИ БУКВАМИ, необходимо стереть. И в это место вставить код:

function getTreeCats($order, $ordering, $category_id, $categories_id, &$categories, $level=0){
$cat = &JTable::getInstance('category', 'jshop');
$cat->category_parent_id = 0;
$cats = $cat->getSisterCategories($order, $ordering);
foreach($cats as $key=>$value){
$cats[$key]->level = $level;
$categories[] = $value;
jShopCategoriesHelper::getTreeCats2($order, $ordering, $value->category_id, $categories_id, $categories, $level);
}
}

function getTreeCats2($order, $ordering, $category_id, $categories_id, &$categories, $level){
++$level;
$cat = &JTable::getInstance('category', 'jshop');
$cat->category_id = $category_id;
$cats = $cat->getChildCategories($order, $ordering);
foreach($cats as $key=>$value){
$cats[$key]->level = $level;
$categories[] = $value;
jShopCategoriesHelper::getTreeCats2($order, $ordering, $value->category_id, $categories_id, $categories, $level);
}
}

Файлы helper могут немного отличаться, главное увидеть, что код вставляем ДО public static function getCatsArray.

Теперь модуль вывода категорий JoomShopping, станет выводить и подкатегории.

Добавить комментарий

Защитный код
Обновить