默认情况下,评论表单的Magento网址如下:
www.domain.com/(producturl)-reviews#review-form.
但在此页面中,评论表单是评论页面中的一个部分。
我想使用以下网址在唯一页面中加载评论表单:
www.domain.com/(producturl)-review-form.
此评论表仅为此产品的表格。
我怎样才能做到这一点?
答案 0 :(得分:4)
在这种情况下,它将better idea
创建自定义路由,如Mage_Cms
模块。
取决于request path using Custom route match
internally
设置
request path
modules ->Mage_Review
controller ->ProductController.php
Action ->listAction.
客户会看到
http://www.domain.com/laptop1-review-form
但在内部它会打到
http://www.domain.com/review/product/list/id/33661/
此处
`laptop1` is `product url_path` value
`33661` is `product id`
`-reviews-form` suffix for review url as you want
<frontend>
<routers>
<productview> <!-- router identifire -->
<use>standard</use>
<args>
<modules>
<module>Dev_Productreview</module>
<frontName>productreview</frontName>
</modules>
</args>
</productview>
</routers>
</frontend>
<controller_front_init_routers>
<observers>
<add_review_route> <!-- observer identifier -->
<class>Dev_Productreview_Controller_Router</class>
<method>initControllerRouters</method>
</add_review_route>
</observers>
</controller_front_init_routers>
This observer add new routers
public function initControllerRouters($observer){
$front=$observer->getEvent()->getFront();
$front->addRouter('productreview',$this);
}
。现在您需要define router class at Controller folder not controllers folders
使用match ()
的位置检查request path match with your pattern (producturl)-review-form.
。检查字符串review-form
退出此request path
()reference
$requestPathInfo=trim($request->getPathInfo(),'/');
if(strpos($requestPathInfo,'-review-form')==false):
return false;
endif;
如果请求路径包含review-form
,则保存需要变量,然后从此字符串中删除review-form
。
$producturl=str_replace('-review-form','',$requestPathInfo)
然后使用$producturl
检查product
$Rewrite=Mage::getModel('core/url_rewrite')
->setStoreId(Mage::app()->getStore()->getId())
->loadByRequestPath($identifier);
如果产品退出,那么module,controller,action for this request.
将会被点击
Mage_Review
模块ProductController
位于listAction
$request->setModuleName('review')
->setControllerName('product')
->setActionName('list')
->setParam('id', $productid);
producturl-review-form
,因此客户只能将laptop1-review-form作为评论页面。希望这会对你有所帮助
您可以在Github
获取完整的模块在本单元中,我进行了以下评论:
http://YOurmagentoInstanceurl/linen-blazer-585.html-review-form
产品网址
http://YOurmagentoInstanceurl/linen-blazer-585.html
答案 1 :(得分:0)
在您的review-form phtml文件中,直接致电评论栏。
$this->getLayout()
->createBlock("review/product_view_list")
->setTemplate("review/product/view/list.phtml")
->toHtml();
您可以在xml布局文件中找到所有块名称和块模板(例如:http://doc-magento.com/nav.html?app/design/frontend/base/default/layout/review.xml.source.html)