Magento:在外部页面上加载评论表单

时间:2015-06-01 14:04:29

标签: php forms magento

默认情况下,评论表单的Magento网址如下:

www.domain.com/(producturl)-reviews#review-form.

但在此页面中,评论表单是评论页面中的一个部分。

我想使用以下网址在唯一页面中加载评论表单:

www.domain.com/(producturl)-review-form.

此评论表仅为此产品的表格。

我怎样才能做到这一点?

2 个答案:

答案 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

1。为此自定义模块创建自定义字体路由器

<frontend> <routers> <productview> <!-- router identifire --> <use>standard</use> <args> <modules> <module>Dev_Productreview</module> <frontName>productreview</frontName> </modules> </args> </productview> </routers> </frontend>

Refernce

2。在controller_front_init_routers

上添加一个观察者
<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);

    }

3.add路由器类

。现在您需要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;

4.从请求路径获取产品网址并保存

如果请求路径包含review-form,则保存需要变量,然后从此字符串中删除review-form

$producturl=str_replace('-review-form','',$requestPathInfo)

6。检查当前商店中的产品退出

然后使用$producturl检查product

的此路径
$Rewrite=Mage::getModel('core/url_rewrite')
                    ->setStoreId(Mage::app()->getStore()->getId())
                    ->loadByRequestPath($identifier);

7。设置内部请求模块,控制器,操作名称

如果产品退出,那么module,controller,action for this request.将会被点击

Mage_Review模块ProductController位于listAction

$request->setModuleName('review') 
            ->setControllerName('product')
            ->setActionName('list')
        ->setParam('id', $productid);
  1. 最后现在将请求别名设置为producturl-review-form,因此客户只能将laptop1-review-form作为评论页面。
  2. 希望这会对你有所帮助

    您可以在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