Вы можете создать настраиваемый маршрутизатор для этого в своем модуле.
Добавьте к этому config.xml
внутри тега <global>
<events>
<controller_front_init_routers>
<observers>
<[namespace]_[module]>
<class>[Namespace]_[Module]_Controller_Router</class>
<method>initControllerRouters</method>
</[namespace]_[module]>
</observers>
</controller_front_init_routers>
</events>
Теперь вам нужно создать класс маршрутизатора.
в app/code/local/[Namespace]/[Module]/Controller/Router.php
введите следующий код: (примечание: имя папки Controller
- не путайте с controllers
).
<?php
class [Namespace]_[Module]_Controller_Router
extends Mage_Core_Controller_Varien_Router_Abstract {
public function initControllerRouters($observer){
$front = $observer->getEvent()->getFront();
$front->addRouter('[namspace]_[module]', $this);
return $this;
}
public function match(Zend_Controller_Request_Http $request){
if (!Mage::isInstalled()) {
Mage::app()->getFrontController()->getResponse()
->setRedirect(Mage::getUrl('install'))
->sendResponse();
exit;
}
$urlKey = trim($request->getPathInfo(), '/');
$parts = explode('/', $urlKey);
if ($parts[0] == 'bestseller'){ //if the route matches 'bestseller' then internal redirect to the module
$request->setModuleName('[modulename]') //set module name
->setControllerName('index') //set controller
->setActionName('bestseller'); //set action
$request->setAlias(
Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS,
$urlKey
);
return true;
}
if ($parts[0] == 'special'){ //if the route matches 'special' then internal redirect to the module
$request->setModuleName('[modulename]') //set module name
->setControllerName('index') //set controller
->setActionName('special'); //set action
$request->setAlias(
Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS,
$urlKey
);
return true;
}
return false;
}
}
Очистите кэш и отпустите его.
У меня есть еще один вопрос, я на самом деле сервер URL нужно переписать, например, MyModule/индекс/бестселлера, MyModule/индекс/специальные, MyModule/индекс/последний, mymodule/index/featured и т. д., как я могу это сделать? – user1579524
Используйте тот же самый код и просто создайте оператор 'switch' на' $ parts [0] 'и в зависимости от его значения вы можете перенаправить внутренне на правильное действие. – Marius
Я отредактировал ответ и добавил другой случай, когда URL-адрес является «специальным». Вы можете сделать то же самое для последних и признанных – Marius