我想在 cms 页面上显示我对所有产品的所有评论。有人知道怎么做吗?我正在使用 Magento 1.4.2
1 回答
这一切都取决于您使用什么模块来为 Magento 的功能提供扩展。如果您查看模块的文件夹(比如说它的 Cmdcentral/Review)
app/code/community/Cmdcentral/Review/
这是模块所在的位置(它也可能在本地)在etc
forconfig.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>
这只是告诉 Magento,当我们加载review/index/showall
路由并访问showallAction()
控制器中的函数时,将块添加到内容中。
现在块也有一个template="review/showall.phtml"
属性。去app/design/frontend/base/default
寻找一个review
目录(或任何模块被称为)。如果它不存在(我怀疑)创建它!在此创建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 时,它会变成断断续续的呜咽声!