Иногда нужно сделать так, что бы в Virtuemart стандартный модуль категорий товаров выводил не все опубликованные категории, а только выборочные. Тоесть представилась возможность размещения нескольких модулей с разными категориями товаров.
Ниже приведен хак как это можно сделать очень быстро. Вы можете "изуродовать" ваш стандартный модуль или сделать из него еще один модифицированный и добавить в модули сайта.
Итак, сначала делаем изменения в файле /modules/mod_product_categories/mod_product_categories.xml
Добавляем в секцию params
< param name="show_categories" type="text" default=""
label="Categories"
description="Категории для показа" />
Затем изменяем файл /modules/mod_product_categories/mod_product_categories.php, где добавляем (жирным):
$jscook_type = $params->get( 'jscook_type', 'menu' );
$menu_orientation = $params->get( 'menu_orientation', 'hbr' );
$show_categories = $params->get( 'show_categories', '' );
$_REQUEST['root_label'] = $params->get( 'root_label', 'Shop' );
И наконец модифицируем файл /administrator/components/com_virtuemart/classes/ps_product_category.php
Находим функцию "get_category_tree" и добавляем в самом начале определения функции:
function get_category_tree( $category_id=0,
$links_css_class="mainlevel",
$list_css_class="mm123",
$highlighted_style="font-style:italic;font-weight: bold;" ) {
global $sess, $show_categories;
$show_array_categories=explode(" ",$show_categories);
$categories = ps_product_category::getCategoryTreeArray(); // Get array of category objects
Далее находим и добавляем:
if (
in_array( $category_tmp[$row_list[$n]]["category_child_id"] , $show_array_categories, true)
or
in_array( $category_tmp[$row_list[$n]]["category_parent_id"] , $show_array_categories, true)
)
{
$html .= '
< a title=".$catname." style="display:block;'.$style.'" class=". $css_class ." href="'." $sess-="$sess-" > url(URL."index.php?page=shop.browse&category_id=".$category_tmp[$row_list[$n]]["category_child_id"]) .'" '.$append.'>'
. str_repeat(" ",$depth_list[$n]) . $catname
. ps_product_category::products_in_category( $category_tmp[$row_list[$n]]["category_child_id"] )
.'';
}
}
}
return $html;
}
Вот собственно и все. Теперь в настройках модуля прописываем через пробел нужны категории и только они будут отражены в дереве каталога продукции.
Комментарии
virtuemart 1.1.9 joomla 1.5.25 при добавлении в функцию "get_category_tr ee" if пропадает весь модуль
Как уже отмечалось выше, ничего не меняется при прописании конкретных категорий в модуле mod_product_cat egories, после предложенной Вами доработки.
Откликнитесь пожалуйста. Может есть ещё какие-то ньюансы?
Проверял на VirtueMart 1.1.7, Joomla 1.5.25.
Ничего не меняется, все категории выводятся скопом, как обычно.
Выполнил все вышеперечисленн ое, все отпарсилось хорошо, но эффекта никакого не происходит. Как выводилось все кучей, так и выводится... В чем может быть проблема? Версия VirtueMart 1.1.9 stable. на joomla 1.5.
Установил VirtueMart 2 RUS, начал настраивать....и,- засада, раньше в модуле категорий была возможность выбрать отображение списка (links, dTreе.. и т.д)сейчас такого нет.
Есть отдельный модуль для такого отображения или может во 2-м вирте это где-то зарыто???? помогите разобраться.
Спасибо.