【问题标题】:Magento product listing using ajax使用 ajax 的 Magento 产品列表
【发布时间】:2015-06-19 14:01:48
【问题描述】:

我必须添加 5 个单独的选项卡,例如按类别、我们的选择、最受欢迎的评分最高、主页本身的收藏夹,并且每个选项卡都应在不重新加载整个页面的情况下列出该选项卡下的产品。那是使用 ajax ,magento中可以吗?

如果是这样,请指导我。

【问题讨论】:

    标签: ajax magento product


    【解决方案1】:

    正如约瑟夫所说,可以使用 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;
                } 
            }
        }
    

    模板

    您可以在模板中调用该 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)
            });
        });
    

    希望,这会有所帮助。

    lg,

    弗洛

    【讨论】:

    • 我们可以在magento左侧的用户个人资料选项卡的前端应用这个ajax概念吗?
    • 应该没问题,我建议定义一个以 json 形式返回用户配置文件信息的操作,您只需通过 jQuery 在模板中部分呈现
    猜你喜欢
    • 1970-01-01
    • 2015-05-27
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多