Estoy implementando un conmutador de tienda personalizado en mi tema personalizado.
La plantilla de bloque es la siguiente:
<?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; ?>
El enlace a la nueva tienda se muestra correctamente, así que supongo que las cosas xml están bien, pero al hacer clic recibo el siguiente error:
section-config.js: 33 TypeError no capturado: no se puede leer la propiedad '*' de undefined (...)
El generado se html
parece a lo siguiente:
<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
fuente
fuente
sudo php bin/magento setup:static-content:deploy
sin suerte. ¿Por qué debo eliminar lavar
carpeta? ¿Qué debo eliminar exactamente?Respuestas:
Tuve el mismo problema y descubrí que estos dos bloques ya no se llamaban debido a personalizaciones en el tema.
Los dos bloques se agregan por defecto en
<referenceContainer name="content">
vendor / magento / module-customer / view / frontend / layout / default.xml.Intente volver a agregar estos bloques en su layout.xml:
fuente
En nuestro proyecto lo arreglamos en el
section-config.js
archivo en el métodogetAffectedSections
(que es donde estaba nuestro error).Reemplazamos la última línea:
Por el siguiente:
En realidad, devuelve una matriz vacía cuando ninguna sección se ve afectada.
fuente
Se encontró con el mismo problema a pesar de que
customer.section.config
ycustomer.customer.data
se cargaron correctamente en la página.Sin embargo, en mi caso sucedió porque una extensión intentó activar una recarga de sección demasiado pronto (antes de que se cargara la configuración correcta de la sección).
Logramos resolverlo agregando un punto de interrupción en
getAffectedSections
section-config.js y verificando la variable url. Luego movió la extensión JS para cargar después del bloque customer.section.config:fuente
En nuestro caso, esto era un poco de código en una plantilla predeterminada que estaba cargando el archivo customer-data.js después de que ya había sido invocado en la página de éxito.
Encontramos el archivo:
vendor/magento/module-checkout/view/frontend/templates/success.phtml
estaba cargando este código:
La eliminación de este código lo solucionó, lo que hicimos al crear una copia de este archivo en nuestro directorio de plantillas de tema y eliminar el fragmento de código ofensivo.
Puede usar las herramientas de Chrome Dev para averiguar dónde estaba ocurriendo el error y luego, justo antes de ese archivo en su desarrollador local, agregue una
console.trace();
llamada para establecer qué estaba llamando a la función que arroja el error en la consola. Siga la cadena hasta donde está cargando cosas incorrectamente.fuente