Ich implementiere einen benutzerdefinierten Store-Switcher in meinem benutzerdefinierten Design.
Die Blockvorlage lautet wie folgt:
<?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; ?>
Der Link zum neuen Shop wird korrekt angezeigt. Ich denke, das XML-Zeug ist in Ordnung, aber beim Klicken erhalte ich die folgende Fehlermeldung:
section-config.js: 33 Uncaught TypeError: Die Eigenschaft '*' von undefined (…) kann nicht gelesen werden
Das generierte html
sieht folgendermaßen aus:
<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
quelle
quelle
sudo php bin/magento setup:static-content:deploy
ohne Glück gerannt. Warum soll ichvar
Ordner entfernen ? Was genau soll ich entfernen?Antworten:
Ich hatte das gleiche Problem und fand heraus, dass diese beiden Blöcke aufgrund von Anpassungen im Design nicht mehr aufgerufen wurden.
Die beiden Blöcke werden standardmäßig in der Tabelle hinzugefügt
<referenceContainer name="content">
Datei vendor / magento / module-customer / view / frontend / layout / default.xml .Fügen Sie diese Blöcke erneut in Ihre layout.xml ein:
quelle
In unserem Projekt haben wir es in der
section-config.js
Datei in der Methode behobengetAffectedSections
(wo unser Fehler war).Wir haben die letzte Zeile ersetzt:
Mit dem folgenden:
Gibt tatsächlich ein leeres Array zurück, wenn kein Abschnitt betroffen ist.
quelle
Ist auf dasselbe Problem gestoßen, obwohl die
customer.section.config
undcustomer.customer.data
ordnungsgemäß in die Seite geladen wurden.In meinem Fall geschah dies jedoch, weil eine Erweiterung zu früh versuchte, ein erneutes Laden von Abschnitten auszulösen (bevor die section-config.js mit der richtigen Konfiguration geladen wurde).
getAffectedSections
Behebt das Problem, indem ein Haltepunkt in section-config.js hinzugefügt und die URL-Variable überprüft wird. Dann wurde die Erweiterung JS nach dem Block customer.section.config geladen:quelle
In unserem Fall war dies ein Code in einer Standardvorlage, die die Datei customer-data.js lud, nachdem sie bereits auf der Erfolgsseite aufgerufen wurde.
Wir haben folgende Datei gefunden:
vendor/magento/module-checkout/view/frontend/templates/success.phtml
hat diesen Code geladen:
Durch das Entfernen dieses Codes wurde das Problem behoben, indem wir eine Kopie dieser Datei in unserem Themenvorlagenverzeichnis erstellt und das fehlerhafte Code-Snippet entfernt haben.
Sie können Chrome Dev-Tools verwenden, um herauszufinden, wo der Fehler aufgetreten ist, und dann kurz bevor Sie in dieser Datei auf Ihrem lokalen Entwickler einen
console.trace();
Aufruf hinzufügen , um festzustellen, wie die Funktion aufgerufen wurde, die den Fehler in der Konsole auslöst. Folgen Sie der Kette dahin, wo Sie die Dinge nicht richtig laden.quelle