У нас есть два магазина с разными корневыми категориями. Требуется показать категории из другого корня в текущем магазине.
Способ, которым это обрабатывалось в Magento 1, был создан отдельный маршрутизатор для соответствия пути категории, который при сопоставлении отправляет запрос на «просмотр» действия контроллера категории.
Хитрость здесь в том, что перед тем, как мы вызовем initCateogory, мы устанавливаем хранилище в другое хранилище, к которому принадлежит эта категория, после загрузки категории мы возвращаемся к current_store.
Мы пробовали подобное в Magento 2, однако, похоже, что страница категории загружается, но с пустыми данными.
Метод initCategory возвращает правильную категорию, метод execute возвращает данные страницы. Однако по какой-то причине файл product.phtml никогда не используется.
//match method of router.php
public function match(\Magento\Framework\App\RequestInterface $request)
{
//after match criteria
{
$request->setModuleName('series');
$request->setControllerName('category');
$request->setActionName('view');
$request->setControllerModule('catalog');
$request->setParam('id', '111111');
return $this->actionFactory->create(
'Magento\Framework\App\Action\Forward',
['request' => $request]
);
}
}
// from my view.php
protected function _initCategory()
{
$_objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$store_manager = $_objectManager->get(\Magento\Store\Model\StoreManagerInterface::class);
$current_store = 1;
$other_store =2;
$store_manager->setCurrentStore($other_store);
$category = parent::_initCategory();
$store_manager->setCurrentStore($current_store);
return $category;
}
Он должен загрузить категорию, однако он показывает пустую страницу.