Есть ли способ перенаправить клиента, который попадает на страницу обзора продукта (http://mydomain.com/review/product/list/id/139/category/79/), на реальную страницу продукта?
Magento - перенаправить клиента, который попадает на страницу обзора, на страницу продукта
Ответы (3)
Предполагая, что URL-адрес, оптимизированный для SEO, включен, вы можете создать собственный модуль, который расширяет обзор/продукт и переписывает метод listAction.
В /app/etc/modules/MageIgniter_ReviewRedirect.xml
<?xml version="1.0"?>
<config>
<modules>
<MageIgniter_ReviewRedirect>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
</MageIgniter_ReviewRedirect>
</modules>
</config>
В /app/code/local/MageIgniter/ReviewRedirect/controller/ReviewController.php
include_once 'Mage/Review/controllers/ProductController.php';
class MageIgniter_ReviewRedirect_ReviewController extends Mage_Review_ProductController
{
public function listAction(){
if ($product = $this->_initProduct()) {
$this->_redirect($product->getUrl());
}
}
в /app/code/local/MageIgniter/ReviewRedirect/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<MageIgniter_ReviewRedirect>
<version>0.1.0</version>
</MageIgniter_ReviewRedirect>
</modules>
<frontend>
<routers>
<reviewredirect>
<use>standard</use>
<args>
<modules>
<MageIgniter_ReviewRedirect before="Mage_Review">MageIgniter_ReviewRedirect<MageIgniter_ReviewRedirect>
</modules>
<frontName>review</frontName>
</args>
</reviewredirect>
</routers>
</frontend>
<global>
<helpers>
<reviewredirect>
<class>MageIgniter_ReviewRedirect_Helper</class>
</reviewredirect>
</helpers>
</global>
</config>
В /app/code/local/MageIgniter/ReviewRedirect/Helper/Data.php
<?php
class MageIgniter_ReviewRedirect_Helper_Data extends Mage_Core_Helper_Abstract
{
}
<review>
- person Renon Stewart; 06.12.2012
code
‹config› ‹modules› ‹/modules› ‹frontend› ‹routers› ‹review› ‹args› ‹modules› ‹Reviewr_ReviewRedirect before=Mage_Review›Reviewr_ReviewRedirect‹/Reviewr_ReviewRedirect› ‹/modules› ‹/args› ‹/review /routers› ‹/frontend› ‹/config›code
затем добавил каталог «controllers» и добавил ProductController.php с вашим кодом выше
- person Joeymetro; 06.12.2012
code
‹config› ‹modules› ‹Reviewr_ReviewRedirect› ‹active›true‹/active› ‹codePool›local‹/codePool› ‹/Reviewr_ReviewRedirect› ‹/modules› ‹/config›code
- person Joeymetro; 06.12.2012
Вы можете разместить перенаправление на метод listAction в ProductController. (приложение/код/ядро/маг/Обзор/контроллеры/ProductController.php)
Редактировать: лучше всего создать свой собственный модуль для перезаписи этого контроллера,
В старом Magento есть несуществующая функция, для которой требуется только конфигурация модуля:
<config>
<global>
<rewrite>
<yourmodulename>
<from><![CDATA[#^/review/product/list#]]></from>
<to><![CDATA[/catalog/product/view]]></to>
</yourmodulename>
</rewrite>
</global>
</config>
Под ним просто используется preg_replace
по запрошенному пути, поэтому у вас не должно быть проблемы с пониманием шаблонов PCRE. Проявив немного воображения, вы могли бы даже объединить все вышеперечисленное в app/etc/local/xml
, если не хотите создавать для этого целый модуль.