L'objet window.Hyva
Cet objet javascript vous offre pas mal de fonctionnalités utiles.
https://docs.hyva.io/hyva-themes/writing-code/the-window-hyva-object.html
Variables globales JS
Hyva vous met a disposition quelques variables globales JS qui peuvent vous être utiles.
- BASE_URL
- THEME_PATH
- COOKIE_CONFIG
- CURRENT_STORE_CODE
- CURRENT_WEBSITE_ID
Elles sont définies dans le fichier vendor/hyva-themes/magento2-theme-module/src/view/frontend/templates/page/js/variables.phtml.
var BASE_URL = '<?= /* @noEscape */ $block->getUrl('/') ?>';
var THEME_PATH = '<?= /* @noEscape */ $block->getViewFileUrl('/') ?>';
var COOKIE_CONFIG = {
"expires": null,
"path": "<?= $escaper->escapeJs($cookieViewModel->getPath()) ?>",
"domain": "<?= $escaper->escapeJs($cookieViewModel->getDomain()) ?>",
"secure": <?= $cookieViewModel->getCookieSecure() ? 'true' : 'false' ?>,
"lifetime": "<?= $escaper->escapeJs($cookieViewModel->getLifetime()) ?>",
"cookie_restriction_enabled": <?= /* @noEscape */ $cookieRestriction ? 'true' : 'false'?>
};
var CURRENT_STORE_CODE = '<?= /* @noEscape */ $storeViewModel->getStoreCode(); ?>';
var CURRENT_WEBSITE_ID = '<?= /* @noEscape */ $storeViewModel->getWebsiteId(); ?>';
Afficher un message à l'utilisateur
Si vous devez afficher un message à l'utilisateur, vous pouvez utiliser le code suivant.
Pensez, bien sur à tester si window.dispatchMessages est défini avant de l'utiliser.
window.dispatchMessages(
[{
type: 'success',
text: 'Votre demande a bien été prise en compte',
},
{
type: 'error',
text: 'Impossible de traiter votre demande',
},
{
type: 'warning',
text: 'Attention, derniers produits en stock',
},
{
type: 'info',
text: 'Bienvenu sur notre site',
}],
5000
);
Vous pouvez afficher plusieurs messages à la fois, ils seront affichés les uns en dessous des autres. Le dernier parametre est la durée d'affichage en millisecondes, ici 5000ms = 5 secondes. S'il n'est pas renseigné le message restera affiché jusqu'à ce que l'utilisateur le ferme.
Pour fermer tous les messages, vous pouvez utiliser la fonction suivante :
window.dispatchEvent(new Event('clear-messages'))