Version 2 — Mai 2011 — JLuc
Dans les versions de SPIP jusqu’à la 2.1 , les Les forums prédéfinis de SPIP spip sont liés aux objets traditionnels de SPIP spip : articles, rubriques, brèves... Dans les versions ultérieures par contre , A l’avenir la gestion des forums sous spip sera ouverte à tous type d’objets éditoriaux. Les forums sont alors stockés dans une table ayant comme index un duo « objet / id_objet ».
Un plugin permet d’ores et déjà , pour permettre d’intégrer cette souplesse à SPIP cela au Spip actuel ( version 2.1. ) Son source Un plugin est accessible [sur en cours de développement , [ici sur la zone->1/plugins/forum" class="spip_url spip_out auto" rel="nofollow external">http://zone.spip.org/trac/spip-zone/browser/_core_/branches/spip-2.1/plugins/forum ]. 1/plugins/forum]
Voici des indications pour l’utiliser afin d’utiliser les forums sur de quoi l’adapter à tous les types d’objets éditoriaux que vous désirerez désirez introduire dans SPIP spip . C’est en fait mon témoignage d’utilisation de ce Ce plugin pour bénéficier des forums sur des objets « évènements » (rien à voir avec agenda cependant ). est malheureusement inutilisable tel quel .
Cette documentation n’est pas destinée aux novices : il est nécessaire de se servir d’un client SVN. (voir La Zone Facile)
Tout d’abord, récupérer installer [le plugin présent sur la zone->http://zone.spip.org/trac/spip-zone/browser/_core_/branches/spip-2.1/plugins/forum] au moyen de votre outil SVN favori.
Dans l’exemple donné ici , l’adaptation
L’adaptation proposée est faite pour intégrer le forum sur des objets qui servent à la gestion d’évènements. Ces objets ont pour nom « evenement » et comme nom d’identifiant dans la base de donnée « id_evenement ».
» _ Attention : il n’y a aucun rapport avec le plugin Agenda.
Compléter -* Compléter le pipeline < code>forum_objets_depuis_env</code > forum_objets_depuis_env
Ce pipeline renvoie les couples < code>(objet : objet => id_objet)</code > des objets qui utilisent les forums sur votre site . id_objet Il faut y ajouter les vôtres.
La déclaration est faite dans le fichier balises/formulaire_forum.php. Par défaut celle-ci est :
$objets = pipeline('forum_objets_depuis_env', array(
'article' => id_table_objet('article'),
'rubrique' => id_table_objet('rubrique'),
'site' => id_table_objet('site'),
'breve' => id_table_objet('breve')
));
Pour compléter ce pipeline, il fallait passer par la création d’un plugin [1]. Je l’ai appelé pluforev
.
Il faut donc compléter ce pipeline. Pour cela, il faut passer par la création d’un petit plugin (2 fichiers seulement). A télécharger ici et personnalisé.
On déclare la définition du pipeline dans le plugin.ce plugin sert juste à définir un pipeline “forum_objets_depuis_env” du plugin forum.
Dans Pipeline définie dans le fichier < code>plugin balises/formulaire_forum .xml</code > de notre plugin , nous avons déclaré la définition du pipeline : xml
<plugin>
<nom>pluforev - Ajout de la gestion des évènements au plugin forum</nom>
<auteur> </auteur>
<licence> </licence>
<description >
Des forums pour les évènements ( définition du pipeline “ forum_objets_depuis_env ” du <description>Ajout au plugin forum).
pour la gestion des evenements ... </description php
</ description >
<prefix>pluforev</prefix>
<pipeline>
<nom>forum_objets_depuis_env</nom>
<inclure>pluforev_pipelines.php</inclure>
</pipeline>
</plugin>
Le Puis , le code de < code>pluforev_pipelines pluforev_pipelines .php</code > lui-même php est :
function pluforev_forum_objets_depuis_env($objets){
$objets['evenement'] = 'id_evenement';
return $objets;
}
Création -* Création d’un fichier < code>inc/evenement_forum_extraire_titre squelettes/inc/evenement_forum_extraire_titre .php</code > php
Cette étape est nécessaire si la table ( dans la base de données ) sur laquelle on veut appliquer les forums n’est pas déclarée dans spip : elle permet à SPIP de récupérer le « titre » de vos objets , ou son équivalent .
Créez un Le nom du nouveau fichier dont le nom doit être : < code>objet+_forum_extraire_titre objet+_forum_extraire_titre .php</code >, php à placer dans le répertoire < code > votrerepertoiresquelettes/inc</code > spip squelettes/inc
Ce fichier définit une fonction nommée < code>inc_+objet+_forum_extraire_titre</code >. inc_+objet+_forum_extraire_titre . Fonction appelée dans le plugin forum en ligne 210 du fichier < code>balise/formulaire_forum balise/formulaire_forum .php</code >.
php .
Cette fonction Elle retourne le titre de l’objet passé en paramètre.
Pour ma gestion d’évènements, le contenu de ce fichier est :
function inc_evenement_forum_extraire_titre($id) {
return $titre = sql_getfetsel('titre', 'spip_evenements', 'id_evenement=' . intval($id));
}
-* Surcharger la fonction < code>inc_forum_insert</code > inc_forum_insert
Reprendre la fonction < code>inc_forum_insert</code > inc_forum_insert du fichier < code>forum/inc/forum_insert forum/inc/forum_insert .php</code >, php , puis modifier son contenu dans le fichier < code>pluforev_options mes_options .php</code > php
Dans la version actuelle du plugin forum, c’est la ligne n°106 qui est à modifier.
Par exemple pour l’ajout des évènements, on modifie ainsi la partie du code concernée :
.....
if (!$id_objet OR !$objet) {
foreach (array('article', 'breve', 'rubrique', 'syndic', 'message','ticket', 'evenement')
as $ob) {
if ($id = intval(_request('id_'.$ob))) {
$objet = $ob;
$id_objet = $id;
}
}
}
…....
[serait (…)" id="nh2">2] ).
Dans
Dans Par exemple dans mon squelette d’affichage d’un événement, l’appel du forum se fait simplement par <code><INCLUREfond=inclure/forumid_evenement var>
<INCLURE{fond=inclure/forum}{id_evenement} /></code> </var >
{{ -* Dans le fichier squelette forum }} forum
- Dans la distribution SPIP spip il s'agit du fichier < code>inc-forum {inc-forum .html</code >.
html }. - Dans ZPIP c'est <code>inclure/forum.html
Dans zpip, c’est inclure/forum.html
Si on veut pouvoir la restreindre à un UN objet passé en url seulement (un evenement dans notre cas) , il faut redéfinir ce fichier dans votre squelette et ajouter un critère aux 2 boucles sur les forums :
<code><BOUCLE_decompte(FORUMS var>
<BOUCLE_decompte(FORUMS ) {id_evenement ?}. . .</code } …</ code > </var >
et
<code><BOUCLE_forums(FORUMS var><code><BOUCLE_forums(FORUMS ) {id_evenement ?}. } …. . .</code> </var >
{{ -* Dans le squelette de réponse à un forum}} forum
- Dans la dist spip, il s'agit du fichier < code>forum {forum .html</code >.
html }. - Dans ZPIP c'est <code>contenu/page-forum.html
Dans zpip, c’est contenu/page-forum.html
Faire les ajouts nécessaire pour qu’il s’affiche bien les informations relatives à l’objet concerné lors de la réponse à un forum