Jump to content

as4Plugin is not defined


geekweb

Recommended Posts

  • 1 month later...
On 1/22/2021 at 9:41 AM, geekweb said:

Bonjour,

est ce vous pouvez m'aider a résoudre cette erreur: as4Plugin is not defined aux niveaux de console pour le module advanced serach 4.

version prestashop: 1.7.5.0

Merci pour votre réponse.

Cordialement.

Bonjour, avez vous résolu ce problème? Si oui comment? Merci

Link to comment
Share on other sites

  • 4 months later...

J'ai trouvé une solution à ce problème de Javascript, il ne reste plus qu'à espérer que le développeur du module se penche sur le problème.
Le problème se produit car l'ordre de chargement des librairies JS n'est pas tout à fait correct. Plusieurs étapes sont nécessaires.

1. Mettre en ordre les fichiers Javascript

Dans le fichier "modules/pm_advancedsearch4/pm_advancedsearch4.php" modifier le contenu de la fonction "includeAssets" lignes 3909

$this->context->controller->registerJavascript('modules-'.$this->name.'-js-5', 'modules/'.$this->name.'/views/js/pm_advancedsearch.js', array('position' => 'bottom', 'priority' => 150));
$this->context->controller->registerJavascript('modules-'.$this->name.'-js-6', 'modules/'.$this->name.'/views/js/as4_plugin-17.js', array('position' => 'bottom', 'priority' => 160));

L'important étant de donner une priorité plus haute au fichier "as4_plugin-17.js" car il a une dépendance sur le fichier "pm_advancedsearch.js".
 

2. Mettre en place un événement sur le chargement du composant as4Plugin

Dans le fichier "modules/pm_advancedsearch4/views/js/as4_plugin-17.js"
Ajouter tout à la fin du fichier les lignes suivantes :

// Create the event
const as4PluginEventReady = new CustomEvent('as4_plugin_ready', {'detail': as4Plugin});
document.dispatchEvent(as4PluginEventReady);

Ceci va mettre en place un événement JS qui pourra être capté pour savoir quand le composant sera chargé et disponible.

 

3. Écouter l'événement pour mettre en place le comportement adéquat

Dans les fichiers :

  • modules/pm_advancedsearch4/views/templates/hook/1.7/pm_advancedsearch_js.tpl
  • modules/pm_advancedsearch4/views/templates/hook/pm_advancedsearch.tpl
  • modules/pm_advancedsearch4/views/templates/hook/pm_advancedsearch_results.tpl

Modifier le code se trouvant dans la balise script de la sorte :

<script type="text/javascript">
  // Listen to the AS4 Plugin Ready event.
  document.addEventListener('as4_plugin_ready', function(e) {
    var as4Plugin = e.detail;
    
    // AJOUTER ICI LE CODE QUI SE TROUVAIT DANS LA BALISE SCRIPT.
    // LE COMPOSANT as4Plugin EST MAINTENANT CHARGÉ ET UTILISABLE.
  });
</script>

Remplacer les commentaires par le code qui se trouvait dans la balise script auparavant. Ainsi, ce code sera "wrappé" dans un code qui sera uniquement lancé quand le composant as4Plugin sera disponible.

En espérant que cela puisse être utile à certains.

Bonne journée

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...