【发布时间】:2016-07-26 16:59:58
【问题描述】:
我正在构建一个 magento 扩展,我需要在左侧栏上按树形顺序显示所有产品,然后单击每个类别将通过发送 ajax 请求加载类别的产品。为了显示类别树,我使用了一个块。
我是 magento 的新手,所以我想向我的控制器发送 ajax 请求,以JSON 获取所有产品数据,并在前端创建 HTML 以显示产品。
我用2 column left bar的产品列表获取了基本主题的HTML,并在ajax方法中使用。我曾经喜欢过
function loadCategoryProducts(categoryId) {
jQuery.ajax({
url: '/myModule/index/loadcategoryproduct',
type: 'post',
data: {categoryId: categoryId},
success: function(products) {
products = jQuery.parseJSON(products);
if (products != '') {
var html = '';
html += '<div class="page-title category-title">';
// blah blah blah blah blah to draw html from ajax request
}
html += '</ul>';
html += '</div>' // end of category-products product
jQuery('.col-main').html(html);
}
}
});
}
还有我的控制器代码
public function loadcategoryproductAction() {
$id = $this->getRequest()->getParam('categoryId');
if ($id) {
$_category = Mage::getModel('catalog/category')->load($id);
$product = Mage::getModel('catalog/product');
//load the category's products as a collection
$_productCollection = $product->getCollection()
->addAttributeToSelect('*')
->addCategoryFilter($_category)
->load();
// build an array for conversion
$json_products = array();
foreach ($_productCollection as $_product) {
$_product->getData();
$json_products[] = array(
'name' => $_product->getName(),
'url' => $_product->getProductUrl(),
'description' => nl2br($_product->getShortDescription()),
'price' => $_product->getFormatedPrice(),
'image' => $_product->getImageUrl());
}
$data = json_encode($json_products);
echo $data;
die;
}
}
效果很好,但我知道这只是一个静态的东西,因为我使用的是基本主题的 HTML 和 CSS。它只适用于这个主题。如果magento商店的主题改变了怎么办?
那么我正在寻找的是如何在当前活动主题中显示产品?我只是向我的控制器发送 ajax 请求,获取产品并且这些产品必须以当前主题布局呈现?必须有一种方法可以做到这一点,但我仍然无法找到。我用谷歌搜索但一切都是徒劳的。我不喜欢为它使用任何内置扩展。我希望我的扩展能够完成这一切。请指导。
【问题讨论】:
-
这是一个没有人回答的棘手问题还是太无聊了?