Bonjour a tous !
j'essaie d'inclure xoops tag dans catads (je sais encore catads !!! )
j'y suis partiellement arriver, catads a déjà un système de tags qui fonctionne plus ou moins (ne filtre pas les le, la, et etc...)
Donc je voulais me servir de ce système pour lui ajouter la pris en charge de xoops tag (2.30 je crois) et donc de deux block "nuage de tags" et "top tag"
voici comment je m'y suis pris (pas forcement la meilleur façon)
j'ai ajouter dans xoops_version.php
//ajout CPascal 4/09/2009 - blocks tags de xoops tag
$modversion['blocks'][6]['file'] = "catads_block_tag.php";
$modversion['blocks'][6]['name'] = _MI_CATADS_TAG_CLOUD;
$modversion['blocks'][6]['description'] = "Show tag cloud";
$modversion['blocks'][6]['show_func'] = "catads_tag_block_cloud_show";
$modversion['blocks'][6]['edit_func'] = "catads_tag_block_cloud_edit";
$modversion['blocks'][6]['options'] = "100|0|150|80";
$modversion['blocks'][6]['template'] = 'catads_tag_block_cloud.html';
$modversion['blocks'][7]['file'] = "catads_block_tag.php";
$modversion['blocks'][7]['name'] = _MI_CATADS_TOP_TAGS;
$modversion['blocks'][7]['description'] = "Show top tag";
$modversion['blocks'][7]['show_func'] = "catads_tag_block_top_show";
$modversion['blocks'][7]['edit_func'] = "catads_tag_block_top_edit";
$modversion['blocks'][7]['options'] = "50|30|c";
$modversion['blocks'][7]['template'] = 'catads_tag_block_top.html';
//fin de l'ajout
et une variable dans préférence du module
//ajout CPascal 4/09/2009 - blocks tags de xoops tag
$modversion['config'][$i]['name'] = 'usercantag';
$modversion['config'][$i]['title'] = '_MI_CATADS_USE_TAGS';
$modversion['config'][$i]['description'] = '';
$modversion['config'][$i]['formtype'] = 'yesno';
$modversion['config'][$i]['valuetype'] = 'int';
$modversion['config'][$i]['default'] = 0;
$i++;
//fin de l'ajout
Puis dans les fichiers: form1_ads.inc.php, form2_ads.inc.php et form3_ads.inc.php
//Modif CPascal le 5/09/2009
//$title_tags = new XoopsFormText(_MD_CATADS_TAGS, "ads_tags", 52, 100, $ads_tags);
//$adsform->addElement($title_tags);
//ajout CPascal le 5/09/2009 - ajout fonction xoops tag
if ( $xoopsModuleConfig['usercantag'] ) {
require_once XOOPS_ROOT_PATH . '/modules/tag/include/formtag.php';
$title_tags = new XoopsFormTag('ads_tags', 52, 100, $ads_tags);
$adsform -> addElement($title_tags);
} else {
$adsform -> addElement( new XoopsFormHidden( 'ads_tags', $ads_tags ) );
}
//fin de l'ajout
jusqu'à là je pense que c'est correct la texbox de xoops tag s'affiche dans les formulaires de soumission, de modification etc...
après cela se complique,
j'ai créer un fichier: catads_block_tag.php que j'ai mis dans le dossier blocks du module:
function catads_tag_block_cloud_show($options)
{
require_once XOOPS_ROOT_PATH.'/modules/tag/blocks/block.php';
// sans ce code le block s'affiche mais affiche les tags de d'autres modules et affiche:
//Undefined variable: module_dirname in file /modules/catads/blocks/catads_block_tag.php line 14
/*if(!isset($module_dirname)) {
$module_dirname = 'catads';
}*/
return tag_block_cloud_show($options, $module_dirname);
}
function catads_tag_block_cloud_edit($options)
{
require_once XOOPS_ROOT_PATH.'/modules/tag/blocks/block.php';
return tag_block_cloud_edit($options);
}
function catads_tag_block_top_show($options)
{
require_once XOOPS_ROOT_PATH.'/modules/tag/blocks/block.php';
if(!isset($module_dirname)) { // le block ne s'affiche pas !!!
$module_dirname = 'catads';
}
return tag_block_top_show($options, $module_dirname);
}
function catads_tag_block_top_edit($options)
{
require_once XOOPS_ROOT_PATH.'/modules/tag/blocks/block.php';
return tag_block_top_edit($options);
}
la je pense qu'il y a des problèmes ?!
puis
j'ai créer la page: plugin.tag.php que j'ai mis dans le dossier include du module:
function catads_tag_iteminfo(&$items)
{
$ads_tags = array();
foreach (array_keys($items) as $cat_id) {
// Some handling here to build the link upon catid
// If catid is not used, just skip it
foreach (array_keys($items[$cat_id]) as $ads_tags) {
// In article, the item_id is "art_id"
$ads_tags[] = intval($ads_tags);
}
}
$item_handler =& xoops_getmodulehandler("ads_tags", "catads");
$items_obj = $item_handler->getObjects(new Criteria("ads_tags", "(" . implode(", ", $catads_ads) . ")", "IN"), true);
foreach (array_keys($items) as $cat_id) {
foreach (array_keys($items[$cat_id]) as $ads_tags) {
$item_obj =& $items_obj[$ads_tags];
$items[$ads_id][$ads_tags] = array(
"title" => $item_obj->getVar("ads_title"),
"uid" => $item_obj->getVar("uid"),
"link" => "adslist.php?search=1&words=".$mots_tags[$i]."",
"time" => $item_obj->getVar("item_time"),
"tags" => tag_parse_tag($item_obj->getVar("ads_tags", "n")), // optional
"content" => "",
);
}
}
unset($items_obj);
}
/** Remove orphan tag-item links **/
function mymodule_tag_synchronization($mid)
{
}
La je pense que c'est un peut n'importe quoi ! je n'arrête pas de modifier ce fichier et le fichier catads_block_tag.php je me base sur le module news et oledrion comme exemple mais je n'y parviens pas les blocks s'affiche mais suivant les commentaires dans catads_block_tag.php au dessus et surtout les tags de catads n'apparaîssent pas dans les blocks "Nuage de mots clés de catads" et "top tags de catads"
par contre j'ai les tags des modules news et oledrion dedans et dans l'admin de xoops tag catads n'est pas détecter news et oledrion oui mais pas catads
qui serait m'indiquer la bonne démarche
je viens d'ajouter dans le fichier plugin.tag.php sa:
function catads_tag_synchronization($mid)
{
global $xoopsDB;
$item_handler_keyName = 'ads_id';
$item_handler_table = $xoopsDB->prefix('catads_ads');
$link_handler =& xoops_getmodulehandler('link', 'tag');
$where = "1=1";
$where1 = "1=1";
/* clear tag-item links */
if($link_handler->mysql_major_version() >= 4):
$sql = " DELETE FROM {$item_handler_table->table}".
" WHERE ".
" ads_tags = {$mid}".
" AND ".
" ( ads_tags NOT IN ".
" ( SELECT DISTINCT {$item_handler_keyName} ".
" FROM {$item_handler_table} ".
" WHERE $where".
" ) ".
" )";
else:
$sql = " DELETE {$item_handler_table}.ads_tags = aa.{$item_handler_keyName}".
" LEFT JOIN {$item_handler_table}.ads_tags = aa.{$item_handler_keyName} ".
" WHERE ".
" ads_tags = {$mid}".
" AND ".
" ( aa.{$item_handler_keyName} IS NULL".
" OR $where1".
" )";
endif;
//if (!$item_handler_table->db->queryF($sql)) {
// trigger_error($item_handler_table->db->error());
// }
mais évidement ce n'est pas bon !:oops:
merci a vous