Estou implementando um alternador de loja personalizado no meu tema personalizado.
O modelo de bloco é o seguinte:
<?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; ?>
O link para a nova loja é exibido corretamente, então acho que o material xml está OK, mas, ao clicar em, recebo o seguinte erro:
section-config.js: 33 TypeError não capturado: Não é possível ler a propriedade '*' de undefined (…)
O gerado html
é semelhante ao seguinte:
<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
fonte
fonte
sudo php bin/magento setup:static-content:deploy
sem sorte. Por que devo remover avar
pasta? O que exatamente devo remover?Respostas:
Eu tive o mesmo problema e descobri que esses dois blocos não eram mais chamados devido a personalizações no tema.
Os dois blocos são adicionados por padrão no
<referenceContainer name="content">
fornecedor / magento / module-customer / view / frontend / layout / default.xml.Tente adicionar novamente esses blocos no seu layout.xml:
fonte
Em nosso projeto, nós o corrigimos no
section-config.js
arquivo no métodogetAffectedSections
(que é onde estava o nosso erro).Substituímos a última linha:
Pelo seguinte:
Na verdade, retorna uma matriz vazia quando nenhuma seção é afetada.
fonte
Deparou-se com o mesmo problema, mesmo que o
customer.section.config
e tenhacustomer.customer.data
sido carregado corretamente na página.No meu caso, no entanto, isso aconteceu porque uma extensão tentou acionar um recarregamento de seção muito cedo (antes que o section-config.js fosse carregado com a configuração correta).
Conseguiu resolvê-lo adicionando um ponto
getAffectedSections
de interrupção em section-config.js e verificando a variável url. Em seguida, mova a extensão JS para carregar após o bloco customer.section.config:fonte
No nosso caso, era um pouco de código em um modelo padrão que carregava o arquivo customer-data.js depois que ele já havia sido chamado na página de sucesso.
Encontramos o arquivo:
vendor/magento/module-checkout/view/frontend/templates/success.phtml
estava carregando este código:
A remoção desse código o corrigiu, o que fizemos ao criar uma cópia desse arquivo no diretório de modelos de temas e remover o snippet de código incorreto.
Você pode usar as ferramentas de desenvolvedor do Chrome para descobrir onde o erro estava ocorrendo e, logo antes, naquele arquivo do seu desenvolvedor local, adicionar uma
console.trace();
chamada para estabelecer o que estava chamando a função que está lançando o erro no console. Siga a corrente até onde você está carregando as coisas incorretamente.fonte