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





В этом случае вы можете использовать маршрутизацию запросов, выполнив следующие действия:
<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: вверх
Введите свой URL, например www.example.com/var1/var2, и посмотрите результат
Я пробовал это и уже работал. Но только его загрузочная домашняя страница. Я хочу, чтобы все мои URL-адреса, такие как hrefs моего продукта и ссылка на страницу корзины, были преобразованы в www.example.com/var1/var2/my-cart или www.example.com/var1/var2/my-product
Я не хочу изменять base_url, потому что var1 и var2 являются динамическими, и я не хочу обновлять базу данных снова и снова для каждого пользователя с разными var1 / var2
var1 / var2 - это в основном var1 - это тип, а var2 - имя поставщика, поэтому оба могут быть изменены снова и снова
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что Stack Overflow - это сайт вопросов и ответов связанные с программированием. Ваш вопрос не о программировании. Может, лучше выложить его на magento.stackexchange.com?