每次我从英语商店视图切换到意大利语商店视图(反之亦然)时,它都会将我带到等效的主页(无论我在哪里)并抛出此错误:
这是我的设置:
- Magento 2.3.4(全新安装,自托管)
- 1 个网站、1 个商店、2 个商店浏览次数
- 对于每个商店视图一个不同的域(英语商店视图 --> example.com,意大利语商店视图 --> example.it)
-
我在 main .htaccess 之上添加了这些环境:
SetEnvIf Host ^(.*)\.example\.com MAGE_RUN_CODE=en
SetEnvIf Host ^(.*)\.example\.com MAGE_RUN_TYPE=store
SetEnvIf Host ^(.*)\.example\.it MAGE_RUN_CODE=it
SetEnvIf Host ^(.*)\.example\.it MAGE_RUN_TYPE=store
Recap:例如,如果我在example.com/my-beautiful-product.html [英文店面图] 我正在切换到意大利商店视图,这需要我示例.it它显示错误(“找不到所请求的商店。验证商店并重试。”)而不是带我去example.it/my-beautiful-product.html没有任何错误。
有任何想法吗?
我测试的:
-
我尝试对商店视图代码进行硬编码/vendor/magento/module-store/Controller/Store/SwitchAction.php在第 106 行和 $requestedUrlToRedirect 处:
...
public function execute()
{
$targetStoreCode = $this->_request->getParam(
\Magento\Store\Model\StoreManagerInterface::PARAM_NAME
);
$fromStoreCode = $this->_request->getParam(
'___from_store',
$this->storeCookieManager->getStoreCodeFromCookie()
);
$requestedUrlToRedirect = 'https://example.it/my-beautiful-product.html';
$redirectUrl = $requestedUrlToRedirect;
// $requestedUrlToRedirect = $this->_redirect->getRedirectUrl();
// $redirectUrl = $requestedUrlToRedirect;
$error = null;
try {
$fromStore = $this->storeRepository->get('en');
$targetStore = $this->storeRepository->getActiveStoreByCode('it');
// $fromStore = $this->storeRepository->get($fromStoreCode);
// $targetStore = $this->storeRepository->getActiveStoreByCode($targetStoreCode);
} catch (StoreIsInactiveException $e) {
$error = __('Requested store is inactive');
} catch (NoSuchEntityException $e) {
$error = __("The store that was requested wasn't found. Verify the store and try again.");
}
if ($error !== null) {
$this->messageManager->addErrorMessage($error);
} else {
$redirectUrl = $this->storeSwitcher->switch($fromStore, $targetStore, $requestedUrlToRedirect);
}
$this->getResponse()->setRedirect($redirectUrl);
}
...
这是一个切换 url 的示例:https://example.com/stores/store/redirect/___store/it/___from_store/en/uenc/aHR0cHM6Ly9kZXYudGVjbmljbWFuLml0Lz9fX19zdG9yZT1pdA%2C%2C/ https://example.com/stores/store/redirect/___store/it/___from_store/en/uenc/aHR0cHM6Ly9kZXYudGVjbmljbWFuLml0Lz9fX19zdG9yZT1pdA%2C%2C/
然后我从意大利商店视图切换到英语商店视图有效! So 似乎无法获取 $targetStoreCode 和 $requestedUrlToRedirect 的正确值。有任何想法吗?
这是 Magento 2.3.1 到 2.3.5 的一个错误。问题出在视图中......并且恰好在 module-store/view/frontend/templates/switch/linguals.phtml 的第 28 行处。
WRONG
<li class="view-<?= $block->escapeHtml($_lang->getCode()) ?> switcher-option">
<a href="<?= $block->escapeUrl($block->getViewModel()->getTargetStoreRedirectUrl($_lang)) ?>">
<?= $block->escapeHtml($_lang->getName()) ?>
</a>
</li>
CORRECT
<li class="view-<?= $block->escapeHtml($_lang->getCode()) ?> switcher-option">
<a href="#" data-post='<?= /* @noEscape */ $block->getTargetStorePostData($_lang) ?>'>
<?= $block->escapeHtml($_lang->getName()) ?>
</a>
</li>
...现在它就像一个魅力!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)