php - Magento: carga el formulario de revisión en la página externa
forms (2)
En su archivo phtml de formulario de revisión, llame directamente al bloque de revisión.
$this->getLayout()
->createBlock("review/product_view_list")
->setTemplate("review/product/view/list.phtml")
->toHtml();
Puede encontrar todos los nombres de bloques y plantillas de bloques en archivos de diseño xml (ejemplo aquí: http://doc-magento.com/nav.html?app/design/frontend/base/default/layout/review.xml.source.html )
Por defecto, la URL de Magento para el formulario de revisión es como:
www.domain.com/(producturl)-reviews#review-form.
Pero en esta página, el formulario de revisión es una sección en la página de comentarios.
Deseo cargar el formulario de revisión en una página única con esta URL:
www.domain.com/(producturl)-review-form.
Este formulario de revisión solo será el formulario para este producto.
¿Cómo puedo lograr eso?
En este caso, será better idea
crear una ruta personalizada como el módulo Mage_Cms
.
Donde depende la request path using Custom route match
establece internally
la request path
modules ->Mage_Review
controller ->ProductController.php
Action ->listAction.
El cliente verá eso como
http://www.domain.com/laptop1-review-form
pero internamente llegó a
http://www.domain.com/review/product/list/id/33661/
aquí
`laptop1` is `product url_path` value
`33661` is `product id`
`-reviews-form` suffix for review url as you want
1. crea un enrutador de fuente personalizado para este módulo personalizado
<frontend> <routers> <productview> <!-- router identifire --> <use>standard</use> <args> <modules> <module>Dev_Productreview</module> <frontName>productreview</frontName> </modules> </args> </productview> </routers> </frontend>
2. Agregue un observador en 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.añadir clase de enrutador
. Ahora necesita define router class at Controller folder not controllers folders
Cuando use match ()
compruebe la request path match with your pattern (producturl)-review-form.
. check-string string review-form
exits en esta referencia request path
()
$requestPathInfo=trim($request->getPathInfo(),''/'');
if(strpos($requestPathInfo,''-review-form'')==false):
return false;
endif;
4. Obtenga la URL del producto de la ruta de solicitud y guárdela
Si la ruta de solicitud contiene review-form
entonces guardar requiere una variable y luego eliminar review-form
de review-form
de esta cadena.
$producturl=str_replace(''-review-form'','''',$requestPathInfo)
6. Verifique las salidas del producto en la tienda actual
Luego, usando $producturl
compruebe esta ruta para qué product
$Rewrite=Mage::getModel(''core/url_rewrite'')
->setStoreId(Mage::app()->getStore()->getId())
->loadByRequestPath($identifier);
7. Establecer módulo de solicitud interna, controlador, nombre de acción
Si el producto sale, entonces module,controller,action for this request.
que será golpeado
Mage_Review
Module ProductController
at listAction
$request->setModuleName(''review'')
->setControllerName(''product'')
->setActionName(''list'')
->setParam(''id'', $productid);
- Finalmente, ahora establece el alias de solicitud como
producturl-review-form
lo que el cliente solo puede portar1-revisar-formulario como página de revisión.
Espero que esto te ayudará
puedes obtener el módulo completo en Github
En este módulo, he hecho una revisión como:
http://YOurmagentoInstanceurl/linen-blazer-585.html-review-form
siempre que la URL del producto sea
http://YOurmagentoInstanceurl/linen-blazer-585.html