Titre du sujet : Re: TDMPicture par moss sur 02/03/2013 16:13:01
Hello,
J'ai réussi a mettre un peu d'ordre dans mon code, je rencontre un dernier problème... Je n'arrive pas a compter les éléments dans chaque sous-catégorie... J'ai beau comparé à TDM qui le fait je n'y arrive pas
Voici mon code, si quelqu'un à une idée, un grand merci d'avance
La ligne
//$criteria->add(new Criteria('cat_id', '(' . implode(',', $categories) . ')','IN'));
est commenté sinon ça fonctionne plus du tout
Dans le index.php
$categories = TDMPicture_MygetItemIds('tdmpicture_view', 'TDMPicture');
$criteria = new CriteriaCompo();
$criteria->add(new Criteria('file_display', 0, '!='));
$numpict = $file_handler->getCount($criteria);
$xoopsTpl->assign('lang_thereare',$numpict);
$criteria = new CriteriaCompo();
$criteria->add(new Criteria('file_display', 0, '!='));
$criteria->add(new Criteria('file_cat', '(' . implode(',', $categories) . ')','IN'));
$file_arr = $file_handler->getAll($criteria);
//Tableau des catégories
$criteria = new CriteriaCompo();
$criteria->add(new Criteria('cat_display', 1));
//$criteria->add(new Criteria('cat_id', '(' . implode(',', $categories) . ')','IN'));
$criteria->setSort('cat_weight ASC, cat_title');
$criteria->setOrder('ASC');
$picturescat_arr = $cat_handler->getAll($criteria);
$mytree = new TDMObjectTree($picturescat_arr, 'cat_id', 'cat_pid');
//affichage des catégories
$count = 1;
$keywords = '';
foreach (array_keys($picturescat_arr) as $i) {
if ($picturescat_arr[$i]->getVar('cat_pid') == 0){
$totalpictures = TDMPicture_NumbersOfEntries($mytree, $categories, $file_arr, $picturescat_arr[$i]->getVar('cat_id'));
$subcategories_arr = $mytree->getFirstChild($picturescat_arr[$i]->getVar('cat_id'));
$chcount = 0;
$subcategories = '';
//pour les mots clef
$keywords .= $picturescat_arr[$i]->getVar('cat_title') . ',';
foreach (array_keys($subcategories_arr) as $j) {
$subcategories .= '<li><a href="' . XOOPS_URL . '/modules/TDMPicture/viewcat.php?ct=' . $subcategories_arr[$j]->getVar('cat_id') ."&tris=".$tris."&limit=".$limit.'">' . $subcategories_arr[$j]->getVar('cat_title') . '</a> ('.$totalpictures.') </li>' ;
$keywords .= $picturescat_arr[$i]->getVar('cat_title') . ',';
$chcount++;
}
$xoopsTpl->append('categories', array('id' => $picturescat_arr[$i]->getVar('cat_id'), 'title' => $picturescat_arr[$i]->getVar('cat_title'), 'subcategories' => $subcategories, 'totalpictures' => $totalpictures, 'count' => $count));
$count++;
}
}
dans modules/TDMPicture/include/functions.php
//Fonction pour affichage catégories suivant pemissions
function TDMPicture_MygetItemIds($permtype,$dirname)
{
global $xoopsUser;
static $permissions = array();
if(is_array($permissions) && array_key_exists($permtype, $permissions)) {
return $permissions[$permtype];
}
$module_handler =& xoops_gethandler('module');
$tdmModule =& $module_handler->getByDirname($dirname);
$groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS;
$gperm_handler =& xoops_gethandler('groupperm');
$categories = $gperm_handler->getItemIds($permtype, $groups, $tdmModule->getVar('mid'));
return $categories;
}
function TDMPicture_NumbersOfEntries($mytree, $categories, $entries,$cid)
{
$count = 0;
$child_arr = array();
if(in_array($cid, $categories)) {
$child = $mytree->getAllChild($cid);
foreach (array_keys($entries) as $i) {
if ($entries[$i]->getVar('file_cat') == $cid){
$count++;
}
foreach (array_keys($child) as $j) {
if ($entries[$i]->getVar('file_cat') == $j){
$count++;
}
}
}
}
return $count;
}
Et dans les templates modules/TDMPicture/templates/tdmpicture_index.html
<{$lang_thereare}>
<!-- Start category loop -->
<{foreach item=category from=$categories}>
<a href="<{$xoops_url}>/modules/TDMPicture/viewcat.php?ct=<{$category.id}>"><h3><{$category.title}></h3></a>
<{if $category.subcategories != ""}>
<ul><{$category.subcategories}></ul><{/if}>
<{/foreach}>
|