[Помощь] Отображение товаров в родительской категории VirtueMart

Статус
В этой теме нельзя размещать новые ответы.

MiKelangelo

Писатель
Регистрация
2 Мар 2010
Сообщения
7
Реакции
0
Уважаемые подскажите такую вещь.
Возможно ли в VirtueMart 1.1.4 для J!1.5 сделать так чтобы товар отображался и в родительской категории, помимой той к которой он принадлежит.
Например, есть родительская категория "1", в ней есть подкатегория "2" и подкатегория "3" (в ней 4 товара), а в подкатегории "2" есть ещё две подкатегории "4" (в них допустим 5 товаров) и "5" (в ней 3 товара). Так вот сейчас если пользователь заходит категорию "1" , то ему отображаются подкатегории, без товаров в них (про количество я не спрашиваю), а как сделать так, чтобы пользователю отображались и подкатегории и все товары в них.
В моём примере, если пользователь в категории "1", то ему отображаются 2 подкатегории ("2" и "3") и 12 товаров (из категорий "4", "5," и "3"). Если пользователь переходит в категорию "2", то ему отображаются две подкатегории "4" и "5" и все товары в них (8 товаров), ну и если он переходит в категорию "4", то ему отображаются товары только из этой категории.
Как можно так сделать в VirtueMart ? В ShopScript такая возможность была.
 
Жалко, что никто не знает.

Чтобы сделать то что я спрашивал надо:
1. В файле administrator/components/com_virtuemart/classes/ps_product_category.php
добавить функцию "untreeCat" в конце класса.

/*
* Returns an array of the categories ids recursively for a given category
* untreeCat copy lashae (virtuemart forum Для просмотра ссылки Войди или Зарегистрируйся)
* @param int $kat
* @param int $container
* rewritten by haselnuss (to use ps_DB class and store the function in ps_product_category.php)
*/
function untreeCat($kat, &$container) {
$db = new ps_DB;
$q = "SELECT category_child_id FROM #__{vm}_category_xref WHERE category_parent_id='$kat'";
$db->query($q);
// if it is a leaf (no data underneath it) then return
if (!$db->num_rows()) {
return;
}
//else append the result, and recurse the function (so to speak)
else
{
while($db->next_record()) {
$container[] = $db->f("category_child_id");
$kat = $db->f("category_child_id");
$this->untreeCat($kat, $container);
}
}
}

2. В файле administrator/components/com_virtuemart/html/shop_browse_queries.php заменить:
// Filter Products by Category
if( $category_id ) {
if( !empty( $search_this_category ) && (!empty( $keyword ) || !empty( $manufacturer_id ) )) {
$where_clause[] = "`#__{vm}_product_category_xref`.`category_id`=".$category_id;
} elseif( empty( $keyword ) && empty( $manufacturer_id )) {
$where_clause[] = "`#__{vm}_product_category_xref`.`category_id`=".$category_id;
}
}
на:
// Filter Products by Category
/*
* Returns an array of the categories ids recursively for a given category
* untreeCat copy lashae (virtuemart forum Для просмотра ссылки Войди или Зарегистрируйся)
* rewritten by Creb (to use shop.browse page detection)
*/
if( $category_id ) {
if( !empty( $search_this_category ) && (!empty( $keyword ) || !empty( $manufacturer_id ) )) {
$where_clause[] = "`#__{vm}_product_category_xref`.`category_id`=".$category_id;
} elseif( empty( $keyword ) && empty( $manufacturer_id )) {

if ($_GET["page"]=="shop.browse") {
//$where_clause[] = "`#__{vm}_product_category_xref`.`category_id`=".$category_id;
$kategoriListesi = array();
$ps_product_category->untreeCat($category_id, $kategoriListesi);
$qkat = " `#__{vm}_product_category_xref`.`category_id` IN(".$category_id . ",";
foreach ($kategoriListesi as $kat)
{
$qkat .= $kat . ',';
}
$qkat .= ")";

$qkat = str_replace(',)', ')', $qkat);
$where_clause[] = $qkat;
} else {
$where_clause[] = "`#__{vm}_product_category_xref`.`category_id`=".$category_id;
}

}
}

В принципе и все.
Источник форумы virtuemart. Ссылка есть в коде.
 
VM 1.1.4 J1.5
Не заработало. Ошибка: - unexpected T_STRING, expecting T_VARIABLE or '$' в файле shop_browse_queries.php в первой строке $where_clause[] = "`#__{vm}_product_category_xref`.`category_id`=".$ category_id;
 
Ура!!Получилось.VM 1.1.4 J1.5
Внесу маленькое объяснение, потому что лично для меня было непонятно где заканчивается класс в ps_product_category.php и куда надо вставлять код.
Правим : /administrator/components/com_virtuemart/classes/ps_product_category.php
Между "function sort_alphabetically..." и "// Check if there is an extended "
Обратите внимание, что код нужно вставлять между второй и третей "}".
С administrator/components/com_virtuemart/html/shop_browse_queries.php все просто.
Скрины:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 
Если всё это проделать, то не работает сортировка по по производителю именно в этом разделе. Выдаёт весь товар производителя, имеющийся на сайте.

Кто может помочь?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху