Magento - перенаправить клиента, который попадает на страницу обзора, на страницу продукта

Есть ли способ перенаправить клиента, который попадает на страницу обзора продукта (http://mydomain.com/review/product/list/id/139/category/79/), на реальную страницу продукта?


person Joeymetro    schedule 06.12.2012    source источник
comment
Каков фактический URL-адрес страницы продукта, включен ли оптимизированный URL-адрес?   -  person Renon Stewart    schedule 06.12.2012
comment
да, перезапись URL-адреса продукта включена   -  person Joeymetro    schedule 06.12.2012
comment
Какой URL вы хотите перенаправить на site.com/seo-url.html или site.com/catalog/product/view/id/139/category/79/?   -  person Renon Stewart    schedule 07.12.2012
comment
Я бы предпочел SEO-дружественный URL-адрес, но, честно говоря, если «каталог / продукт / вид» проще, я возьму то, что могу получить. Я использовал ваш код и добавил пользовательский модуль, но все равно без изменений :( - я ценю усилия!   -  person Joeymetro    schedule 07.12.2012


Ответы (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
{
}
person Renon Stewart    schedule 06.12.2012
comment
в конфиге должно быть ‹checkout›?? - person Joeymetro; 06.12.2012
comment
Нет.. измените его на <review> - person Renon Stewart; 06.12.2012
comment
кажется, не работает. 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
comment
Добавьте свой config.xml к своему вопросу (в удобочитаемом формате)... вы создали /app/etc/modules/My_Module.xml - person Renon Stewart; 06.12.2012
comment
да, и он включен: code‹config› ‹modules› ‹Reviewr_ReviewRedirect› ‹active›true‹/active› ‹codePool›local‹/codePool› ‹/Reviewr_ReviewRedirect› ‹/modules› ‹/config›code - person Joeymetro; 06.12.2012
comment
Взгляните на мой обновленный код... также для отладки добавьте die('here'); к голове вашего контроллера - person Renon Stewart; 07.12.2012

Вы можете разместить перенаправление на метод listAction в ProductController. (приложение/код/ядро/маг/Обзор/контроллеры/ProductController.php)

Редактировать: лучше всего создать свой собственный модуль для перезаписи этого контроллера,

person erwin_smit    schedule 06.12.2012

В старом 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, если не хотите создавать для этого целый модуль.

person clockworkgeek    schedule 06.12.2012
comment
я получаю сообщение об ошибке: Предупреждение: preg_replace() [function.preg-replace]: Неизвестный модификатор '^' в /var/www/vhosts/dev.medsupplyshop.com/app/code/core/Mage/Core/Controller/Varien /Front.php в строке 257 - person Joeymetro; 06.12.2012
comment
Извинения. Я сделал простую опечатку и набрал слишком много решеток. - person clockworkgeek; 06.12.2012
comment
никаких изменений в URL-адресе. дело в том, что я не собираюсь просто переписывать URL-адрес, а скорее хочу перенаправить клиента на страницу продукта, когда он попадет на страницу обзора. - person Joeymetro; 07.12.2012