Créer/Ajouter BBCode

Plus d'informations
15 Mar 2012 00:12 #1 par Black_Storm
Créer/Ajouter BBCode a été créé par Black_Storm
Bonsoir à tous,

J'utilise kunena depuis pas mal de temps par pur plaisir (et avant fireboard et avant joomlaboard et etc etc).
J'ai fait un site pour un ami qui a une guilde sur World of Warcraft.
Ce site tourne sous Joomla! 1.7.5 avec Kunena 1.7.2.
Tout va bien, j'ai pu faire de grandes choses avec Joomla 1.7 (j'ai trouvé les changements chouettes car mon site perso est toujours sous 1.5 et je ne le changerai pas).

Voici alors ma petite question.
Dans un besoin assez normal on va dire, la guide voudrait que je rajoute une fonction BBcode pour simplifier un type d'url.
Les URL en questions sont celles de Wowhead tooltip qui donnent, lorsqu'on pose la souris dessus, une bulle avec les informations désirées.
Dans WoWHead Tooltip, le texte est un objet du jeu et la bulle affiche les informations de cet objet.
Le truc de base qui permet d'afficher la bulle fonctionne grâce au site de WoWHead avec leurs explications.
Je voudrais maintenant simplifier le tout en permettant dans le forum d'écrire un bbcode simple qui donnera le code complet pour le message posté.

J'ai trouvé cette page web: www.icemelon.com/tutorials/21/Create_Your_Own_BBCode.htm et j'ai pris exemple des codes dessus pour créer le mien:
Code:
$pattern[] = '/\[wow=(.*?)\](.*?)\[\/wow\]/i'; $replace[] = '<a href="http://fr.wowhead.com/item=$1>$2</a>';
Je voudrais savoir où est-ce que je pourrais trouver le fichier pour le rajouter.

Le site en question: www.le-val-fleuri.net
Je vous remercie d'avance et une bien bonne nuit à tous !

Cordialement,
Black_Storm

Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.

Plus d'informations
17 Mar 2012 12:23 #2 par failrOn
Réponse de failrOn sur le sujet Re: Créer/Ajouter BBCode
Bonjour,

Pour la gestion des bbcodes ça se passe dans le fichier \components\com_kunena\lib\kunena.parser.php.

Par exemple ligne 603 tu ajoute :
Code:
case 'monbbcode' : $tempstr = $between; if (! preg_match ( "`^(/|index.php|https?://)`", $tempstr )) { $tempstr = 'http://' . $tempstr; } $tag_new = '<a href="' . $tempstr .'" rel="nofollow" target="_blank">' . $between . '</a>'; return TAGPARSER_RET_REPLACED; break;

Au milieu tu place la logique pour faire ce que tu veux. Là ça va t'afficher une url.

Pour soutenir le projet Kunena : soutenir via le système de sponsor de github

Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.

Plus d'informations
17 Mar 2012 16:52 - 17 Mar 2012 17:00 #3 par Black_Storm
Réponse de Black_Storm sur le sujet Re: Créer/Ajouter BBCode
Bonjour,
merci de prendre le temps pour répondre à ma question.

J'ai suivi l'instruction j'ai donc été dans le fichier.
J'ai rajouté ceci:
Code:
case 'wowobject' : $tempstr = $between; if (! preg_match ( "`^(/|index.php|https?://)`", $tempstr )) { $tempstr = 'http://fr.wowhead.com/item=' . $tempstr; } $tag_new = '<a href="' . $tempstr . '" rel="nofollow" target="_blank">' . $between . '</a>'; return TAGPARSER_RET_REPLACED; break; case 'wowachievement' : $tempstr = $between; if (! preg_match ( "`^(/|index.php|https?://)`", $tempstr )) { $tempstr = 'http://fr.wowhead.com/achievement=' . $tempstr; } $tag_new = '<a href="' . $tempstr . '" rel="nofollow" target="_blank">' . $between . '</a>'; return TAGPARSER_RET_REPLACED; break;

Avec ce code je peux alors écire ce bbcode:
Code:
[wowobject=xxx]nom de l'objet[/wowobject] [wowachievement=xxx]nom du haut-fait[/wowobject]
Pour avoir normalement ces résultats:
Code:
[url=http://fr.wowhead.com/item=xxx]nom de l'objet[/url] [url=http://fr.wowhead.com/achievement=xxx]nom du haut-fait[/url]
Mais à la place j'obtiens ceci:
Code:
[url=http://fr.wowhead.com/item=nom de l'objet]nom de l'objet[/url] [url=http://fr.wowhead.com/achievement=nom du haut-fait]nom du haut-fait[/url]

Une idée où se trouve mon erreur ? Je sèche car j'ai tourné ce code dans tous les sens et j'obtiens pire, c'est ainsi que j'obtiens plus ou moins ce que je veux.
Mais je viens de voir ceci:
Code:
$tempstr = $between;
Donc ce que j'écris pour
Code:
[url=xxx]aaa[/url]
me donnera en fait
Code:
[url=aaa]aaa[/url]
.
J'ai alors cherché autre part le code qui concerne les urls
Code:
[url=xxx.net]blabla[/url]
Et en cherchant 'url' j'ai trouvé ceci.
Code:
case 'url' : $task->autolink_disable --; if (isset ( $tag->options ['default'] )) { $tempstr = $tag->options ['default']; if (! preg_match ( "`^(/|index.php|https?://)`", $tempstr )) { $tempstr = 'http://' . $tempstr; } $tns = '<a href="' . $tempstr . '" rel="nofollow" target="_blank">'; $tne = '</a>'; return TAGPARSER_RET_REPLACED; } break;
que j'ai copié/collé et transformé en:
Code:
case 'wowobject1' : $task->autolink_disable --; if (isset ( $tag->options ['default'] )) { $tempstr = $tag->options ['default']; if (! preg_match ( "`^(/|index.php|https?://)`", $tempstr )) { $tempstr = 'http://fr.wowhead.com/item=' . $tempstr; } $tns = '<a href="http://fr.wowhead.com/item=' . $tempstr . '" rel="nofollow" target="_blank">'; $tne = '</a>'; return TAGPARSER_RET_REPLACED; } break; case 'wowachievement1' : $task->autolink_disable --; if (isset ( $tag->options ['default'] )) { $tempstr = $tag->options ['default']; if (! preg_match ( "`^(/|index.php|https?://)`", $tempstr )) { $tempstr = 'http://fr.wowhead.com/achievement=' . $tempstr; } $tns = '<a href="http://fr.wowhead.com/achievement=' . $tempstr . '" rel="nofollow" target="_blank">'; $tne = '</a>'; return TAGPARSER_RET_REPLACED; } break;
Mais cette solution ne me donne rien, en effet, quand je tape:
Code:
[wowobject1=41609]Brassards de traqueur gangrené[/wowobject1] [wowachievement1=2188]Jenkins[/wowachievement1]
Mon résultat est :
Code:
Oui, rien ne s'affiche. Je sais pas si j'ai mal fait quelque chose avec ceci mais le résultat enlève l'url.
Je suis complètement perdu :p
Dernière édition: 17 Mar 2012 17:00 par Black_Storm.

Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.

Modérateurs: lavstephtramber91failrOnScottuxdede17serge
Temps de génération de la page : 0.373 secondes
Propulsé par Kunena