Список продуктов Magento с использованием ajax - PullRequest
3 голосов
/ 07 октября 2010

Мне нужно добавить 5 отдельных вкладок, таких как «По категориям», «Наши выборы», «Самые популярные с самым высоким рейтингом», «Избранное» на самой домашней странице, и каждая из них должна перечислить продукты по этой категории без полной перезагрузки страницы.То есть, используя ajax, возможно ли это в magento.

Если да, то, пожалуйста, объясните мне это.

1 Ответ

11 голосов
/ 05 ноября 2010

С помощью 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/ указывает на вашу indexAction () в вашем IndexController.Ваш 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 использует прототип - вы, возможно, захотите следить за конфликтами пространства имен)

Как бы то ни было, вот пример вызова (я связал его с событием click на элементе):

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,

flo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...