使用ajax的Magento产品列表

Ela*_*gan 3 ajax product magento

我必须添加5个单独的标签,例如按类别,我们的选择,最受欢迎的最高评级,您在主页本身的收藏,并且每个标签都应该列出那个没有完整页面重新加载的产品.那是使用ajax,是否有可能在magento.

如果是这样,请指导我.

Flo*_*ian 11

正如约瑟夫所说,可以用AJAX调用Magento控制器动作.

我们在最近的一个项目中使用了这样的方法:

新模块

创建一个新模块并在其中创建一个新控制器.这可以通过常规方式完成,网上有一些关于它的教程 - 例如http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/custom_module_with_custom_database_table - 忽略数据库部分,它是控制器部分有趣的是什么.

控制器

比方说,你的模块和http:// yourmagento/yourmodule/index /指向IndexController中的indexAction().您的IndexController可能如下所示:

<?php class YourNamespace_YourModule_IndexController extends Mage_Core_Controller_Front_Action {

        public function indexAction() {
            $id = $this->getRequest()->getParam('id');

            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' => ''.$helper->htmlEscape($_product->getName()).'',
                                'url' => ''.$_product->getProductUrl().'',
                                'description' => ''.nl2br($_product->getShortDescription()).'',
                                'price' => ''.$_product->getFormatedPrice().'');
                }

                $data = json_encode($items);

                echo $data;
            } 
        }
    }
Run Code Online (Sandbox Code Playgroud)

模板

您可以在模板中调用该URL,例如通过jQuery(我喜欢使用它,但是,请注意事实,magento使用原型 - 您可能想要查找命名空间冲突)

尽管如此,这是一个示例调用(我将它绑定到元素上的单击事件):

var url = 'http://yourmagento/yourmodule/index/';
var value = 32; // your category id

    $('#clickMe').click(function() {
        $.ajax({
            url: url,
            type: 'POST',
            data: {id: value},
            success: function(data) {
            // you get the json back and can populate your html with it (e.g. your tab)
        });
    });
Run Code Online (Sandbox Code Playgroud)

希望,这有帮助.

LG,

FLO