Как переписать URL-адрес пользовательского модуля, включая идентификатор, с любым пользовательским URL-адресом в Magento

Я установил storelocator в Magento, это бесплатное расширение. Но если на него нажать кнопку View Details, оно откроется с помощью storelocator/index/view/id/1/. В целях поисковой оптимизации необходимо открыть с слуховой-центр-в-нью-йорке или слуховой-центр-в-Чикаго. здесь он будет общим с центром слуховых аппаратов-в- и нью-йорк, чикаго, будет динамичным. Итак, для этого требования, как переписать этот URL. И где я должен написать переписать код для вышеуказанного требования. Я много пробовал с идентификатором 1 как статический способ, создавая наблюдателя с использованием события Magento «controller_front_init_routers» с помощью этого сайта https://magento.stackexchange.com/questions/73369/custom-url-for-magento-extension. Он сохраняется в core_url_rewrite и отображается в разделе «Управление перезаписью URL», а также перенаправляет, но перенаправляет страницу 404 Not Found. Я не могу понять, почему он перенаправляет страницу 404 Not Found и как это реализовать и как получить идентификатор storelocator в динамическом режиме над сервером.

Помимо этого, мне также нужно переопределить URL-адрес учетной записи клиента и URL-адрес истории заказов на продажу. Я не знаю, как переписать URL учетной записи клиента с /my-account/order-history вместо /sales/order/history/, а также с /my-account/dashboard вместо /customer/account/. Я не могу понять, как реализовать это требование для дружественной SEO-цели. Любая помощь, спасибо.


person Robert    schedule 08.01.2016    source источник


Ответы (1)


Вам нужно расширить локатор магазина новым модулем, который зависит от него. Там полно постов о том, как это сделать. Этот модуль должен будет добавить дополнительный атрибут для ключа URL, например. Нью-Йорк. Также потребуется новый контроллер, расширяющий Storelocator_IndexController. Этот контроллер будет обрабатывать все запросы для Stores. Он будет искать магазин по ключу URL вместо идентификатора. Получив это, он продолжит использовать код наследования, как и раньше. Конечно, вам придется переопределить и обновить все URL-адреса, чтобы использовать ключ.

Наконец, вам понадобится правило перезаписи в config.xml, например:

<config> <global> <rewrite> <mymodule_storelocatoroverides_view> <from><![CDATA[#^\/hearing\-aid\-center\-in\-([a-z\-]+)[\/]?$#]]></from> <to><![CDATA[mymodule/storelocatoroverides/view/id/1/]]></to> <complete>1</complete> </mymodule_storelocatoroverides_view> </rewrite> </global> </config>

В качестве альтернативы

Как быстрое решение, но отнюдь не лучшее решение:

Если у вас конечное количество магазинов, вы можете просто добавить правила перезаписи в модуль config.xml (создать простой плагин), например, для Нью-Йорка (при условии, что его ID 1):

<config> <global> <rewrite> <mymodule_storelocatoroverides_newyork> <from><![CDATA[#^\/hearing\-aid\-center\-in\-new\-york[\/]?$#]]></from> <to><![CDATA[storelocator/index/view/id/1/]]></to> <complete>1</complete> </mymodule_storelocatoroverides_newyork> </rewrite> </global> </config>

Опять же, вам придется переопределить выходные данные URL.

Что касается URL-адреса клиента, вы можете снова использовать тот же подход. Поэтому добавьте перезаписи в config.xml и замените URL-ссылки, чтобы использовать новые перезаписи. Опять же, вам, возможно, придется переопределить основной код, чтобы изменить перенаправления.

Надеюсь, это поможет!

person PanPipes    schedule 13.02.2016