カテゴリ別、私たちのおすすめ、最も人気のある最高評価、ホームページ自体のお気に入りのような5つの個別のタブを追加する必要があり、それぞれがページ全体をリロードせずにその下の製品をリストする必要があります. それは ajax を使用していますが、magento で可能ですか。
もしそうなら、これについて私を案内してください。
ジョセフが言ったように、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、
フロー