Connexion
S'inscrire
Actualités
Quoi de neuf
Activités générales
Auteurs
Forums
Nouveaux messages
Rechercher un forum
Wiki
Pages
Dernière activité
Quoi de neuf
Nouveaux messages
Nouveaux articles
Nouveaux messages de profil
Activités générales
Membres
Membres inscrits
Visiteurs actuels
Nouveaux messages de profil
Rechercher dans les messages des profils
Teams
Créé ton équipe
Magasin
Quoi de neuf ?
Nouveaux messages
Rechercher un forum
Menu
Connexion
S'inscrire
Install the app
Install
Forums
Forums généraux
Informatique
Développement
Utilisation des hook sur XenForo
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement.
Vous devez le mettre à jour ou utiliser un
navigateur alternatif
.
Répondre à la discussion
Message
<blockquote data-quote="1899" data-source="post: 6957329" data-attributes="member: 146051"><p style="text-align: center"><span style="font-family: 'Roboto'">[ATTACH=full]102341[/ATTACH]</span></p><p><span style="font-family: 'Roboto'">Bonjour à tous, aujourd'hui je vous propose un tutoriel sur<strong><span style="color: #0059b3"> l'utilisation des hook </span></strong>sur xenForo.</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Les hook sur xenForo vous permettrons de<strong><span style="color: #0059b3"> lier une template</span></strong> a une balise placé dans une autre template. Par exemple, une template contenant la balise <strong><span style="color: #0059b3"><xen:hook name="ad_sidebar_bottom" /></span></strong> pourra, si vous le voulez, être <strong><span style="color: #0059b3">lié à une template</span></strong> que vous avez créée. C'est utile pour <strong><span style="color: #0059b3">créer des blocks</span></strong> dans la sidebar par exemple et <strong><span style="color: #0059b3">éviter d'avoir trop de code</span></strong> dans une même template. L'avantage de l'utilisation des hooks, c'est que pour désactiver le template, vous aurez juste à <strong><span style="color: #0059b3">désactiver l'addon</span></strong> que vous avez crée.</span></p><p><span style="font-family: 'Roboto'">Dans ce tutoriel, nous verrons comment créer un block contenant <strong><span style="color: #0059b3">la liste des grades</span></strong> sur un forum.</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Prêt ? Allons y !</span></p><p><span style="font-family: 'Roboto'"></span></p><p style="margin-left: 20px"><span style="font-family: 'Roboto'"><span style="font-size: 18px"><span style="color: #0059b3"><strong>Création de l'addon</strong></span></span></span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Tout dabord, nous allons <strong><span style="color: #0059b3">créer un addon</span></strong> qui nous permettra de<strong><span style="color: #0059b3"> contrôler le hook</span></strong>.</span></p><p><span style="font-family: 'Roboto'">Il faut bien évidemment <strong><span style="color: #0059b3">activer le mode debug </span></strong>pour pouvoir accéder à <strong><span style="color: #0059b3">l'onglet développement</span></strong> dans votre panel, si il n'est pas activé ajoutez ce code dans votre fichier config.php (disponible dans le dossier library) :</span></p><p><span style="font-family: 'Roboto'">[PHP]$config['debug'] = '1';[/PHP]</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Une fois l'onglet développement disponible, rendez vous dans <strong><span style="color: #0059b3">+ Créer une extension</span></strong> et remplissez les champs :</span></p><ol> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">ID de l'extension</span></strong> : rankList</span></li> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Titre</span></strong> : Liste des rangs du forum</span></li> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Version </span></strong>: 1.0.0</span></li> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">ID de la version </span></strong>: 1</span></li> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">URL </span></strong>: laissez vide</span></li> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Code d'installation</span></strong> : laissez vide</span></li> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Code de désinstallation</span></strong> : laissez vide</span></li> </ol><p><span style="font-family: 'Roboto'">Enregistrez, et maintenant vous avez votre extension d'installé.</span></p><p><span style="font-family: 'Roboto'">Maintenant, allons créer un <strong><span style="color: #0059b3">observateur d'évenement </span></strong>qui vous permettra d'activer la<strong><span style="color: #0059b3"> function template_hook </span></strong>sur votre extension. Rendez vous dans <strong><span style="color: #0059b3">+ Créer un auditeur d’événement</span></strong> et remplissez les champs :</span></p><ol> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Choisir l'événement </span></strong>: choisissez template_hook</span></li> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Trace d’événement </span></strong>: laissez vide</span></li> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Exécuter rappel de service</span></strong> : laissez vide (pour le moment)</span></li> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Ordre de rappel d’exécution</span></strong> : laissez la valeur 10</span></li> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Description</span></strong> : Liste des rangs</span></li> <li data-xf-list-type="ol"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Extension </span></strong>: choisissez l'extension que vous avez créée auparavant</span></li> </ol><p><span style="font-family: 'Roboto'">Votre observateur d’événement est désormais configuré<strong> <span style="color: #0059b3">MAIS </span></strong>n'enregistrez pas maintenant car ce n'est pas fini !</span></p><p><span style="font-family: 'Roboto'">Nous allons procéder au <strong><span style="color: #0059b3">développement du Listener</span></strong> sur votre ftp.</span></p><p><span style="font-family: 'Roboto'"></span></p><p style="margin-left: 20px"><span style="font-family: 'Roboto'"><span style="font-size: 18px"><span style="color: #0059b3"><strong>Création des fichiers de l'extension</strong></span></span></span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Maintenant, rendez vous dans votre ftp et plus particulièrement dans votre fichier<strong><span style="color: #0059b3"> library </span></strong>où vous allez créer le dossier de votre extension.</span></p><p><span style="font-family: 'Roboto'">Donc, dans votre dossier <strong><span style="color: #0059b3">library</span></strong>, créez un dossier <strong><span style="color: #0059b3">RankList</span></strong> puis créez un fichier <strong><span style="color: #0059b3">Listener.php</span></strong> à l'intérieur de ce même dossier. Vous aurez donc cette arborescence :</span></p><ul> <li data-xf-list-type="ul"><span style="font-family: 'Roboto'">library</span><ul> <li data-xf-list-type="ul"><span style="font-family: 'Roboto'">RankList</span><ul> <li data-xf-list-type="ul"><span style="font-family: 'Roboto'">Listener.php</span></li> </ul></li> </ul></li> </ul><p><span style="font-family: 'Roboto'">Ouvrez votre fichier<strong><span style="color: #0059b3"> Listener.php</span></strong> et commencez par indiquer la class :</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">[PHP]<?php</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">class RankList_Listener</span></p><p><span style="font-family: 'Roboto'">{[/PHP]</span></p><p><span style="font-family: 'Roboto'">Maintenant, nous allons indiquer la <strong><span style="color: #0059b3">function template_hook</span></strong> :</span></p><p><span style="font-family: 'Roboto'">[PHP]public static function templateHook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template)</span></p><p><span style="font-family: 'Roboto'">{[/PHP]</span></p><p><span style="font-family: 'Roboto'">Maintenant, nous allons chercher le<strong><span style="color: #0059b3"> hook en question</span></strong> :</span></p><p><span style="font-family: 'Roboto'">[PHP]if($hookName == 'votreHook')</span></p><p><span style="font-family: 'Roboto'">{[/PHP]</span></p><p><span style="font-family: 'Roboto'">Et pour finir nous allons <strong><span style="color: #0059b3">lier la template </span></strong>que nous allons créer par la suite :</span></p><p><span style="font-family: 'Roboto'">[PHP] $contents .= $template->create('votreTemplate');</span></p><p><span style="font-family: 'Roboto'"> }</span></p><p><span style="font-family: 'Roboto'"> }</span></p><p><span style="font-family: 'Roboto'">}[/PHP]</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Une fois le code fini, vous devrez avoir un <strong><span style="color: #0059b3">code similaire</span></strong> à celui-ci :</span></p><p><span style="font-family: 'Roboto'">[PHP]<?php</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">class RankList_Listener // class de votre addon</span></p><p><span style="font-family: 'Roboto'">{</span></p><p><span style="font-family: 'Roboto'"> public static function templateHook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template) // function hook</span></p><p><span style="font-family: 'Roboto'"> {</span></p><p><span style="font-family: 'Roboto'"> if($hookName == 'votreHook') // recherche du hook</span></p><p><span style="font-family: 'Roboto'"> {</span></p><p><span style="font-family: 'Roboto'"> $contents .= $template->create('votreTemplate'); // lier la template créée</span></p><p><span style="font-family: 'Roboto'"> }</span></p><p><span style="font-family: 'Roboto'"> }</span></p><p><span style="font-family: 'Roboto'">}[/PHP]</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Maintenant, allons chercher notre hook. Je souhaite que mon block s'affiche tout en bas de la sidebar, je me rends donc dans le template <strong><span style="color: #0059b3">ad_sidebar_bottom</span></strong> et là je trouve mon hook : <xen:hook name="<strong><span style="color: #0059b3">ad_sidebar_bottom</span></strong>" /></span></p><p><span style="font-family: 'Roboto'">Mon hook étant trouvé, je vais donc remplacer <strong><span style="color: #0059b3">votreHook</span></strong> par <span style="color: #0059b3"><strong>ad_sidebar_bottom</strong></span> dans mon fichier Listener.php !</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Pour finir, allons créer la template où vous devrez placer votre contenu. Pour créer la template, rendez vous dans l'onglet Apparence > Templates > <strong><span style="color: #0059b3">+ Créer un nouveau template </span></strong>et remplissez les champs :</span></p><ul> <li data-xf-list-type="ul"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Nom du template </span></strong>: rankList</span></li> <li data-xf-list-type="ul"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Contenu </span></strong>: <p>test</p></span></li> <li data-xf-list-type="ul"><span style="font-family: 'Roboto'"><strong><span style="color: #0059b3">Extension</span></strong> : choisissez l’extension que nous avons créée</span></li> </ul><p><span style="font-family: 'Roboto'">Enregistrez et maintenant que nous avons créée notre template, remplaçons <strong><span style="color: #0059b3">votreTemplate</span></strong> par <strong><span style="color: #0059b3">rankList</span></strong> dans notre fichier <strong><span style="color: #0059b3">Listener.php</span></strong> !</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Dernièrement, vous devez entrer la class pour éxecuter le rappel de service dans la page de création de l'observateur d'événements en mettant dans la première case la class (<strong><span style="color: #0059b3">RankList_Listener</span></strong>) et dans la seconde la méthode utilisé (<strong><span style="color: #0059b3">templateHook</span></strong>).</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Vous pouvez maintenant enregistrer vos modifications dans votre page où vous avez configuré l'observateur d’événement, <strong><span style="color: #0059b3">votre hook est opérationnel </span></strong>! </span></p><p><span style="font-family: 'Roboto'"></span></p><p style="margin-left: 20px"><span style="font-family: 'Roboto'"><span style="font-size: 18px"><span style="color: #0059b3"><strong>Résultat</strong></span></span></span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Voici le résultat :</span></p><p><span style="font-family: 'Roboto'">[ATTACH=full]102343[/ATTACH]</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Maintenant j'insère mon code :</span></p><p><span style="font-family: 'Roboto'">[ATTACH=full]102344[/ATTACH]</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Et voilà, tutoriel terminé ! </span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Si il y'a certaines choses que vous n'avez pas compris, n'hésitez pas à me poster un message j'y répondrais le plus clairement possible.</span></p><p><span style="font-family: 'Roboto'"></span></p><p><span style="font-family: 'Roboto'">Bonne journée,</span></p><p><span style="font-family: 'Roboto'"><em>Hayzen</em></span></p></blockquote><p></p>
[QUOTE="1899, post: 6957329, member: 146051"] [CENTER][FONT=Roboto][ATTACH=full]102341[/ATTACH][/FONT][/CENTER] [FONT=Roboto]Bonjour à tous, aujourd'hui je vous propose un tutoriel sur[B][COLOR=#0059b3] l'utilisation des hook [/COLOR][/B]sur xenForo. Les hook sur xenForo vous permettrons de[B][COLOR=#0059b3] lier une template[/COLOR][/B] a une balise placé dans une autre template. Par exemple, une template contenant la balise [B][COLOR=#0059b3]<xen:hook name="ad_sidebar_bottom" />[/COLOR][/B] pourra, si vous le voulez, être [B][COLOR=#0059b3]lié à une template[/COLOR][/B] que vous avez créée. C'est utile pour [B][COLOR=#0059b3]créer des blocks[/COLOR][/B] dans la sidebar par exemple et [B][COLOR=#0059b3]éviter d'avoir trop de code[/COLOR][/B] dans une même template. L'avantage de l'utilisation des hooks, c'est que pour désactiver le template, vous aurez juste à [B][COLOR=#0059b3]désactiver l'addon[/COLOR][/B] que vous avez crée. Dans ce tutoriel, nous verrons comment créer un block contenant [B][COLOR=#0059b3]la liste des grades[/COLOR][/B] sur un forum. Prêt ? Allons y ! [/FONT] [INDENT][FONT=Roboto][SIZE=5][COLOR=#0059b3][B]Création de l'addon[/B][/COLOR][/SIZE][/FONT][/INDENT] [FONT=Roboto] Tout dabord, nous allons [B][COLOR=#0059b3]créer un addon[/COLOR][/B] qui nous permettra de[B][COLOR=#0059b3] contrôler le hook[/COLOR][/B]. Il faut bien évidemment [B][COLOR=#0059b3]activer le mode debug [/COLOR][/B]pour pouvoir accéder à [B][COLOR=#0059b3]l'onglet développement[/COLOR][/B] dans votre panel, si il n'est pas activé ajoutez ce code dans votre fichier config.php (disponible dans le dossier library) : [PHP]$config['debug'] = '1';[/PHP] Une fois l'onglet développement disponible, rendez vous dans [B][COLOR=#0059b3]+ Créer une extension[/COLOR][/B] et remplissez les champs :[/FONT] [LIST=1] [*][FONT=Roboto][B][COLOR=#0059b3]ID de l'extension[/COLOR][/B] : rankList[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]Titre[/COLOR][/B] : Liste des rangs du forum[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]Version [/COLOR][/B]: 1.0.0[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]ID de la version [/COLOR][/B]: 1[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]URL [/COLOR][/B]: laissez vide[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]Code d'installation[/COLOR][/B] : laissez vide[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]Code de désinstallation[/COLOR][/B] : laissez vide[/FONT] [/LIST] [FONT=Roboto]Enregistrez, et maintenant vous avez votre extension d'installé. Maintenant, allons créer un [B][COLOR=#0059b3]observateur d'évenement [/COLOR][/B]qui vous permettra d'activer la[B][COLOR=#0059b3] function template_hook [/COLOR][/B]sur votre extension. Rendez vous dans [B][COLOR=#0059b3]+ Créer un auditeur d’événement[/COLOR][/B] et remplissez les champs :[/FONT] [LIST=1] [*][FONT=Roboto][B][COLOR=#0059b3]Choisir l'événement [/COLOR][/B]: choisissez template_hook[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]Trace d’événement [/COLOR][/B]: laissez vide[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]Exécuter rappel de service[/COLOR][/B] : laissez vide (pour le moment)[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]Ordre de rappel d’exécution[/COLOR][/B] : laissez la valeur 10[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]Description[/COLOR][/B] : Liste des rangs[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]Extension [/COLOR][/B]: choisissez l'extension que vous avez créée auparavant[/FONT] [/LIST] [FONT=Roboto]Votre observateur d’événement est désormais configuré[B] [COLOR=#0059b3]MAIS [/COLOR][/B]n'enregistrez pas maintenant car ce n'est pas fini ! Nous allons procéder au [B][COLOR=#0059b3]développement du Listener[/COLOR][/B] sur votre ftp. [/FONT] [INDENT][FONT=Roboto][SIZE=5][COLOR=#0059b3][B]Création des fichiers de l'extension[/B][/COLOR][/SIZE][/FONT][/INDENT] [FONT=Roboto] Maintenant, rendez vous dans votre ftp et plus particulièrement dans votre fichier[B][COLOR=#0059b3] library [/COLOR][/B]où vous allez créer le dossier de votre extension. Donc, dans votre dossier [B][COLOR=#0059b3]library[/COLOR][/B], créez un dossier [B][COLOR=#0059b3]RankList[/COLOR][/B] puis créez un fichier [B][COLOR=#0059b3]Listener.php[/COLOR][/B] à l'intérieur de ce même dossier. Vous aurez donc cette arborescence :[/FONT] [LIST] [*][FONT=Roboto]library[/FONT] [LIST] [*][FONT=Roboto]RankList[/FONT] [LIST] [*][FONT=Roboto]Listener.php[/FONT] [/LIST] [/LIST] [/LIST] [FONT=Roboto]Ouvrez votre fichier[B][COLOR=#0059b3] Listener.php[/COLOR][/B] et commencez par indiquer la class : [PHP]<?php class RankList_Listener {[/PHP] Maintenant, nous allons indiquer la [B][COLOR=#0059b3]function template_hook[/COLOR][/B] : [PHP]public static function templateHook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template) {[/PHP] Maintenant, nous allons chercher le[B][COLOR=#0059b3] hook en question[/COLOR][/B] : [PHP]if($hookName == 'votreHook') {[/PHP] Et pour finir nous allons [B][COLOR=#0059b3]lier la template [/COLOR][/B]que nous allons créer par la suite : [PHP] $contents .= $template->create('votreTemplate'); } } }[/PHP] Une fois le code fini, vous devrez avoir un [B][COLOR=#0059b3]code similaire[/COLOR][/B] à celui-ci : [PHP]<?php class RankList_Listener // class de votre addon { public static function templateHook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template) // function hook { if($hookName == 'votreHook') // recherche du hook { $contents .= $template->create('votreTemplate'); // lier la template créée } } }[/PHP] Maintenant, allons chercher notre hook. Je souhaite que mon block s'affiche tout en bas de la sidebar, je me rends donc dans le template [B][COLOR=#0059b3]ad_sidebar_bottom[/COLOR][/B] et là je trouve mon hook : <xen:hook name="[B][COLOR=#0059b3]ad_sidebar_bottom[/COLOR][/B]" /> Mon hook étant trouvé, je vais donc remplacer [B][COLOR=#0059b3]votreHook[/COLOR][/B] par [COLOR=#0059b3][B]ad_sidebar_bottom[/B][/COLOR] dans mon fichier Listener.php ! Pour finir, allons créer la template où vous devrez placer votre contenu. Pour créer la template, rendez vous dans l'onglet Apparence > Templates > [B][COLOR=#0059b3]+ Créer un nouveau template [/COLOR][/B]et remplissez les champs :[/FONT] [LIST] [*][FONT=Roboto][B][COLOR=#0059b3]Nom du template [/COLOR][/B]: rankList[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]Contenu [/COLOR][/B]: <p>test</p>[/FONT] [*][FONT=Roboto][B][COLOR=#0059b3]Extension[/COLOR][/B] : choisissez l’extension que nous avons créée[/FONT] [/LIST] [FONT=Roboto]Enregistrez et maintenant que nous avons créée notre template, remplaçons [B][COLOR=#0059b3]votreTemplate[/COLOR][/B] par [B][COLOR=#0059b3]rankList[/COLOR][/B] dans notre fichier [B][COLOR=#0059b3]Listener.php[/COLOR][/B] ! Dernièrement, vous devez entrer la class pour éxecuter le rappel de service dans la page de création de l'observateur d'événements en mettant dans la première case la class ([B][COLOR=#0059b3]RankList_Listener[/COLOR][/B]) et dans la seconde la méthode utilisé ([B][COLOR=#0059b3]templateHook[/COLOR][/B]). Vous pouvez maintenant enregistrer vos modifications dans votre page où vous avez configuré l'observateur d’événement, [B][COLOR=#0059b3]votre hook est opérationnel [/COLOR][/B]! [/FONT] [INDENT][FONT=Roboto][SIZE=5][COLOR=#0059b3][B]Résultat[/B][/COLOR][/SIZE][/FONT][/INDENT] [FONT=Roboto] Voici le résultat : [ATTACH=full]102343[/ATTACH] Maintenant j'insère mon code : [ATTACH=full]102344[/ATTACH] Et voilà, tutoriel terminé ! Si il y'a certaines choses que vous n'avez pas compris, n'hésitez pas à me poster un message j'y répondrais le plus clairement possible. Bonne journée, [I]Hayzen[/I][/FONT] [/QUOTE]
Insérer les citations…
Vérification
Publier la réponse
Forums
Forums généraux
Informatique
Développement
Utilisation des hook sur XenForo
Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
Acceptez
En savoir plus.…
Haut