dev. error Add-on : problème avec widget key

Nicolas

Administrateur
Membre du Staff
Hello,
J'essaie de créer un add-on à partir de cette astuce : https://xenforo.fr/discussions/inserer-un-widget-entre-deux-categories.106/

Donc je crée une modification de template dans node_list_category à partir de ce code :
<xf:if is="{$node.node_id} == 6"> <xf:widget key="forum_overview_share_page" /></xf:if>

j'écrit ceci :
HTML:
<xf:if is="{$node.node_id} == {$xf.options.WBN_nodeID1}">  {$xf.options.WBN_widgetKey1}</xf:if>

Je parviens aisément, avec les options de l'add-on, à remplacer {$xf.options.WBN_nodeID2} par l'ID de la catégorie, mais je bloque sur le remplacement de {$xf.options.WBN_widgetKey2} par la syntaxe XF pour les widgets à savoir <xf:widget key="widget_key" /> :

Si je demande à l'utilisateur de l'add-on de renseigner dans le champ la syntaxe complète <xf:widget key="widget_key" /> c'est la chaîne <xf:widget key="widget_key" /> qui s'affiche littéralement sur le forum au lieu du widget lui-même.

Capture web_30-11-2022_135028_localhost.jpeg

J'ai pensé changer la modification de template pour :
HTML:
<xf:if is="{$node.node_id} == {$xf.options.WBN_nodeID1}">  <xf:widget key="{$xf.options.WBN_widgetKey1}" /></xf:if>
Mais je ne peux pas sauvegarder à cause d'un message d'erreur qui indique que key requiert une $string donc je suppose la valeur sans les { } mais si je les enlève :
HTML:
<xf:if is="{$node.node_id} == {$xf.options.WBN_nodeID1}">  <xf:widget key="$xf.options.WBN_widgetKey1" /></xf:if>
J'ai un nouveau message d'erreur m'indiquant que pour key la valeur doit contenir uniquement a-z, A-Z, 0-9 and _ alors que là j'ai des . dans $xf.options.WBN_widgetKey1.

Quelle solution à ça ?
Merci !
 

Nicolas

Administrateur
Membre du Staff

Lorsque qu'une variable contient des caractères HTML il faut lui accoler un filtre raw : {$xf.options.WBN_widgetKey1|raw} qui évite que ces caractères soit échappés.

Ceci étant dit ça a réglé le problèe mais créé un autre. La variable ne s'affiche plus en tant que texte mais le widget n'apparait pas et il n'est pas "construit" dans la page. Dans le code source de la page il apparait ainsi :

1670060078364.png
 

Nicolas

Administrateur
Membre du Staff
C'était pour un module complémentaire et j'ai contourné le problème en créant des positions de widget.
 

Oliver

Membre 
Malgré tout à des fins d'apprentissage ce serait intéressant de comprendre ce qui se passe ici.
Et je me demande si le fait de ne pas avoir fermé correctement ta balise <xf:widget key="widget-key" />, tu as oublié le / avant >, ne déclenche pas l'affichage de </xf:widget> ?
 

Nicolas

Administrateur
Membre du Staff
Bien vu ! (y)

Je suis finalement passé par un autre chemin (widgets positions) pour le module complémentaire mais je vais recréer le contexte initial pour tester la bonne syntaxe des widgets et voir ce que ça rend. Ce n'était pas le bon chemin à prendre je pense mais à des fins d'apprentissage comme tu dis ça vaut le coup de vérifier. Merci pour ce "good catch !" @Oliver
 

Membres en ligne

Extras
Les tutoriels
en français
Collection de tutoriels exclusifs pour découvrir l'environnement XenForo.
Our translations
exclusives
French translation of official XenForo and XenAddons softwares.
The subscription
19.90 €
A premium account to access all our official resources.
Contribute to the development and sustainability of the forum with a donation to our PayPal account.
Haut