ajax - 使用 ajax 的 Magento 产品列表

标签 ajax magento product

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

如果是这样,请指导我。

最佳答案

正如约瑟夫所说,人们可以用 AJAX 调用 Magento Controller Action 。

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

新模块

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

Controller

比方说,你有你的模块和 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 使用原型(prototype)的事实 - 您可能需要注意命名空间冲突)

尽管如此,这里是一个示例调用(我将它绑定(bind)到元素上的单击事件):
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,

弗洛

关于ajax - 使用 ajax 的 Magento 产品列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3876725/

相关文章:

php - AJAX PHP-加载前一个插入的记录而不是第一个

magento - Instagram API 权限被拒绝 Magento 扩展

magento - 如何在 Magento 中将 AND 过滤器/条件添加到 OR 条件?

php - 我可以在请求的 javascript 中访问我的 ajax 请求的 href 吗?

javascript - 使用 JSON 将事件映射到 FullCalendar

javascript - 如何将二维 PHP 数组编码为 JSON 数组以便在 JavaScript 中解码?

magento - 为自定义模块扩展 Varien Form 元素

php - 限制 WP_Query 和 WooCommerce 产品查询中的帖子

php - 在 WooCommerce 单一产品标题下显示自定义字段

php - WooCommerce的product_type属性在产品可变时返回简单