Сменить роутер в Magento - PullRequest
       3

Сменить роутер в Magento

1 голос
/ 06 сентября 2011

У меня есть ссылка, как показано ниже:

index.php/catalog/product/offer/id/1/cid/100/
  • id param означает идентификатор продукта

  • cid paramозначает идентификатор клиента

Теперь, если я хочу изменить эту ссылку, как сопоставить с маршрутизатором, например:

index.php/offer/id/1/cid/100/

Как я могу это сделать?

1 Ответ

6 голосов
/ 06 сентября 2011

Если у вас есть конечный набор значений идентификаторов, вы можете создать равное количество правил перезаписи, например, . Идея состоит в том, чтобы сопоставить (т. Е. Один к одному) каждый возможный URL-адрес с сокращенной формой.


Однако, поскольку количество клиентов находится вне вашего контроля, может быть лучше использовать устаревшую XML-переписку, как описано в Magento Wiki .

<config>
    ...
    <global>
        <rewrite>
            <vietean_catalog_product_offer>
                <from><![CDATA[#^offer/#]]></from>
                <to>catalog/product/offer/</to>
            </vietean_catalog_product_offer>
        </rewrite>
    </global>
</config>

Если это не сработает, третий вариант - создать URL-адреса, такие как index.php/offer?id=1&cid=100, что не так красиво. URL будет затем переведен в offer/index/index. Дайте существующему маршрутизатору имя offer, назовите контроллер IndexController и действие indexAction.

<config>
    ...
    <frontend>
        <routers>
            <vietean_example> <!-- This tag can be any unique value -->
                <use>standard</use> <!-- standard because it's the frontend -->
                <args>
                    <module>Vietean_Example</module>
                    <frontName>offer</frontName> <!-- First part of URLs -->
                </args>
            </vietean_example>
        </routers>
    </frontend>
</config>

Контроллер может обращаться к параметрам URL точно так же, как и раньше;

$id = $this->getRequest()->get('id');
$cid = $this->getRequest()->get('cid');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...