すべての製品のすべてのレビューをcmsページに表示したいと思います。誰かがこれを行う方法を知っていますか?Magento1.4.2を使用しています
1 に答える
それはすべて、Magento の機能にその拡張機能を提供するために使用しているモジュールに依存します。モジュールのフォルダーを見ると (Cmdcentral/Review としましょう)
app/code/community/Cmdcentral/Review/
これは、モジュールが存在する場所です (ローカルにもある可能性があります) etc
for を見てくださいconfig.xml
。次のようなセクションがあります。
<config>
...
<global>
....
<models>
<review>
<class>Cmdcentral_Review_Model</class>
</review>
<review_mysql4>
<class>Cmdcentral_Review_Model_Mysql4</class>
<entities>
<reviews>table_in_database</reviews>
</entities>
</review_mysql4>
</models>
.....
</global>
...
</config>
これはあなたが持っているものによって異なります。<entities></entities>
重要なのは、私の場合は内部のノードの名前です<reviews></reviews>
次に、次のような新しい関数を作成するためのcontrollers
フォルダーを確認できます。IndexController.php
public function showallAction(){
$this->loadLayout();
$this->renderLayout();
}
次に、このためのブロックを作成し、新しいブロックを作成しapp/code/community/Cmdcentral/Review/Blocks
て呼び出す必要がありますShowall.php
ブロックは次のようになります。
<?php class Cmdcentral_Review_Block_Showall extends Mage_Core_Block_Template{
public function getAllReviews(){
return Mage::getModel('review/reviews')->getCollection();
}
}
review
はモジュール名であり、 のノードreviews
内で見たエンティティです。<entities></entities>
config.xml
次にapp/design/frontend/
、ここから出発します。探しているファイルは、おそらくbase/default
別のテーマのフォルダーにありますが、別のテーマのフォルダーにもある可能性があります。探しているファイルは次のModulename.xml
ようになります。私の場合はapp/design/frontend/base/default/layout/Review.xml
、レイアウト ファイルを開きます。これを<layout></layout>
ノード内に追加するだけです。
<review_index_showall>
<reference name="content">
<block type="review/showall" name="showall" template="review/showall.phtml"/>
</reference>
<review_index_showall>
review/index/showall
これは単に、ルートをロードshowallAction()
してコントローラーの関数にアクセスするときに、ブロックをコンテンツ内に追加するように Magento に指示するだけです。
ブロックにもtemplate="review/showall.phtml"
属性が追加されました。ディレクトリ(またはモジュールが呼び出されたもの)をapp/design/frontend/base/default
探しに行きます。review
存在しない場合は (私には疑わしい)、作成してください! この中で create showall.phtml
. だから今、あなたはそれが次のように見えるはずですapp/design/frontend/base/default/review/showall.phtml
このファイルを開いて、ページを作成します。~ふぅ!
$this->getAllReviews()
を使用してレビュー/レビュー コレクションを取得し、次のようにすることを忘れないでください。
$reviews = $this->getAllReviews();
foreach($reviews as $review){
echo $review->getData('column_name');
#or
echo $review->getColumnName();
#does the same thing
}
これが役に立てば幸いです。間違いはありませんでした。最初は Magento に泣かされますが、Magento に慣れると断続的な泣き声に変わります。