2012-10-04 3 views
1

Я хотел бы добавить пользовательский URL-адрес нашей корзины Magento. Magento из-под коробки url paht есть/checkout/cart, но клиентский запрос/checkout/bag.Пользовательский URL-адрес страницы корзины Magento

Я попытался каким-то образом * Управление переходом URL в бэкэнд - это работает, но мне нужно обновить все вхождения в коде до нового URL-адреса, потому что $ this-> getUrl ('checkout/cart') не переводит в checkout/bag * Также я попытался последовать за некоторыми советами от http://alanstorm.com/magento_dispatch_rewrites_intro, но basicaly это тоже не помогает мне. * я также попробовал пример с этого поста http://phprelated.myworks.ro/two-add-to-cart-buttons-with-different-redirect-actions-at-once-in-magnto/

Итак, есть ли способ, как я могу переписать перевод с путем «выписка/корзиной» в кассе/мешок без обновления всех вхождений в наших шаблонах и классах $ this-> GetURL ('checkout/cart')

Любое решение в зависимости от архитектуры веб-сервера не является окончательным решением.

ответ

5

Я нашел решение

1) Я переписан модели core/url иметь требуемого выходного

EDIT 1 - пример реализации https://gist.github.com/jaromirmuller/132cdd9378e5b1018170

2) Добавлена ​​URL Rewrite в конфигурации. xml, который переписывает URL-адрес из/checkout/bag/checkout/cart

<global> 
     <rewrite> 
     <mynamespace_mymodule_checkout_cart> 
      <from><![CDATA[#^/checkout/bag#]]></from> 
      <to>/checkout/cart</to> 
     </mynamespace_mymodule_checkout_cart> 
     </rewrite> 
    </global> 

3) Добавлен URL-адрес перезаписи в Каталог> Управление переходом URL, которое обрабатывает, если кто-либо приходит в/checkout/cart, тогда он перенаправлен в/checkout/bag paht, что является правильным.

Эти 3 пункта заставляют сайт работать и работать без проблем. Это простой способ, не переписывая тонны шаблонов и классов.

0

Путь Url переписывает работы означает, что у вас есть URL test.com/some на странице и при нажатии на нее, вы получите test.com/some2 вместо этого. Итак, Rewrites не меняют фактическую привязку - они меняют место назначения этой ссылки на нового получателя.

Нет простого решения, которое изменит все привязные ссылки на новые (кроме синтаксического разбора и замены ссылок на каждой странице, что не является предпочтительным).

Так что если вы хотите оставить якорные ссылки, как они есть, и получить новый URL-адрес после того, как пользователь нажмет на ссылку, вы должны пойти с Url Rewrites. Хотя, если вы хотите изменить фактические ссылки на странице, вам нужно искать все вхождения и изменять их вручную.

Mage::getUrl() не является тканью, которая работает с псевдонимами (например, Mage::getModel()) - вы получите от нее то, что вы вставили, и единственный способ изменить исходный URL-адрес - изменить параметры дохода.

+0

Я все еще думаю о пути, как изменить вывод 'Mage :: GetURL()' только через какой-либо конфигурации 'config.xml'. Я думаю, что изменение всех событий 'Mage :: getUrl ('checkout/cart')' больше убивает. Вам также нужно будет обновить многие шаблоны и классы. Должен быть способ. – Jaro

0

Вы можете сделать это, используя переписывание URL-адреса Apache. Что-то вроде

RewriteRule ^/checkout/cart(.*)$ /checkout/bag$1 [R=301,NC,L] 
+0

Это не решение, оно не даст правильных ссылок в HTML-выход. – Jaro

+1

В этом случае вы должны переписать 'Mage_Core_Model_Url' в свой модуль и заменить'/checkout/cart' '/ checkout/bag' в' getUrl() 'метод. – Zyava

0

Этот ответ работает на изменение имени списка пожеланий путем изменения интерфейсных маршрутизаторов в приложении/etc/local.xml. Может быть, он может быть адаптирован для ваших целей?

Change wishlist url in magento