|
Re: TDMPicture |
|
Régulier
Inscrit: 06/06/2004 21:24
De Paris
|
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}>
Posté le : 02/03/2013 16:13
|
|
|
Re: TDMPicture |
|
Régulier
Inscrit: 06/06/2004 21:24
De Paris
|
Merci Venom, j'avais pas bien vu ton message, en effet cela se passe du coté de ces fonctions, mais je comprend pas bien ce qui se passe dedans, je suis pas du tout developpeur, j'essai juste de bidouiller en comprenant... lol Du coup, en allant du coté de la solution de nikita, j'ai observé TDM Downloads et j'avance un peu... Voici ce que j'ai mis coté php
$categories = TDMPicture_MygetItemIds('tdmpicture_cat', 'TDMPicture');
//tableau des téléchargements
$criteria = new CriteriaCompo();
$criteria->add(new Criteria('file_display', 0, '!='));
$criteria->add(new Criteria('cat_id', '(' . implode(',', $categories) . ')','IN'));
$file_arr = $file_handler->getAll($criteria);
$file_count = $file_handler->getCount($criteria);
$xoopsTpl->assign('lang_thereare',$file_count);
//tableau des catégories
$criteria = new CriteriaCompo();
$criteria->setOrder('ASC');
$criteria->setSort('cat_weight');
$criteria->add(new Criteria('cat_display', 1));
$cat_arr = $cat_handler->getAll($criteria);
$mytree = new TDMObjectTree($cat_arr, 'cat_id', 'cat_pid');
//affichage des catégories
$count = 1;
$keywords = '';
foreach (array_keys($cat_arr) as $i) {
if ($cat_arr[$i]->getVar('cat_pid') == 0){
$totalpictures = TDMPicture_NumbersOfEntries($mytree, $categories, $file_arr, $cat_arr[$i]->getVar('cat_id'));
$subcategories_arr = $mytree->getFirstChild($cat_arr[$i]->getVar('cat_id'));
$chcount = 0;
$subcategories = '';
//pour les mots clef
$keywords .= $cat_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></li>' ;
$keywords .= $cat_arr[$i]->getVar('cat_title') . ',';
$chcount++;
}
$xoopsTpl->append('categories', array('id' => $cat_arr[$i]->getVar('cat_id'), 'title' => $cat_arr[$i]->getVar('cat_title'), 'subcategories' => $subcategories, 'totalpictures' => $totalpictures, 'count' => $count));
$count++;
}
}
et coté html dans le template j'ai mis ça
<{$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> (<{$category.totalpictures}>)
<{if $category.subcategories != ""}>
<ul><{$category.subcategories}></ul><{/if}>
<{/foreach}>
Ca marche pas mal, j'ai quelques problèmes quand même... Une de mes catégorie apparait deux fois, et le nombre d'item par catégorie <{$category.totalpictures}> et le nombre d'item total <{$lang_thereare}> ne fonctionne pas Accessoirement je comprend pas tout a ce que j'ai mis
Posté le : 01/03/2013 19:50
|
|
|
Re: TDMPicture |
|
Régulier
Inscrit: 06/06/2004 21:24
De Paris
|
Voici le code utilisé coté html
<{$display_cat}>
et coté php
$criteria = new CriteriaCompo();
$criteria->add(new Criteria('cat_display', 1));
// $criteria->add(new Criteria('cat_index', 1));
$criteria->setSort('cat_weight');
$criteria->setOrder('ASC');
/* $criteria->add(new Criteria('cat_display', 1));*/
$cat_arr = $cat_handler->getall($criteria);
$mytree = new TDMObjectTree($cat_arr, 'cat_id', 'cat_pid');
// asigne les URL
// define("TDM_CAT_URL", TDMPICTURE_CAT_URL);
// define("TDM_CAT_PATH", TDMPICTURE_CAT_PATH);
// define("TDM_CAT_LINK", "viewcat.php");
// $cat_display = $xoopsModuleConfig['tdmpicture_cat_display'];
// $cat_cel = $xoopsModuleConfig['tdmpicture_cat_cel'];
$display_cat = $mytree->makeCatBox($file_handler, 'cat_title','-', $cat = false);
$xoopsTpl->assign('display_cat', $display_cat);
$numcat = $cat_handler->getCount($criteria);
$xoopsTpl->assign('numcat', $numcat);
Cela m'affiche bien les catégories mais les sous-catégories sont dans un menu déroulant, hors je les souhaites les une en dessous des autres à plat... et idéalement avec le nombre de photos dans chaque lol Merci en tout cas de te pencher sur ce sujet
Posté le : 28/02/2013 23:28
|
|
|
Re: TDMPicture |
|
Régulier
Inscrit: 06/06/2004 21:24
De Paris
|
Merci Nikita J'avais réussi à en arriver là, mais je souhaite en plus avoir les sous-catégories à plat, celle qui sont dans le menu déroulant... Et c'est là que ca se complique, car pour apparaitre dans ce menu déroulant, cela se passe dans une fonction... et j'arrive donc pas à l'afficher en dehors de ce menu déroulant
Posté le : 27/02/2013 22:48
|
|
|
Re: TDMPicture |
|
Régulier
Inscrit: 06/06/2004 21:24
De Paris
|
J'ai réussi à revenir au niveau de ce qu'on voit dans ce post de venom, https://www.frxoops.org/modules/newbb/ ... id=223000#forumpost223000 mais impossible d'afficher les sous categories à plat en dehors du menu déroulant, cela part dans une fonction makeselbox, et après ça dépasse mes compétences Si quelqu'un a une idée, merci d'avance
Posté le : 24/02/2013 11:34
|
|
|
Re: TDMPicture |
|
Régulier
Inscrit: 06/06/2004 21:24
De Paris
|
Citation :alain01 a écrit : Citation :moss a écrit : Je me pose donc plusieurs questions. Est-il possible de rapatrier coté front-office les catégories et sous catégories à plat de manière plus classique en lieu et place de cette barre ? Réponse habituelle : Surcharge des pages du module
Le soucis c'est qu'aujourd'hui tout le système de navigation est envoyé à travers une balise <{$tree_display}>, donc je sais pas comment faire...
Posté le : 23/02/2013 12:54
|
|
|
Re: TDMPicture |
|
Régulier
Inscrit: 06/06/2004 21:24
De Paris
|
Bonjour, Je viens d'installer la derniere version de TDMP sur xoops 2.5.5 et j'otbiens cette erreur :
$erreur = $file_handler->insert($obj); } } } if ($erreur) { redirect_header('submit.php', 2, _MD_TDMPICTURE_BASE); } //include_once('../include/forms.php'); echo $obj->getHtmlErrors().$errors; $form =& $obj->getForm(); $form->display(); break; case "list": default: redirect_header("index.php", 2, _MD_TDMPICTURE_NOPERM); exit(); } tdmpicture_header(); include_once "../../footer.php"; ?>
Posté le : 23/02/2013 12:45
|
|
|
Re: TDMPicture |
|
Régulier
Inscrit: 06/06/2004 21:24
De Paris
|
Bonjour, Je vais faire un peu de hors sujet par rapport au dernier post et parler plus organisation des albums photos... Je me permet de partager ma reflexion ici, car elle peut peut-être participer à l'amélioration du module En fait j'ai plus de 10 000 photos, 9 catégories, et entre 5 et 10 sous-catégorie par catégorie et même quelques sous-sous-catégorie... ce qui fait beaucoup beaucoup de catégorie... Je réfléchis donc à comment présenter cela de manière optimale et compréhensible. Dans la dernière version que j'ai testé (il y'a quelques semaine donc c'est pas la toute dernière), la barre de navigation pour les catégories ne me convient car d'une part je trouve le système un peu complexe à comprendre - avis personnel - mais d'autres part je pense avoir trop de catégories et sous catégorie pour fonctionner comme cela. De plus j'ai à souhait que les utilisateurs puissent directement visualiser le niveau 1 et 2 directement. Je me pose donc plusieurs questions. Est-il possible de rapatrier coté front-office les catégories et sous catégories à plat de manière plus classique en lieu et place de cette barre ? Autre reflexion, est ce qu'un système de tags ne deviendrait pas plus intéressant ? Et du coup dans quelle mesure est il possible d'intégrer un système de tag a TDMPicture ? Y'a t il un module ou un plugin qui permet d'acceder à ce type de fonctionnalité pour TDMP ? Voilà, merci d'avance pour vos avis, et désolé d'avoir été un peu long. J'espère que ma reflexion intéressera d'autres personnes aussi
Posté le : 18/02/2013 12:04
|
|
|
Re: Modification block Last commented item de MyComments |
|
Régulier
Inscrit: 06/06/2004 21:24
De Paris
|
Pour ceux que ça intéresserait, j'ai finalement réussi en ajoutant ceci dans le fichier php du block :
$com['nbcomment'] = xoops_comment_count($mid, $comments[$i]->getVar('com_itemid'));
et en utilisant ceci
<{$comment.nbcomment}>
pour l'appeler coté surcharge html... Voilà
Posté le : 28/01/2013 17:47
|
|
|
Modification block Last commented item de MyComments |
|
Régulier
Inscrit: 06/06/2004 21:24
De Paris
|
Bonjour tout le monde, J'utilise le module MyComments et notamment son super block dernier sujet commenté... je souhaiterais juste récupérer une info supplémentaire à afficher dans le block... Je voudrais récupérer le nombre de commentaires par item afin de visualiser la popularité d'un sujet... Quelqu'un aurait une idée de comment faire ? J'insere le code du block tel qu'il est si ça peut faciliter quelq'un à m'aider, merci d'avance
function b_mycomments2_show($options)
{
global $xoopsUser;
include_once XOOPS_ROOT_PATH.'/modules/mycomments/include/comment_constants.php';
$limit = 10; // If you are not getting suficient results, please increase a little more this number
$block = $comment_config = $trackedItems = array();
$comment_handler =& xoops_getmodulehandler('comment','mycomments');
$moduleperm_handler =& xoops_gethandler('groupperm');
$member_handler =& xoops_gethandler('member');
$module_handler =& xoops_gethandler('module');
$criteria = new CriteriaCompo(new Criteria('com_status', MYCOM_ACTIVE));
$criteria->setLimit(intval($options[0] * $limit));
$criteria->setSort('com_created');
$criteria->setOrder('DESC');
$comments = $comment_handler->getObjects($criteria, true);
$modules = $module_handler->getObjects(new Criteria('hascomments', 1), true);
$count = 0;
foreach (array_keys($comments) as $i) {
if ( $count == $options[0]) continue;
$mid = $comments[$i]->getVar('com_modid');
if ($xoopsUser) {
if (!$moduleperm_handler->checkRight('module_read', $mid, $xoopsUser->getGroups())) {
continue;
}
} else {
if (!$moduleperm_handler->checkRight('module_read', $mid, XOOPS_GROUP_ANONYMOUS)) {
continue;
}
}
$com['module'] = '<a href="'.XOOPS_URL.'/modules/'.$modules[$mid]->getVar('dirname').'/">'.'<img src="'.XOOPS_URL . '/modules/' . $modules[$mid]->getVar('dirname', 'n') . '/images/ico.gif" />'.'</a>';
if (!isset($comment_config[$mid])) {
$comment_config[$mid] = $modules[$mid]->getInfo('comments');
}
$com['id'] = $i;
$com['title'] = '<a href="'.XOOPS_URL.'/modules/'.$modules[$mid]->getVar('dirname').'/'.$comment_config[$mid]['pageName'].'?'.$comment_config[$mid]['itemName'].'='.$comments[$i]->getVar('com_itemid').'&com_id='.$i.'&com_rootid='.$comments[$i]->getVar('com_rootid').'&'.htmlspecialchars($comments[$i]->getVar('com_exparams')).'#comment'.$i.'">'.$comments[$i]->getVar('com_title').'</a>';
$com['icon'] = htmlspecialchars( $comments[$i]->getVar('com_icon'), ENT_QUOTES );
$com['icon'] = ($com['icon'] != '') ? $com['icon'] : 'icon1.gif';
$com['time'] = formatTimestamp($comments[$i]->getVar('com_created'),'s');
if ($comments[$i]->getVar('com_uid') > 0) {
$poster =& $member_handler->getUser($comments[$i]->getVar('com_uid'));
if (is_object($poster)) {
$com['poster'] = '<a href="'.XOOPS_URL.'/userinfo.php?uid='.$comments[$i]->getVar('com_uid').'">'.$poster->getVar('uname').'</a>';
} else {
$com['poster'] = $GLOBALS['xoopsConfig']['anonymous'];
}
} else {
$com['poster'] = $GLOBALS['xoopsConfig']['anonymous'];
}
if (count($trackedItems) > 0) {
$itemMatch = false;
foreach (array_keys($trackedItems) as $j) {
if ($comments[$i]->getVar('com_modid') == $trackedItems[$j]['modid'] && $comments[$i]->getVar('com_itemid') == $trackedItems[$j]['itemid']) {
$itemMatch = true;
}
}
if (!$itemMatch) {
$block['comments'][] =& $com;
$trackedItems[] = array('modid' => $comments[$i]->getVar('com_modid'), 'itemid' => $comments[$i]->getVar('com_itemid') );
$count++;
}
} else {
$block['comments'][] =& $com;
$trackedItems[] = array('modid' => $comments[$i]->getVar('com_modid'), 'itemid' => $comments[$i]->getVar('com_itemid') );
$count++;
}
unset($com);
}
return $block;
}
Posté le : 26/01/2013 14:49
|
|
|