Magento Несколько динамических пользовательских маршрутов для одного магазина - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу загрузить свой магазин magento на www.example.com/var1/var2, а не на www.example.com, и я хочу, чтобы URL моей продукции был похож на www.example.com/var1/var2/product-url Var1 & var2могут быть динамическими переменными.Помогите мне переписать мои URL-адреса в maganeto 2.2.6

Я попытался разработать собственный модуль, но теперь все, что мне нужно сделать, это загрузить все модули magento в мой пользовательский модуль.Кажется, я работаю с полностью обычай в magento, что не очень хорошая практика.Таким образом, я должен заново инициализировать все свои модули magento в свой пользовательский модуль.Таким образом, magento бесполезен для меня, используя этот подход.

1 Ответ

0 голосов
/ 17 декабря 2018

В этом случае вы можете использовать маршрутизацию запросов, выполнив следующие действия:

  1. создайте di.xml в YourVendor / YourModule / etc / di.xml с этим содержимым:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Framework\App\RouterList"> <arguments> <argument name="routerList" xsi:type="array"> <item name="custom_router" xsi:type="array"> <item name="class" xsi:type="string">YourVendor\YourModule\Controller\Router </item> <item name="disable" xsi:type="boolean">false</item> <item name="sortOrder" xsi:type="string">70</item> </item> </argument> </arguments> </type> </config>

Создайте класс Router, который реализует RouterInterface, как показано ниже:

Класс Router реализует \ Magento \ Framework \ App \ RouterInterface {private $ actionFactory;

/**
 * Router constructor.
 * @param \Magento\Framework\App\ActionFactory $actionFactory
 */

public function __construct(\Magento\Framework\App\ActionFactory $actionFactory)
{
    $this->actionFactory = $actionFactory;
}

public function match(\Magento\Framework\App\RequestInterface $request)
{
    $info = $request->getPathInfo();
    if (preg_match("%^/(var1/var2)(.*?)$%", $info, $m)) {
        $request->setPathInfo(str_replace('var1/var2', '', $info));
        return $this->actionFactory->create('Magento\Framework\App\Action\Forward',
            ['request' => $request]);
    }
    return null;
}

}

Запустите эту команду:

php bin / magento s: up

Введите ваш URL-адрес, например www.example.com/var1/var2 и посмотри результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...