Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Bonsoir,
La migration avance tout doucement mais surement.
Je recherche un plugin ou un code permettent d'afficher la table des matières du site comme le TOC DC1 (*ttp://franck.paul.free.fr/dotclear/?2007/12/07/1246-plugin-table-des-matieres-121).
j'ai recherché sur le forum sans rien trouvé
Avez-vous une idée?
d'avance merci
A+ JClaude
www.chtipecheur.com sous DC 2
www.wambrechies-peche.com sous DC 2
Hors ligne
Salut,
J'ai contacté Franck Paul à ce sujet cette semaine. Le développement de la v2 de TOC est prévue, mais pour l'instant, il dit << il faut d'abord que je terminev la version suivante du plugin Typo. >>
J'attends TOC 2 avec une indicible impatience.
Hors ligne
le plugin tdm apres quelques manoeuvres de mise au gout de la V2.0 finale fonctionne chez moi
Dotclear c'est comme la lune c'a possède une face cachée alors éclairons là !!!
Hors ligne
Je ne vois pas bien le rapport entre le plugin DLM et TOC
mais depuis le temps que je cherche à adapter ce plugin DLM a DotClear 2
Je serais bien curieuse de savoir comment tu as fait ?
de même que d'autres ;-)) a priori
Merci d'avance !
Hors ligne
Concernant DLM, c'est sur ma todo list mais j'ai le portage de feedburner en premier ;)
Le lab => http://lab.dotclear.org
Besoin d'un plugin? => http://plugins.dotaddict.org
Besoin d'un thème? => http://themes.dotaddict.org
Besoin d'une astuce? => http://tips.dotaddict.org
Hors ligne
Je sais pas pourquoi j'en suis venu à parler de DLM
J'ai du m'embrouiller avec TDM
Mais ok ;-)) Tomtom33 et bon courage alors
Pour revenir à TDM, Moi je ne parviens pas à l'utiliser avec le thème par défault de DC 2 (2.0.1)
J'ai une page Table des Matières sans aucune mise-en-forme !
cette page n'est en fait que
<div id="content"><div id="post"><h2 class="post-title">Table des Matières</h2>...
Hors ligne
au fait, je parle de ce TDM là:
http://hordedesfosses.free.fr/dotclear/ … s-Matieres
Hors ligne
Voilou:
public.php
<?php
# ***** BEGIN LICENSE BLOCK *****
# This file is part of DotClear.
# Copyright (c) 2005 Olivier Meunier and contributors. All rights
# reserved.
#
# DotClear is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# DotClear is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DotClear; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# ***** END LICENSE BLOCK *****
$core->url->register('tdm','tdm','^tdm(/.+)?$',array('tpltdm','loadtdm'));
/*$core->url->register('createtdm','createtdm','^createtdm(/.+)?$',array('tpltdm','createtdm'));*/
$core->tpl->addValue('tdmurl',array('tpltdm','tdmurl'));
class tpltdm extends dcUrlHandlers
{
public static function tdmwidget(&$w)
{
global $core;
if ($w->homeonly && $core->url->type != 'default') {
return;
}
$separateur = "?";
if ($core->blog->settings->url_scan == 'query_string') {
$separateur = "&";
}
$title = $w->title ? html::escapeHTML($w->title) : __('Summary');
$param = array ($w->ordre,$w->linkinpage);
/* $res =
'<div class="tdm">'.
'<h2><a href="'.$core->blog->url.$core->url->getBase("tdm").'?ordre='.$w->ordre.'&display='.$w->linkinpage.'">'.
$title.'</a></h2></div>';*/
$res =
'<div class="tdm">'.
'<h2><a href="'.$core->blog->url.$core->url->getBase("tdm").$separateur.'param='.addslashes(urlencode(serialize($param))).'">'.
$title.'</a></h2></div>';
return $res;
}
public static function tdmurl($ordre) {
global $core;
global $blog;
$separateur = "?";
if ($core->blog->settings->url_scan == 'query_string') {
$separateur = "&";
}
$res = '<h2 class="post-title">Table des matières</h2>';
if (!empty($_GET['param'])) {
$param = $_GET['param'];
$param = unserialize(urldecode(stripslashes($param)));
$ordre = $param[0];
$display = $param[1];
} else {
$ordre = 'alpha';
$display = 1;}
/*
if (!empty($_GET['display'])) {
$display = $_GET['display'];
} else {
$display = 1;}
if (!empty($_GET['ordre'])) {
$ordre = $_GET['ordre'];
} else { $ordre = 'alpha';}
*/
if ($display == 1){
$res .= '<p class="post-info-co">';
if ($ordre == 'alpha'){
$res .= __('alpha').' - ';
$param = array ('chrono',$display);
$res .= '<a href="'.$core->blog->url.$core->url->getBase("tdm").$separateur.'param='.addslashes(urlencode(serialize($param))).'">'.__('chrono').'</a>';
$params['order']='post_title ASC';
$alpha = true;
}
if ($ordre == 'chrono'){
$param = array ('alpha',$display);
$res .= '<a href="'.$core->blog->url.$core->url->getBase("tdm").$separateur.'param='.addslashes(urlencode(serialize($param))).'">'.__('alpha').'</a> - ';
$res .= __('chrono');
$params['order']='post_dt ASC';
$alpha = false;
}
$res .= '</p>';
}
$res .= '<ul>';
if ($ordre != 'category'){
$params['no_content'] = true;
$params['post_type'] = array('post');
$rs = $core->blog->getPosts($params);
$debut = true;
$categories = $core->blog->getCategories();
while ($rs->fetch()) {
$post_dt = $rs->post_dt;
$post_url = $rs->getURL();
$post_title = html::escapeHTML($rs->post_title);
$cat_id = $rs->cat_id;
/* $cat_title = $categories [$cat_id];*/
$cat_title = $categories->cat_title;
$cat_url = $categories->cat_url;
if ($alpha){
$ind = $rs->index ();
$lettre = substr ($post_title,0,1 );
$ind = $ind-1;
$rs->index ($ind);
$lettre1 = substr (html::escapeHTML($rs->post_title),0,1 );
$ind = $ind+1;
$rs->index ($ind);
if (($lettre != $lettre1) OR ($debut)) {
$debut = false;
$res .= '<li class="tdtinitiale">'.$lettre.'</li>';
}
}
/*$res .= $ind.$lettre1.$lettre2; */
$res .= '<li class="tdmcontent"><a href="'.$post_url.'">'.$post_title.'</a>, le '.$rs->getDate('').', '.__('category').' "<a href="category/'.$cat_url.'">'.$cat_title.'"</a></li>';
}
} else { /* tri par catégorie */
$params['no_content'] = true;
$params['post_type'] = array('post');
$rs = $core->blog->getPosts($params);
$categories = $core->blog->getCategories();
while ($categories->fetch()) {
$tdmcat [$categories->cat_id] = html::escapeHTML($categories->cat_title);
}
while ($rs->fetch()) {
$cat_id = $rs->cat_id;
$resultat[] = array(
'post_date'=>$rs->getDate(''),
'post_dt' => $rs->post_dt,
'post_url' => $rs->getURL(),
'post_title' => html::escapeHTML($rs->post_title),
'cat_title' => $tdmcat [''.$cat_id.'']
);
}
foreach ($resultat as $key => $row) {
$cat_title[$key] = $row['cat_title'];
$post_dt[$key] = $row['post_dt'];
$post_url[$key] = $row['post_url'];
$post_title[$key] = $row['post_title'];
$post_date[$key] = $row['post_date'];
}
array_multisort($cat_title, SORT_ASC, $post_title, SORT_ASC,$resultat);
$debut = true;
$cat ='';
reset ($resultat);
while (list($key, $row) = each($resultat)) {
/* foreach ($resultat as $key => $row) {*/
$cat1 = $row['cat_title'];
list($key, $row2) = each($resultat);
/* list($key, $row2) = each($resultat);*/
prev ($resultat);
$cat2 = $row2['cat_title'];
if ($debut)
{
$debut = false;
$res .= '<li class="tdmcatcontent"><B>'.$cat1.'</B></li>';
} else {
if ($cat != '') {
$res .= '<li class="tdmcatcontent"><B>'.$cat.'</B></li>';
$cat ='';
}
if (($cat1 != $cat2) ){
$cat = $cat2;
}
}
$res .= '<li class="tdmcontent"><a href="'.$row['post_url'].'">'.$row['post_title'].'</a>, le '.$row['post_date'].'.</li>';
}
}
$res .= '</ul>';
return $res;
}
public static function createtdm() {
global $core;
global $blog;
/* $core->blog->themes_path*/
$fichierhome = $core->blog->themes_path.'/'.$core->blog->settings->theme.'/tpl/post.html';
$id_fichier = fopen($fichierhome,"r");
$fichiertdm = $core->blog->themes_path.'/'.$core->blog->settings->theme.'/tpl/tdma.html';
$id_fichiertdm = fopen($fichiertdm, "a+");
if(file_exists($fichierhome))
$tableau = file($fichierhome);
$copier = true;
$div = 0;
while ((list($cle,$valeur) = each($tableau))and $copier) {
/* echo "<p>".$valeur."</p>";*/
fputs($id_fichiertdm, $valeur);
if (ereg('<div class="post">', $valeur)) {$copier = false;}
if (ereg('<div', $valeur)) {$div = $div +1;}
if (ereg('</div', $valeur)) {$div = $div -1;}
}
$valeur = "{{tpl:tdmurl}}";
fputs($id_fichiertdm, $valeur);
$copier = true;
while ($copier) {
$valeur = "</div>";
$div = $div -1;
if ($div == 2) {$copier = false;}
fputs($id_fichiertdm, $valeur);
}
$valeur = "
{{tpl:include src='_footer.html'}}
</div> <!-- End #page -->
</body>
</html>";
fputs($id_fichiertdm, $valeur);
fclose($id_fichier);
fclose($id_fichiertdm);
}
public static function loadtdm() {
global $core;
/* $core->tpl->setPath($core->tpl->getPath(), dirname(__FILE__).'/');*/
header('Pragma: no-cache');
header('Cache-Control: no-cache');
/* self::serveDocument('tdm.'.$core->blog->id.'.html','text/html',false);*/
self::serveDocument('tdm.html');
exit;
}
}
?>
Dotclear c'est comme la lune c'a possède une face cachée alors éclairons là !!!
Hors ligne
Merci atropos mais pour moi du moins, ca ne change rien, apparemment
J'ai remplacé le fichier _public.php de /plugins/tdm/ par celui ci-dessus
J'ai cliqué dans l'administration sur le lien TDM pour que le fichier tdm.html soit créé
NB: avec le thème par défaut,
ce fichier est créé dans /themes/default/ et non pas /themes/default/tpl/
J'ai alors déplacé tdm.html dans /themes/default/tpl/
J'ai vidé les répertoires et fichiers dans /cache/ (via FTP, il y a que comme ca, avec free.fr)
PS: J'ai bien mis l'option "tpl_use_cache" à non
Et j'ai une erreur:
Fatal error: Call to a member function getRelatedFilename() on a non-object in /.../cache/cbtpl/ca/05/ca05526443431ba3427d6bb4d0c6f2b7.php on line 10
voilà voilà... où j'en suis
PS: ce que je ne comprends pas c'est que j'ai toujours des dossiers qui se créés dans /cache/
alors que l'option "tpl_use_cache" est à non
Hors ligne
PS: ce que je ne comprends pas c'est que j'ai toujours des dossiers qui se créés dans /cache/
alors que l'option "tpl_use_cache" est à non
Normal, le fichier du cache est recalculé à chaque chargement quant on le désactive ( le cache ! ).
C'est en tout cas ce que j'ai constaté,et c'est pratique quand on fait du dev de plugin.
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Ok, adjaya, j'aurais au moins appris quelque chose ;-)) aujourd'hui
Hors ligne
Si j'ai bien tout suivi la nouvelle version 1.2 de ce plugin "Typo" est maintenant dispo ;-)) alors on pourrait peut-être donc espérer cette fameuse Table des Matières pour la Noel... non ?
En tout cas moi je n'ai jamais réussi à afficher l'autre plugin "TDM" !
Hors ligne
Un plugin TOC serait vraiment le bienvenue. Ce plugin, s'il n'est pas vraiment utile au blog 100%, est indispensable dès lors qu'un nombre importants de catégories et de billets ont été postés. Il s'agit de site à mi-parcours entre le blog et le site de contenu.
J'ai bien écrit un code php qui liste catégorie par catégorie les billets publiés mais je ne parviens pas à créer une page template type toc.html adaptée à DC2.
La seule solution (mais que je n'ai pas encore mis en ligne espérant tjs le plugin officiel) est de créer une page autonome en dehors de DC2, ce n'est pas terrible mais fonctionnel.
Hors ligne
http://ateliers.klafoutis.org/public/pl … 0.5.tar.gz
J'ai bidouillé un truc comme ça (par contre je ne le distribue pas car trop de choses sont "en dur" au lieu d'être propremetn paramétrées). Tu peux piocher :-)
Résultat visible ici http://ateliers.klafoutis.org/minitoc
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
La seule solution (mais que je n'ai pas encore mis en ligne espérant tjs le plugin officiel) est de créer une page autonome en dehors de DC2, ce n'est pas terrible mais fonctionnel.
Finalement, j'ai publié ma toc "maison", visible ici .. Si vous regardé bien l'url, vous vous appercevrez qu'il s'agit d'une page satellite. Je ne trouve pas cela terrible mais ça dépanne.
Hors ligne
Bouhouhou, elle ne te plaît pas ma minitoc ? snif.
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
JClaude a écrit :La seule solution (mais que je n'ai pas encore mis en ligne espérant tjs le plugin officiel) est de créer une page autonome en dehors de DC2, ce n'est pas terrible mais fonctionnel.
Finalement, j'ai publié ma toc "maison", visible ici .. Si vous regardé bien l'url, vous vous appercevrez qu'il s'agit d'une page satellite. Je ne trouve pas cela terrible mais ça dépanne.
J'ai développé un chti plugin de plan de site visible sur mon site.
Il est moins sophistiqué que celui de Kozlika mais semble répondre à ton besoin.
Si ça t'intéresse fais-moi signe ;)
-Fly06
Plugin contextualMenu :
Téléchargement : http://www.ekoris.org/dc2dev/
Discussion : http://forum.dotclear.net/viewtopic.php?id=37206
Démo : http://www.ekoris.org/
Hors ligne
fly06 >>> Est-ce que, on pourrait aussi profiter de ton plugin ?
Kozlika >>> Toi, aussi, tu as fait une Table des Matière ? Je n'ai rien trouvé dans ce forum ou même chez Dotaddict ! J'ai mal cherché ?
Merci
Hors ligne
Jessica, le lien est au message #14. Je ne l'ai pas distribué car il est trop restreint : liste des billets par cagtégorie en ordre ascendant. Je ne sais pas faire en sorte qu'il soit paramétrable, mes connaissances sont trop maigres.
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
arch! autant pour moi, j'avais cherché un peu partout ;-)) alors que c'était sous mon nez
aussitot essayé, ça "marche" bien (avec mon DC 2.1.3 et PostGreSQL)
même si dans mon cas, un classement par ordre alphabétique aurait était plus pertinent
ça permet d'avoir tous les billets d'un seul coup d'oeil et c'est déjà ça... en attendant ;-)) plus
Bref, Merci d'avoir partager... cette "mini" Table des Matières
PS: C'est donc "normal" que la page MiniToc dans le Tabeau de bord, Extensions, soit vide ?
Hors ligne
Vi : c'est normal. J'avais prévu de devenir vachement fortiche et d'y mettre des paramètres d'options ;-)
(quelle optimiste je fais parfois moi ;-))
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
J'ai installé et j'aime bien le résultat. J'ai fait une seule modification pour avoir la liste des billets par ordre inverse sur les dates comme indiqué dans le fichier _public.php.
Hors ligne
Voilà, super. C'est un plugin pour utilisateurs capables d'esprit d'initiative ;-)
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Hé Génial Kozlika pour ce plugin... Merci merci
Par contre, je n'ai pas l'effet "accordéon" chez moi... Il y a untruc à paramétrer qque part ?
Hors ligne
Vous n'êtes pas identifié(e).