阿贾克斯在Magento

时间:2011-09-16 18:01:07

标签: ajax magento

我一直在阅读magento中的ajax,他们谈论模块和控制器很多,所以在管理设置自定义模块,控制器和前端路由器之后 我现在遇到问题,目前我只想让我的ajax调用返回一个类别页面及其产品,具体取决于id / param发布到控制器的内容。我不太了解PHP,所以我环顾四周,穿过这个

控制器

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;
        }
     $this->loadLayout(array('helloworld_index_index'));
     $this->renderLayout();
    }
}

我知道这不是我需要的,但我很难在magento中掌握ajax 我的想法是:

  1. 在ajax调用中我将类别的ID发送到控制器
  2. 控制器然后对所选类别的产品进行排列
  3. 将产品数组发送/样式化为模板文件,然后将其发送回
  4. 如果有人能帮助我,我会真的很棒

    谢谢

4 个答案:

答案 0 :(得分:1)

此扩展程序可以帮助您在Magento中使用AJAX:Magento Ajax Scroll Catalog 它通过类别页面,搜索结果和高级搜索结果页面中的Ajax / JSON加载产品列表。

答案 1 :(得分:0)

有一个模块可以帮助您在Ajax中工作 http://www.magentocommerce.com/magento-connect/ajaxify-8411.html

答案 2 :(得分:0)

从代码中,您最终通过以下方式呈现页面布局:

$this->renderLayout();

这就是你的问题所在。尝试将数组编码的数据组织成Json格式。

$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));

然后回来。

答案 3 :(得分:0)

您可以使用

http://github.com/hws47a/VF_EasyAjax

允许前端开发人员为每个页面发送ajax请求并获取Json响应。 您不需要使用Manento的app / code部分并更改任何PHP代码。 使用布局xmls,主题模板和javascript,通过Ajax完成所需的工作。

在Json响应中,开发人员可以收到:

  • 添加到会话
  • 的所有邮件
  • 当前页面布局中的一些块
  • 应添加到特殊布局xml
  • 的任何块