J'implémente un sélecteur de magasin personnalisé dans mon thème personnalisé.
Le modèle de bloc est le suivant:
<?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; ?>
Le lien vers le nouveau magasin est correctement affiché, donc je suppose que le contenu xml est OK, mais au clic, je reçois l'erreur suivante:
section-config.js: 33 TypeError non capturé: impossible de lire la propriété '*' de non défini (…)
Le html
fichier généré ressemble à ceci:
<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
la source
la source
sudo php bin/magento setup:static-content:deploy
sans chance. Pourquoi dois-je supprimer unvar
dossier? Que dois-je retirer exactement?Réponses:
J'ai eu le même problème et j'ai découvert que ces deux blocs n'étaient plus appelés en raison de personnalisations dans le thème.
Les deux blocs sont par défaut ajoutés dans le
<referenceContainer name="content">
fournisseur / magento / module-customer / view / frontend / layout / default.xml.Essayez de rajouter ces blocs dans votre layout.xml:
la source
Sur notre projet, nous l'avons corrigé dans le
section-config.js
fichier de la méthodegetAffectedSections
(où se trouvait notre erreur).Nous avons remplacé la dernière ligne:
Par le suivant:
Retourne réellement un tableau vide lorsqu'aucune section n'est affectée.
la source
A traversé le même problème même si le
customer.section.config
etcustomer.customer.data
ont été correctement chargés dans la page.Dans mon cas, cependant, cela s'est produit car une extension a tenté de déclencher un rechargement de section trop tôt (avant que section-config.js ne soit chargé avec la bonne configuration).
Géré pour le résoudre en ajoutant un point d'arrêt dans
getAffectedSections
section-config.js et en vérifiant la variable url. Ensuite, vous avez déplacé l'extension JS à charger après le bloc customer.section.config:la source
Dans notre cas, il s'agissait d'un peu de code dans un modèle par défaut qui chargeait le fichier customer-data.js après qu'il avait déjà été appelé sur la page de réussite.
Nous avons trouvé le fichier:
vendor/magento/module-checkout/view/frontend/templates/success.phtml
chargeait ce code:
La suppression de ce code l'a corrigé, ce que nous avons fait en créant une copie de ce fichier dans notre répertoire de modèles de thèmes et en supprimant l'extrait de code incriminé.
Vous pouvez utiliser les outils Chrome Dev pour savoir où l'erreur s'est produite, puis juste avant dans ce fichier sur votre développeur local, ajoutez un
console.trace();
appel pour établir ce qui appelait la fonction qui génère l'erreur dans la console. Suivez la chaîne jusqu'à l'endroit où vous chargez mal les choses.la source