как показать весь список продуктов VirtueMart

Я создаю компонент в Joomla, который показывает список продуктов VirtueMart.

требование состоит в том, что я не могу использовать код непосредственно из таблицы sql.

поэтому я использую components/com_virtuemart/virtuemart_parser.php

для кода я получаю список категорий в массиве, а код

require_once( CLASSPATH . 'ps_product_category.php');
$ps_product_category = new ps_product_category();
$tpl = new $GLOBALS['VM_THEMECLASS']();
$category_childs = $ps_product_category->get_child_list(0);
$tpl->set( 'categories', $category_childs );
$categories = ps_product_category::getCategoryTreeArray(true);

из этого кода я получаю всю опубликованную категорию, но как получить все товары из категории

how to show product list, how to get product list in array ?

person Tarun Baraiya    schedule 06.03.2012    source источник


Ответы (2)


Единственная существующая функция products_in_category(), но она не соответствует вашим потребностям, поскольку возвращает только количество продуктов.

Решение, отличное от SQL, состоит в том, чтобы создать пользовательскую функцию виртуальной машины и поместить ее в

root\components\com_virtuemart\themes\default\theme.php  

Если вы клонируете/модифицируете ps_product::featuredProducts(), вы должны легко получить то, что хотите. (Кроме того, это расположение файла предполагает, что вы используете тему виртуальной машины по умолчанию, как установлено)

person GDP    schedule 29.04.2012

Чтобы показать продукты категорий в другом компоненте, вы можете использовать это:

if (!class_exists( 'VmConfig' )) require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'config.php');
VmConfig::loadConfig();
if (!class_exists( 'VmModel' )) require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'vmmodel.php');
$categoryModel = VmModel::getModel('Category');
$cats = $categoryModel->getCategoryTree();//Params $parentId=0, $level = 0, $onlyPublished = true,$keyword = ''
if (!class_exists('VirtueMartModelProduct')) require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'product.php');
$product_model = new VirtueMartModelProduct();
for ($x = 0; $x < count($cats); $x++) {
    echo $cats[$x]->category_name."<Br/>";
    $products = $product_model->getProductsInCategory($cats[$x]->virtuemart_category_id);
    for ($i = 0; $i < count($products); $i++) {
        echo "- ".$products[$i]->product_name."<Br/>";
    }
}
person Nacef.T    schedule 26.12.2014