3

カテゴリ別、私たちのおすすめ、最も人気のある最高評価、ホームページ自体のお気に入りのような5つの個別のタブを追加する必要があり、それぞれがページ全体をリロードせずにその下の製品をリストする必要があります. それは ajax を使用していますが、magento で可能ですか。

もしそうなら、これについて私を案内してください。

4

1 に答える 1

11

ジョセフが言ったように、AJAX を使用して Magento コントローラー アクションを呼び出すことができます。

最近のプロジェクトの 1 つで、次のようなアプローチを使用しました。

新しいモジュール

新しいモジュールを作成し、その中に新しいコントローラーを作成します。これは通常の方法で行うことができ、それに関する Web 上のチュートリアルがいくつかありますコントローラー部分の面白いところ。

コントローラー

モジュールがあり、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;
            } 
        }
    }

テンプレート

たとえばjQueryを介して、テンプレートでそのURLを呼び出すことができます(ただし、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、

フロー

于 2010-11-05T12:59:12.403 に答える