Я реализую пользовательский переключатель магазина в своей пользовательской теме.
Шаблон блока выглядит следующим образом:
<?php if (count($block->getStores())>1): ?>
<?php $id = $block->getIdModifier() ? '-' . $block->getIdModifier() : ''?>
<span><?php echo $block->escapeHtml($block->getStoreName()) ?></span>
<span>/</span>
<?php foreach ($block->getStores() as $_lang): ?>
<?php if ($_lang->getId() != $block->getCurrentStoreId()): ?>
<span class="view-<?php echo $block->escapeHtml($_lang->getCode()); ?> switcher-option">
<a href="#" data-post='<?php /* @escapeNotVerified */ echo $block->getTargetStorePostData($_lang); ?>'>
<?php echo $block->escapeHtml($_lang->getName()) ?>
</a>
</span>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
Ссылка на новый магазин отображается правильно, поэтому я думаю, что с XML все в порядке, но при нажатии я получаю следующую ошибку:
section-config.js: 33 Uncaught TypeError: Невозможно прочитать свойство '*' из неопределенного (…)
Сгенерированный html
выглядит следующим образом:
<span class="view-it switcher-option">
<a href="#" data-post="{"action":"http:\/\/test.mysite.eu\/stores\/store\/switch\/","data":{"___store":"it","uenc":"aHR0cDovL3Rlc3QuZnJhZ2lhY29tb21pbGFuby5ldS8,"}}">
It
</a>
</span>
magento2
magento-2.1
blocks
javascript
store-switcher
davideghz
источник
источник
sudo php bin/magento setup:static-content:deploy
без удачи. Почему я должен удалитьvar
папку? Что именно я должен удалить?Ответы:
У меня была та же проблема, и я обнаружил, что эти два блока больше не называются из-за настроек в теме.
Эти два блока по умолчанию добавляются в
<referenceContainer name="content">
файл vendor / magento / module-customer / view / frontend / layout / default.xml.Попробуйте заново добавить эти блоки в файл layout.xml:
источник
В нашем проекте мы исправили это в
section-config.js
файле методаgetAffectedSections
(где и была наша ошибка).Мы заменили последнюю строку:
По следующему:
На самом деле возвращает пустой массив, когда ни один раздел не затронут.
источник
Наткнулся на ту же проблему, хотя
customer.section.config
иcustomer.customer.data
были правильно загружены на страницу.Однако в моем случае это произошло из-за того, что расширение попыталось инициировать перезагрузку раздела слишком рано (до того, как файл section-config.js был загружен с правильной конфигурацией).
getAffectedSections
Решил ее, добавив точку останова в section-config.js и проверив переменную url. Затем переместил расширение JS для загрузки после блока customer.section.config:источник
В нашем случае это было немного кода в шаблоне по умолчанию, который загружал файл customer-data.js после того, как он уже был вызван на странице успеха.
Мы нашли файл:
vendor/magento/module-checkout/view/frontend/templates/success.phtml
загружал этот код:
Удаление этого кода исправило это, что мы и сделали, создав копию этого файла в каталоге шаблонов тем и удалив фрагмент кода, который нарушил работу.
Вы можете использовать инструменты Chrome Dev, чтобы узнать, где произошла ошибка, а затем непосредственно перед тем, как в этом файле в вашем локальном dev добавить
console.trace();
вызов, чтобы установить, что вызывало функцию, которая выдает ошибку в консоли. Следуйте по цепочке туда, куда вы загружаете вещи ненадлежащим образом.источник