php forms magento

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>

Referencia

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);

  1. 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