Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Pages : 1
C'est possible en copiant le code suivant dans le fichier _public.php de ton thème :
#Bricoland code for category and posts templates according to cat_id $core->url->register('category','category','^category/(.+)$',array('myURLHandlers','category')); $core->url->register('post','post','^post/(.+)$',array('myURLHandlers','post')); $core->url->register('preview','preview','^preview/(.+)$',array('myURLHandlers','preview')); class myURLHandlers extends dcUrlHandlers { public static function category($args) { $_ctx =& $GLOBALS['_ctx']; $core =& $GLOBALS['core']; $n = self::getPageNumber($args); if ($args == '' && !$n) { self::p404(); } $params['cat_url'] = $args; $params['post_type'] = 'post'; $_ctx->categories = $core->blog->getCategories($params); if ($_ctx->categories->isEmpty()) { self::p404(); } else { if ($n) { $GLOBALS['_page_number'] = $n; } $tpl = 'category-'.$_ctx->categories->cat_id.'.html'; if (!$core->tpl->getFilePath($tpl)) { $tpl = 'category.html'; } self::serveDocument($tpl); exit; } } public static function post($args) { if ($args == '') { self::p404(); } $_ctx =& $GLOBALS['_ctx']; $core =& $GLOBALS['core']; $core->blog->withoutPassword(false); $params = new ArrayObject(); $params['post_url'] = $args; $_ctx->posts = $core->blog->getPosts($params); $_ctx->comment_preview = new ArrayObject(); $_ctx->comment_preview['content'] = ''; $_ctx->comment_preview['rawcontent'] = ''; $_ctx->comment_preview['name'] = ''; $_ctx->comment_preview['mail'] = ''; $_ctx->comment_preview['site'] = ''; $_ctx->comment_preview['preview'] = false; $_ctx->comment_preview['remember'] = false; $core->blog->withoutPassword(true); if ($_ctx->posts->isEmpty()) { # No entry self::p404(); } $post_id = $_ctx->posts->post_id; $post_password = $_ctx->posts->post_password; # Password protected entry if ($post_password != '') { # Get passwords cookie if (isset($_COOKIE['dc_passwd'])) { $pwd_cookie = unserialize($_COOKIE['dc_passwd']); } else { $pwd_cookie = array(); } # Check for match if ((!empty($_POST['password']) && $_POST['password'] == $post_password) || (isset($pwd_cookie[$post_id]) && $pwd_cookie[$post_id] == $post_password)) { $pwd_cookie[$post_id] = $post_password; setcookie('dc_passwd',serialize($pwd_cookie),0,'/'); } else { self::serveDocument('password-form.html','text/html',false); exit; } } $post_comment = isset($_POST['c_name']) && isset($_POST['c_mail']) && isset($_POST['c_site']) && isset($_POST['c_content']) && $_ctx->posts->commentsActive(); # Posting a comment if ($post_comment) { # Spam trap if (!empty($_POST['f_mail'])) { http::head(412,'Precondition Failed'); header('Content-Type: text/plain'); echo "So Long, and Thanks For All the Fish"; exit; } $name = $_POST['c_name']; $mail = $_POST['c_mail']; $site = $_POST['c_site']; $content = $_POST['c_content']; $preview = !empty($_POST['preview']); if ($content != '') { if ($core->blog->settings->wiki_comments) { $core->initWikiComment(); } else { $core->initWikiSimpleComment(); } $content = $core->wikiTransform($content); $content = $core->HTMLfilter($content); } $_ctx->comment_preview['content'] = $content; $_ctx->comment_preview['rawcontent'] = $_POST['c_content']; $_ctx->comment_preview['name'] = $name; $_ctx->comment_preview['mail'] = $mail; $_ctx->comment_preview['site'] = $site; if ($preview) { $_ctx->comment_preview['preview'] = true; } else { # Post the comment $cur = $core->con->openCursor($core->prefix.'comment'); $cur->comment_author = $name; $cur->comment_site = html::clean($site); $cur->comment_email = html::clean($mail); $cur->comment_content = $content; $cur->post_id = $_ctx->posts->post_id; $cur->comment_status = $core->blog->settings->comments_pub ? 1 : -1; $cur->comment_ip = http::realIP(); $redir = $_ctx->posts->getURL(); $redir .= strpos($redir,'?') !== false ? '&' : '?'; try { if (!text::isEmail($cur->comment_email)) { throw new Exception(__('You must provide a valid email address.')); } # --BEHAVIOR-- publicBeforeCommentCreate $core->callBehavior('publicBeforeCommentCreate',$cur); if ($cur->post_id) { $comment_id = $core->blog->addComment($cur); # --BEHAVIOR-- publicAfterCommentCreate $core->callBehavior('publicAfterCommentCreate',$cur,$comment_id); } if ($cur->comment_status == 1) { $redir_arg = 'pub=1'; } else { $redir_arg = 'pub=0'; } header('Location: '.$redir.$redir_arg); exit; } catch (Exception $e) { $_ctx->form_error = $e->getMessage(); $_ctx->form_error; } } } # The entry $tpl = 'post.html'; if ($_ctx->posts->cat_id) { $alt_tpl = 'post-cat-'.strtolower($_ctx->posts->cat_id).'.html'; if ($core->tpl->getFilePath($alt_tpl)) { $tpl = $alt_tpl; } } self::serveDocument($tpl); exit; } public static function preview($args) { $core = $GLOBALS['core']; if (!preg_match('#^(.+?)/([0-9a-z]{40})/(.+?)$#',$args,$m)) { self::p404(); } $user_id = $m[1]; $user_key = $m[2]; $post_url = $m[3]; if (!$core->auth->checkUser($user_id,null,$user_key)) { self::p404(); } self::post($post_url); exit; } }
Ensuite, il faut copier le fichier category.html et le nommer category-x.html où x est l'identifiant de la catégorie. Ça marche aussi pour post-x.html.
Dans ces fichiers, tu peux traiter ensuite la catégorie (ou le billet appartenant à la catégorie) comme tu le souhaites
Testé et approuvé.
Merci !
C'est génial ça ! Je vais essayer.
Merci :-)
Bonjour,
Est-il possible de définir des affichages différents pour les pages de catégories : par exemple, une catégorie sera affichée sous forme de tableau, une autre avec les résumés sur 2 colonnes, une autre, avec les billets complets, et les autres avec le Template par défaut.
Il y a bien la balise tpl:CategoryIf mais on ne peut mettre qu'une seule url ; avec des {{tpl:else}} imbriqués mais ça peut vite devenir illisible.
Dominique.
Je sais bien que je devrais arrêter de me prendre la tête mais c'est parce que j'aime bien Drupal aussi (et les deux ne jouent pas dans la même cour).
Je sais aussi que la vérité d'un jour n'est pas celle du lendemain, etc. :-)
Mais voilà, un petit besoin d'être rassuré ...
Bonsoir,
Je n'arrête pas de tourner autour de dotclear : je m'éloigner puis je reviens, j'aime puis je me dis que c'est pas ce que je veux ...
J'ai travaillé avec et j'utilise régulièrement drupal (et maintenant backdropcms). Et du coup je trouve que dotclear n'est pas aussi puissant. Mais je le trouve vraiment agréable à utiliser.
Et puis je sais que je ne pourrai sans doute jamais l'utiliser au boulot.
Comme vous le voyez je me pose bcp de questions là où il ne faut pas sans doute :-)
Je crois que je suis inquiet sur la pérennité du projet (je sais qu'il a qq années derrière lui). Je crois que l'équipe de dev est petite ( 1 seule personne ?).
Est-ce qu'il existe des stats sur l'utilisation de dotclear dans le vrai monde ?
Je pense que si je me lance réellement je ferai en sorte de participer plus activement à la communauté.
Et puis c'est un projet français et dans le monde du web c'est bien !
Voilà. Un peu décousu et sans doute inutile mais ...
Bonne soirée.
Dominique.
J'ai réinstallé dotclear puis le module et maintenant, cela semble bien fonctionner ?
Je crois que la seule vraie différence est que la première fois la base de données était sqlite.
Bon en tout cas, ça semble bien se passer.
Merci pour votre aide.
Bonjour,
Merci pour vos réponses (matinales :-) ).
C'est vrai que je n'ai pas donné toutes les infos :
- dernière version de Wamp (2.5)
- PHP 5.5.12
- dotclear 2.8
- le thème par défaut
- jquery : 1.4.2 ou 1.11.3 = même combat
Ce qui est bizarre aussi, c'est que dans l'admin sur la page d'édition du billet, le marker apparait bien.
J'espère que l'un de vous va m'aiguiller du bon côté pour résoudre ce soucis parce que je trouve ce plugin super pratique et j'aime bien son fonctionnement.
Dominique.
Bonjour,
Avec la dernière version de dotclear et du plugin, à chaque fois que j'ajoute un marker sur un élément de carte, j'ai un gros et vilain message d'erreur sur mon billet
( ! ) Notice: Undefined offset: 1 in C:\wamp\www\dotclear\plugins\myGmaps\_public.php on line 222
Call Stack
# Time Memory Function Location
1 0.0005 247240 {main}( ) ..\index.php:0
2 0.0013 299264 require( 'C:\wamp\www\dotclear\inc\public\prepend.php' ) ..\index.php:22
3 1.5180 7590040 dcUrlHandlers->getDocument( ) ..\prepend.php:156
4 1.5182 7595032 urlHandler->callHandler( ) ..\lib.urlhandlers.php:187
5 1.5182 7595080 call_user_func:{C:\wamp\www\dotclear\inc\libs\clearbricks\url.handler\class.url.handler.php:166} ( ) ..\class.url.handler.php:166
6 1.5190 7596672 dcUrlHandlers::post( ) ..\class.url.handler.php:166
....
Dans la console de debug, j'ai : SyntaxError: expected expression, got ','
quand je regarde le script concerné (depuis la console) :
marker = new google.maps.Marker({
icon : "",
position: new google.maps.LatLng(,),
title: title_3,
map: map_1
});
le marker ne semble pas être géolocalisé ?
Si je ne mets pas de marker, la carte s'affiche.
Je suis en local avec Wamp.
Dominique.
Bon, je vais regarder tout ça durant ce mois de Mai (un peu de temps libre avec les ponts).
J'espère que je vais arriver à faire ce que je veux parce que même si j'adore travailler sur Drupal, j'aimerais bien participer à un projet sympa et dotclear me semble pas mal :-)
Et même si dans le titre de la discussion, je parle de polémique, je suis surtout plein d'interrogations et d'envie de "savoir" ...
Encore merci pour vos retours. Je ferai le mien une fois le tour du propriétaire fait. Et si je me sens bien ici, je pense que je travaillerai surtout autour des thèmes.
Merci pour vos retours.
Quand je parlais sécurité, je ne voulais énerver personne ; je crois que j'ai vu ça en cherchant sur internet. Et c'est d'ailleurs pour ça que j'ai posé la question.
Un moteur de blog, c'est bien ; c'est même très bien d'ailleurs.
Pour les mises à jours, même si je suis complètement d'accord sur le fait qu'il vaut mieux de la qualité que de la quantité, il est important de montrer que les choses avancent (le dernier message date de janvier).
Ce que je pense déceler de mon premier regard sur dotclear et de vos réponses, c'est que dotclear fait des blogs mais que je ne pourrai pas faire une application Web avec : RSE (avec gestion des groupes utilisateurs, droits complexes en lecture/ecriture dans ces groupes, forum, wiki, ...), gestion (simplifiée) du personnel (gestion des congés avec workflow par exemple), GED, ...
Mais je pourrai faire des blogs et des sites de présentation.
Le mieux c'est que je plonge dans dotclear et que j'essaye un peu mieux.
Mais encore merci pour vos retours.
Dominique.
Bonsoir,
J'utilise Drupal depuis maintenant 6 ans et je suis en pleine crise de la quarantaine et je veux étudier la possibilité de mettre en avant les produits français face aux grosses cylindrées étrangères.
J'ai donc plusieurs petites questions sur Dotclear :
- je pense que Dotclear ne peut pas lutter contre Drupal sur l'étendu des possibilités et la création d'applications web complexes (comme un Réseau Social d'Entreprise). Est-ce que je me trompe complètement ?
- En terme de mise à jour, où en est dotclear ? Je crois savoir que l'équipe est petite et du coup il n'est pas trop possible d'avancer vite ?
- Je crois qu'à une époque dotclear avait une mauvaise réputation en terme de sécurité ? Justifiée ? Où en est-on ?
- Est-ce qu'il est possible de faire (avec un plugin ? ) un formulaire pour faire des quizz (ou autre dans le genre) ?
- Je ne suis pas un développeur pur. Comment aider ?
- Est-ce qu'il peut exister un écosystème dotclear dans le milieu professionnel ?
J'aurais beaucoup de questions à poser mais ... beaucoup trop et pas très intéressantes.
Par avance merci pour votre aide.
Dominique.
Pages : 1
Vous n'êtes pas identifié(e).