我在Joomla中创建一个组件,显示了一个virtmart产品列表
要求是我不能直接从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 ?
答案 0 :(得分:0)
唯一存在的函数products_in_category(),但这不符合您的需要,因为它只返回产品数量。
非SQL解决方案是创建自定义VM功能并将其放入
root\components\com_virtuemart\themes\default\theme.php
如果你克隆/修改ps_product :: featuredProducts(),你应该很容易得到你想要的东西。 (另外,该文件位置假定您使用的是默认的VM主题,如安装的那样)
答案 1 :(得分:0)
要在其他组件中显示类别产品,您可以使用:
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/>";
}
}