Fork me on GitHub

Rapport de message :*
 

Utilisation de Xoops Tag avec le module News

Titre du sujet : Utilisation de Xoops Tag avec le module News
par jeankrikri sur 23/08/2007 10:09:45

Pour ceux que ça intéresse, voici une proposition de modifications à faire sur le module news pour pouvoir l'utiliser avec Xoops Tag (un module permettant de mettre des Tags et de faire un nuage de tag).

Versions utilisées :
News -> Version 1.55
Xoops Tag -> Version 1.60

Je me suis basé sur les instructions contenues dans le fichier /modules/tag/sample.php

/* Step 1: add tag input box */
// File: edit.item.php

Première étape , il faut ajouter la possibilité d'indiquer les tag lors de l'édition d'un article.

Pour cela, insérer le code suivant dans le fichier /modules/news/include/storyform.inc après la ligne 101 ( A la fin du bloc //Extra info , juste avant // Manage upload(s) )

// Hack permettant l’utilisation avec le module Xoops Tag
include_once XOOPS_ROOT_PATH."/modules/tag/include/formtag.php";
$sform->addElement(new XoopsFormTag("item_tag"60255$storyid$topicid 0));


Ce code fait apparaître un champs supplémentaire nommé "Tag" quand vous crééz ou éditzez un article, à remplir avec les mots clés souhaités.


/* Step 2: add tag storage after item storage */
// File: submit.item.php

Deuxième étape , on stocke les valeurs saisies dans la base de données

Pour cela, insérer le code suivant dans le fichier /news/submit.php, après la ligne 418 ( après l’instruction $result = $story->store();)

// Hack permettant l’utilisation avec le module Xoops Tag
$tag_handler xoops_getmodulehandler('tag''tag');
$tag_handler->updateByItem($_POST["item_tag"], $story->storyid(), $xoopsModule->getVar("dirname"), $catid =0);


/* Step 3: define functions to build info of tagged items */
// File: /modules/tag/plugin/mymodule.php OR /modules/mymodule/include/plugin.tag.php

Troisième étape, créer le plugin dans le module Tag
Pour cela, dans /modules/tag/plugin, dupliquez un des plugins déjà réalisé, par exemple newbb.php et créer un fichier qui s'appelle news.php

Dans le fichier news.php, remplacez la fonction function newbb_tag_iteminfo(&$items) par la fonction news_tag_iteminfo(&$items)

function news_tag_iteminfo(&$items)
{
    if(empty(
$items) || !is_array($items)){
        return 
false;
    }
    
    
$items_id = array();
    foreach(
array_keys($items) as $cat_id){
        
// Some handling here to build the link upon catid
            // catid is not used in newbb, so just skip it
        
foreach(array_keys($items[$cat_id]) as $item_id){
            
// In newbb, the item_id is "topic_id"
            // In news, the item_id is "storyid"
            
$items_id[] = intval($item_id);

        }
    }

include_once 
XOOPS_ROOT_PATH.'/modules/news/class/class.newsstory.php';

    foreach(
array_keys($items) as $cat_id){
        foreach(
array_keys($items[$cat_id]) as $item_id){
            
            
$article = new NewsStory($item_id);
            
$items[$cat_id][$item_id] = array(
                
"title"        => $article->title(),
                
"uid"        => $article->uid(),
                
"link"        => "article.php?storyid={$item_id}",
                
"time"        => $article->created(),
                
"tags"        => tag_parse_tag($article->keywords()),
                
"content"    => $article->hometext(),
                );
        }
    }
    unset(
$items_obj);    
}


Je n'ai pas touché pour l'instant à la deuxième fonction du fichier plugin mais il faut tout de même la renommer en function news_tag_synchronization($mid)

Je n'ai pas réalisé les étapes 4,5,6 du ficher sample.php car pour l'instant cela me suffit : j'utilise le bloc du module Tag pour l'affichage.

Pour voir ci cela fonctionne, rendez-vous sur la page d'accueil du module Tag

Voilà, ça fonctionne chez moi mais n'hésitez pas si vous avez des remarques ou d'autres propositions à faire.
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

48 Personne(s) en ligne (38 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 48 | Plus ...