Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 Re : [dc2] Questions et aide » Billet invisible » 2016-09-26 07:28:01

Il est publié, mais en blanc sur blanc.... Une sélection par la souris le fait apparaître.

#2 Re : [dc2] Questions et aide » Jeu de template dotty ? » 2016-08-25 09:47:34

Philippe a écrit :
Welsh a écrit :

Manque juste la fermeture de <?php

Je ne crois pas : si le fichier ne contient que du php, il est même recommandé de ne pas fermer le tag

Ah ? Dans ma petite tête le fichier démarrait par <?php et se terminait par ?>
Mais tu as sans doute raison...

#3 Re : [dc2] Questions et aide » Jeu de template dotty ? » 2016-08-25 09:30:13

Super Philippe. Merci.
Maintenant, yapuka...

Manque juste la fermeture de <?php

#4 Re : [dc2] Questions et aide » Jeu de template dotty ? » 2016-08-25 08:49:57

Philippe a écrit :

Dotty est un jeu de template, et ne comprend pas de feuille de style. Du coup il n'y a pas grand chose à voir, à part dans le code source des pages où les balises sont du html5.

Pas grave qu'il n'y ait rien à voir. C'est même ce que je cherche pour ensuite bâtir le visuel en CSS. En gros partir de rien.

Philippe a écrit :

Tu peux créer un thème très basique, contenant seulement un fichier define.php qui fait référence à dotty comme jeu de template, mais il n'aura aucune mise en forme. En revanche, il devrait être possible de copier Berlin et de le faire hériter de dotty au lieu de currywurst...

C'est exactement ce que je veux faire, mais je dois être encore embrumé ou en vacances car je n'ai pas retrouvé la page de doc qui indique comment faire ce thème minimal et le contenu du define.php.
Je veux bien un coup de main sur ce point.
Merci d'avance

#5 Re : [dc2] Questions et aide » Jeu de template dotty ? » 2016-08-24 17:06:50

Si je comprends bien, un nouveau template (dotty) existe en 2.10 avec du HTML5 (full HTML5 ?).
Mais il n'y a pas encore de thème bâti dessus.

Si j'ai encore tout compris, les templates fournissent le comportement (et donc ce qu'il faut afficher) quand le thème ne le fait pas.

Si tel est le cas, est-il possible de voir sont blog Dotclear avec comme "thème" le rendu dotty ? Ce qui en soit permettrait d'avoir un début de documentation pour construire un thème.

Je ne suis peut-être pas très clair....

#8 Re : [dc2] Questions et aide » [tpl:Entries] Mauvaise gestion de l'attricbut no_category ? » 2016-06-23 15:34:21

Exact.
Mais dans ma logique, si no_category=0, on devrait avoir tous les billets ayant une catégorie.
Autrement dit
si no_category=1, on filtre sur cat_id à null
si no_category=0, on filtre sur cat_id différent de null.
Or tel qu'écrit, si no_category=0, on ne filtre rien.

#9 [dc2] Questions et aide » [tpl:Entries] Mauvaise gestion de l'attricbut no_category ? » 2016-06-21 13:17:51

Welsh
Réponses : 6

Bonjour

Dans le cadre de l'utilisation du thème Noviny2, les billets sans catégories arrivent dans la partie "Dernières nouvelles".
cf http://histoire.gallois.info

Pour ne pas retrouver ces billets dans le reste de la page, je fais une boucle avec tpl:Entries et no_category="0", sous-entendu ayant une catégorie.
Or cela ne fonctionne pas (on retrouve le billet du 21/05/2016).

Je prends donc mon courage et fouille et voit que dans class.dc.template.php en ligne 1143 (cf https://searchcode.com/codesearch/view/64164122/)
on a :

if (isset($attr['no_category']) && $attr['no_category']) {
			$p .= "@\$params['sql'] .= ' AND P.cat_id IS NULL ';\n";
			$p .= "unset(\$params['cat_url']);\n";
		}

Si je lis bien, on ne traite l'attribut no_category que dans le cas où il est positionné à 1. Mais pas s'il est positionné à 0.

J'ai tout compris ?

Welsh

#10 Re : [dc2] Plugins » [plugin mrvbCustomWidgets] support et discussion » 2016-05-20 06:39:39

@ adjaya : je te crois sans problème, je n'ai pas mis ta tenue de spéléologue pour aller dans les entrailles du code, comme toi. Mon propos était plus sur la "beauté" de l'algorithme. Sur le fond (performance de la récursivité), je partage ton avis.

@ Philippe : ce serait effectivement une bonne idée, mais là je crois que je vais atteindre mes limites en php...

#11 Re : [dc2] Plugins » [plugin mrvbCustomWidgets] support et discussion » 2016-05-20 06:10:19

Je pense que cela devrait continuer à fonctionner. Il ne s'agit "que" d'un problème de logique. La difficulté pourrait venir de modifications sur la fonction getCategories().

Sinon, sur le problème des sous-catégories, je pense qu'une autre approche consiste à utiliser getCategories() en récursif.
On part de getCategories avec un level=>0, on a les racines.
On boucle et pour chaque on part en récursif, en ajoutant les filtres (exclusion, ...).
Un parcours d'arbre classique.

#12 Re : [dc2] Plugins » [plugin mrvbCustomWidgets] support et discussion » 2016-05-19 20:46:26

Bon pas très propre car le cas où max_level vaut 0 ou n'est pas renseigné n'est pas géré.
Mais le principe est là.

#13 Re : [dc2] Plugins » [plugin mrvbCustomWidgets] support et discussion » 2016-05-19 20:35:50

Je l'ai !

Dans le fetch, après la condition d'exclusion sur l'identifiant, j'ai jouté le test sur le niveau et j'ai enlevé le test par rapport à max_level plus loin.

A tester bien sûr !

Evidemment ce n'est pas très propre, il peut y avoir plus élégant. Si cela tente quelqu'un...

Le code est désormais :

        public static function mrvb_SubCategories($w)
        {
                global $core, $_ctx;
                if ($w->offline) {
                        return;
                }
                if (($w->homeonly == 1 && $core->url->type != 'default') ||
                        ($w->homeonly == 2 && $core->url->type == 'default')) {
                        return;
                }
                $rs = $core->blog->getCategories();
                if ($rs->isEmpty()) {
                        return;
                }
                $exclude = mrvb_ListToArray($w->excludeID);
                $res = ($w->content_only ? '' : '<div class="categories mrvbsubcategories'.($w->CSSclass ? ' '.html::escapeHTML($w->CSSclass) : '').'">');
                if (version_compare(DC_VERSION,'2.7','>=')) {
                        $res .= ($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : '');
                } else {
                        $res .= ($w->title ? '<h2>'.html::escapeHTML(__($w->title)).'</h2>' : '');
                }
                $max_level = abs((integer) $w->maxlevel);
                $ref_level = $level = $rs->level-1;
                $cat_level = 0;
                while ($rs->fetch()) {
                        if (!(in_array($rs->cat_id, $exclude))){
                        if ($rs->level <= $max_level ) {
                                ($w->countsubcat ? $postcount = $rs->nb_total : $postcount = $rs->nb_post);
                                $class = ' class="cat'.$rs->cat_id;
                                if (($core->url->type == 'category' && $_ctx->categories instanceof record && $_ctx->categories->cat_id == $rs->cat_id)
                                || ($core->url->type == 'post' && $_ctx->posts instanceof record && $_ctx->posts->cat_id == $rs->cat_id)) {
                                        $class .= ' category-current';
                                }
                                $class .= '"';
                                if ($rs->level > $level) {
                                        $cat_level += 1;
                                        $res .= str_repeat('<ul><li'.$class.'>',$rs->level - $level);
                                } elseif ($rs->level < $level) {
                                        $cat_level -= 1;
                                        $res .= str_repeat('</li></ul>',-($rs->level - $level));
                                }
                                // if (($max_level == 0) || ($cat_level < $max_level + 1)){
                                        if ($rs->level <= $level) {
                                                $res .= '</li><li'.$class.'>';
                                        }
                                        $res .= '<a href="'.$core->blog->url.$core->url->getBase('category').'/'.$rs->cat_url.'"';
                                        if ($w->showcount == 'showballoon'){
                                                $res .= ' title="'.$postcount.'"';
                                        }
                                        $res .= '>'.html::escapeHTML(__($rs->cat_title)).'</a>';
                                        if ($w->showcount == 'showafter'){
                                                $res .= ' ('.$postcount.')';
                                        }
                                // }
                                $level = $rs->level;
                        }
                        }
                }
                  if ($ref_level - $level < 0) {
                        $res .= str_repeat('</li></ul>',-($ref_level - $level));
                }
                $res .= ($w->content_only ? '' : '</div>');
                return $res;
        }

#14 Re : [dc2] Plugins » [plugin mrvbCustomWidgets] support et discussion » 2016-05-19 20:24:15

Tout à fait !

J'ai testé en direct-live.
Dans _public.php, j'ai enlevé le test avec max_level.
D'autre part, j'ai remplacé l'appel à getCategories() par

$rs = $core->blog->getCategories(array('level'=>2));

Ca marche pô ! Ca me donne un niveau, le second.

Edit : normal, quand on lit la doc

categories level to retrieve

. Ca veut bien dire récupérer les catégories du niveau qu'on donne et pas la profondeur des catégories. Donc uniquement le niveau 2 (dans mon cas) et pas du niveau 1 au niveau 2.

Il faudrait peut être dans ce cas là :
- faire un getCategories sans filtre
- boucler sur le resultset pour enlever celle de niveau ne convenant pas
- traiter sans la condition sur le maxlevel.

#15 Re : [dc2] Plugins » [plugin mrvbCustomWidgets] support et discussion » 2016-05-19 19:20:33

Si je comprends bien, on pourrait garder le code de Mirovinbien en :
- testant si le paramètre de niveau est renseigné pour le passer  à getCategories
- ne se préoccupant plus de savoir dans le traitement du resultset si le niveau de l'enregistrement traité correspond ou pas.

C'est ça ?

#16 Re : [dc2] Plugins » [plugin mrvbCustomWidgets] support et discussion » 2016-05-18 19:39:29

adjaya a écrit :
Welsh a écrit :

On voit qu'il y a (a priori) un appel de trop en récursivité.
Je creuse...

petite précision: le principe de construction de l'arbre hiérarchique des catégories n'est justement pas récursif !

Certes, mais la constitution des niveaus de sous-catégories demandé peut l'être dans la construction de l'algorithme :
- récupération des catégories de 1er niveau
- pour chacune, appel de la même fonction
- on boucle pour avoir le nombre de niveau demandé.

Après il faut arriver aux raffinements mis en place par Mirovinbien : exclusion d'une catégorie...

Il me semble (première lecture) que l'algorithme mis en place par Mirovinbien consiste à tout récupérer et faire le tri.

J'avoue que je n'ai pas regardé les API Dotclear dans le détail, mais je pense que la fonction pour récupérer les sous-catégories d'une catégorie existe.

Comme je l'ai dit, ce sont mes premières impressions. Il faut que je creuse...

#17 Re : [dc2] Plugins » [plugin mrvbCustomWidgets] support et discussion » 2016-05-18 15:58:22

J'ai pour le moment changé le niveau max (passé de 1 à 2) et on obtient le résultat en ligne (http://histoire.gallois.info).
On voit qu'il y a (a priori) un appel de trop en récursivité.
Je creuse...

#18 Re : [dc2] Plugins » [plugin mrvbCustomWidgets] support et discussion » 2016-05-18 15:55:34

Je vais essayer de prendre un peu de temps pour regarder le code pour d'abord le comprendre :-) et voir ce qui peut être fait (si j'y arrive, je ne préjuge pas de tes capacités :-) )

#19 Re : [dc2] Plugins » [plugin mrvbCustomWidgets] support et discussion » 2016-05-18 15:03:38

Sauf que le li en trop porte le numéro de la catégorie.... Ce qui me fait dire qu'il y a une "erreur" sur la boucle.
Ta CSS ne permet que de masquer ceci.

#20 Re : [dc2] Plugins » [plugin mrvbCustomWidgets] support et discussion » 2016-05-18 11:04:42

Bonjour

Version installée à partir de la console d'administration.
Je pense qu'il reste un bug (classique) sur la gestion des boucles.
Tu peux voir ici http://histoire.gallois.info/? la différence dans le bandeau de droite :
- Classement old : widget liste des catégories
- Classement : widget  mrvbSousCategories avec 2 comme paramètre maximal de niveaux.

Welsh

#21 Re : [dc2] Questions et aide » billet privé, que je n'ai pas choisi? » 2015-12-20 17:29:07

Bonsoir

Vu le second message, on pourrait imaginer que le billet publié (en public) soit affecté à une catégorie privée et de ce fait devienne privé.
Simple hypothèse absolument pas vérifiée.

#22 Re : [dc2] Plugins » Image à la une » 2015-10-14 10:49:56

C'est gentil. Et j'avais compris la "non-obligation". Sois rassuré :-)
Je vais essayer de regarder pendant mes jours de congés.

#23 Re : [dc2] Plugins » Image à la une » 2015-10-12 15:29:49

Ouhlà ! Dans mon job, je passe mon temps à faire reformuler le besoin...pas à le réaliser.
Je peux essayer de regarder, mais vu mon agenda cela va prendre du temps...
Soyez indulgents et pas trop pressés. Merci :-)

#24 Re : [dc2] Plugins » Image à la une » 2015-10-11 15:42:57

Je vois bien l'idée : ajouter une fonctionnalité permettant d'utiliser une image comme illustration d'un post. C'est bien cela ?

Dans ce cas, on peut imaginer une fonction permettant de la sélectionner soit à partir de la médiathèque, soit à partir d'une URL.

Sur les options, hormis la taille, je mettrais éventuellement un titre ou sous-titre ou légende.

#25 Re : [dc2] Plugins » Pictures Show » 2015-09-23 20:54:37

Bonsoir

A priori mon interrogation n'a pas suscité les foules...
Je vais retrousser les manches et aller dans le cambouis...

Je tiens au courant si je trouve.

Welsh

Vous n'êtes pas identifié(e).

Pied de page des forums

Propulsé par FluxBB

Sites map