Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Bon, j'ai testé un peu les CSS sur dotclear 2, pour voir comment ça fonctionnait, et finalement, le plus dur semble être de déterminer à quoi se rattachent les id, class et autres balises. Je progresse, c'est déjà ça... et puis j'évite de faire trop compliqué pour le moment.
:)
Par contre, plusieurs écueils me sont apparus, tous liés à l'affichage dynamique, puisque je ne sais pas quel(s) fichier(s) toucher, ni de quelle manière, pour arriver à mes fins. Grâce aux réponses que j'avais eu sur le DC1.2.5, j'ai pensé pouvoir me débrouiller, mais c'est trop différent. Je souhaiterai remplacer le texte d'une série de liens par des icônes :
- celui de "commentaires", par "img/ico_com.gif"
- celui de "trackbacks", par "img/ico_tb.gif"
- celui de "lire la suite", par "img/ico_lire.gif" (avec une info-bulle "title" indiquant le nom de l'article)
Et finalement, les icônes qui doivent se placer devant toutes les catégories que j'ai crée. Pour ces icônes, je reprend le nom URL de la catégorie auquel j'ajoute le préfixe "ico_", et le suffixe ".gif", j'ai donc :
- "ico_En-slip.gif" pour la catégorie "En slip !"
- "ico_General.gif" pour la catégorie "Général"
- "ico_Humeurs.gif" pour la catégorie "Humeurs"
- "ico_Informatique.gif" pour la catégorie "Informatique"
- "ico_Jeux-de-roles.gif" pour la catégorie "Jeux de rôles"
Vous pouvez avoir un aperçu des icônes au sein de ce dossier. Comme l'affichage doit s'effectuer dynamiquement, à la volée, il faut sûrement intégrer la source de l'image dans une ou plusieurs fonctions, mais où se trouvent-t-elles ? comment puis-je les modifier ? et où est le "prepend.php" ?
Merci de bien vouloir éclairer ma lanterne.
(Oops - 4:25 - j'ai déjà trop traîné, au lit !)
Hors ligne
Bon, pour le "où", kozlika m'avait déjà dit (j'ai eu un flash a cette heure avancée) que les fonctions se plaçaient dans un fichier "_public.php" du thème. Oui, mais bon... où sont les fonctions originales à trafiquer, et surtout *comment* les trifouiller pour obtenir le résultat que je désire ?
(bon, allez, ce coup-ci, dodo...)
:)
Hors ligne
Bonjour Nawak.
A quoi se rattachent les id et les class : http://dissitou.klafoutis.org/tag/radiographies
Pour le remplacement du mot "commentaire" ou trackback par une image, il faut que tu remplaces la fonction actuelle qui injecte à la fois le nombre et le mot par une fonction qui n'appelle que le nombre. J'ai créé une telle fonction dans mon plugin moreTpl : http://jetheme.klafoutis.org/post/2007/ … Dotclear-2
Pour les images devant les noms des catégories, sois plus précis : dans le menu, dans l'entête d'une catéogorie, dans les informations du billet ?
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Merci Kozlika,
Je vais visiter les liens aprés avoir répond à ta dernière question, à savoir :
Pour les images devant les noms des catégories, sois plus précis : dans le menu, dans l'entête d'une catéogorie, dans les informations du billet ?
Comme un petit dessin vaut mieux qu'un long discours, je me fais un montage rapide de ce que je souhaiterai au niveau du placement des diverses icônes, ce sera plus clair.
I- Les diverses icônes de catégories dans le menu (à reporter éventuellement dans les billets, je ne sais pas encore).
II- L'icône à la place de "lire la suite", même lien, le "title" (info-bulle) indiquant le titre de l'article.
III- le remplacement des liens "commentaires" et "trackbacks" par 2 visuels appropriés.
Voilà. Pour quelqu'un qui connaît bien le code et la manière dont fonctionne DC2, ça doit être de la roupie de sansonnet, mais je suis un peu "light" actuellement dans le domaine.
:-)
Hors ligne
Bouh ! snif ! On m'a oublié !
;)
Bon, je sais bien qu'avec les diverses questions / réponses, on peut perdre le fil d'une discussion, alors je remonte histoire d'avoir ma réponse.
Merci, et bonne soirée !
Hors ligne
Deux jours (et dans le week-end encore), tu es prompt à te sentir oublié :op
I Il y avait dans dc1 un plugin catimage, mais je ne sais pas s’il a été porté (ou un outil équivalent) dans dc2.
II Voir dans home.html, category.html : tu remplaces {{tpl:lang Continue reading}} par <img src=tonimage.jpg alt="{{tpl:lang Continue reading}}" />
III Mêmes fichiers, remplacer de la même façon {{tpl:EntryCommentCount}} et {{tpl:EntryTrackbackCount}}
et ça devrait faire la blague ;-)
RTFM attitude : https://fr.dotclear.org/documentation/2.0
Le chantier tips, tutos et astuces : http://tips.dotaddict.org/
Rien nulle part??? une petite recherche sul’ forum, alors?: https://forum.dotclear.org/search.php ?
Hors ligne
Deux jours (et dans le week-end encore), tu es prompt à te sentir oublié :op
Yep.
La perception du temps est variable d'un individu à l'autre. Pour moi, 2 jours, c'est déjà énorme, mais il est vrai que pour d'autre, cela ne représente "que" 24 heures. Ceci étant dit, je suis plus exigeant envers moi-même qu'avec les autres, et si je n'ai pas ma réponse rapidement, je ne vais pas en faire un fromage (c'est moi le demandeur, et c'est déjà bien gentil de m'aider). Mais comme Kozlika m'avait demandé un complément d'information, et qu'elle est trés présente sur les forums, je me suis dit que j'aurais ma réponse rapidement... mais voyant le sujet s'enfoncer dans les limbes de l'oubli(*), j'ai préféré agir. Quelqu'un peu me dire pourquoi je me sens obligé de me justifier ? (lol)
(*) en fait, elle m'avait oublié, la dernière fois... alors je me suis dit que ça lui arrivait peut-être souvent... alzeihmer précoce, tout ça...
;-)
Pour être franc, je pense qu'on s'habitue au luxe des réponses rapides (et pertinentes qui plus est) sur ce forum. Alors je commence à me sentir chez moi, les pantoufles aux pieds, me servant un petit whisky dans le bar, m'affalant dans le canapé moëlleux... on s'y fait, à cette débauche de petits soins... manque plus qu'un petit massage, et ce serait nickel (patapé svp).
:-)
Bref, toujours est-il que... non, catImage n'existe pas à ma connaissance pour DC2.
Pour les 2 dernières réponses, je pense avoir saisi la manière de procéder (à condition que les "{{tpl:xxx}}" renvoient les valeurs adéquates), mais je me pencherai sur le problème demain. Là, il est tant de me reposer, en espérant que les douleurs lancinantes de ma récente entorse me laissent en paix... et puis, l'assassin royal de Robin Hobb me tend ses agréables petites pages d'un air suppliant...
;-)
Merci, il ne me restera plus qu'à voir comment me débrouiller pour les icônes de catégorie dans le menu.
Hors ligne
Pour les catégories, dans un premier temps, tu peux toujours les définir « en dur » dans un widget texte avec les images, puisque les widgets textes interprètent le html ;-)
RTFM attitude : https://fr.dotclear.org/documentation/2.0
Le chantier tips, tutos et astuces : http://tips.dotaddict.org/
Rien nulle part??? une petite recherche sul’ forum, alors?: https://forum.dotclear.org/search.php ?
Hors ligne
Fait à la va vite, mais permet d'avoir un <li class="'.$rs->cat_url.'">
Ca tombe bien pour toi, j'en avais besoin !
<?php
$this->registerModule(
/* Name */ "My CategoriesList widget",
/* Description*/ "CategoriesList",
/* Author */ "Adjaya",
/* Version */ '1.0',
/* Permissions */ 'admin'
);
?>
<?php
$core->addBehavior('initWidgets',array('myCategoriesListBehaviors','initWidgets'));
class myCategoriesListBehaviors
{
public static function initWidgets(&$w)
{
$w->create('CategoriesListWidget',__('My CategoriesList widget'),
array('publicCategoriesListWidget','myCategoriesList'));
$w->CategoriesListWidget->setting('title',__('Title:'),
'default value','Categories');
}
}
?>
<?php
class publicCategoriesListWidget
{
public static function myCategoriesList(&$w)
{
global $core;
$rs = $core->blog->getCategories();
if ($rs->isEmpty()) {
return;
}
$res =
'<div class="categories">'.
($w->title ? '<h2>'.html::escapeHTML($w->title).'</h2>' : '').
'<ul>';
while ($rs->fetch()) {
$res .=
'<li class="'.$rs->cat_url.'"><a href="'.$core->blog->url.$core->url->getBase('category').'/'.
$rs->cat_url.'">'.
html::escapeHTML($rs->cat_title).'</a>'.'</li>';
}
$res .= '</ul></div>';
return $res;
}
}
?>
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
J'oubliais, dans l'ordre :
_define.php
_admin.php
_public.php
A mettre dans un dossier dans le répertoire des plugins
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Bon, il était tard, une boulette dans le _public.php pour l'affichage du titre du widget.
Le fichier correct est :
<?php
$core->addBehavior('initWidgets',array('myCategoriesListBehaviors','initWidgets'));
class myCategoriesListBehaviors
{
public static function initWidgets(&$w)
{
$w->create('CategoriesListWidget',__('My CategoriesList widget'),
array('publicCategoriesListWidget','myCategoriesList'));
$w->CategoriesListWidget->setting('title',__('Title:'),'Categories');
}
}
?>
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
hè m....., je voulais dire _admin.php :(
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Bon, je vais faire comme pour les OS de Redmond : je vais attendre le SP1 pour être sûr de mon coup !
;-P
Plus sérieusement, merci de publier ce code, que je n'imaginais pas si touffu pour un simple changement d'icônes (ok, à base de widget, certes). Je vais commencer les modifications à partir de maintenant (un petit café d'abord), je vais aussi m'occuper du CSS, et si j'ai le temps, j'irai voir le code du player MP3, pour voir s'il est possible de lire un flux en ligne. J'ai déjà ajouté un peu de Javascript pour précharger les images importantes dans le cache du navigateur avant affichage.
:-)
Hors ligne
Je résume, pour ceux qui seraient éventuellement intéressés. A chaque fois, les changements s'effectuent dans "home.html" et "category.html", bien que je ne comprenne pas bien l'utilité de ce dernier... je vais aller voir dans DCtips tout à l'heure.
Pour changer "lire la suite" par une icône :
remplacer :
<p class="read-it">
<a href="{{tpl:EntryURL}}" title="{{tpl:lang Continue reading}} {{tpl:EntryTitle encode_html="1"}}">{{tpl:lang Continue reading}}</a>...
</p>
par :
<p class="read-it">
<a href="{{tpl:EntryURL}}" title="{{tpl:lang Continue reading}} {{tpl:EntryTitle encode_html="1"}}">
<img src="{{tpl:BlogThemeURL}}/img/ico_xxx.ext" alt="{{tpl:lang Continue reading}}"/></a>
</p>
Pour changer "commentaires" et "trackbacks" par des icônes :
/!\ ajouter moretpl, made by Kozlika.
remplacer :
<p class="post-info-co">
<tpl:EntryIf show_comments="1">
<a href="{{tpl:EntryURL}}#comments" class="comment_count">{{tpl:EntryCommentCount}}</a>
</tpl:EntryIf>
<tpl:EntryIf show_pings="1">
<a href="{{tpl:EntryURL}}#pings" class="ping_count">{{tpl:EntryTrackbackCount}}</a></tpl:EntryIf>
<tpl:EntryIf has_attachment="1">
<a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
</p>
par :
<p class="post-info-co">
<tpl:EntryIf show_comments="1">{{tpl:EntryCommentCountDigit}}
<a href="{{tpl:EntryURL}}#comments" class="comment_count">
<img src="{{tpl:BlogThemeURL}}/img/ico_xxx.gif" alt="Commentaire(s)" title="{{tpl:EntryCommentCount}}"/>
</a>
</tpl:EntryIf>
<span> | </span>
<tpl:EntryIf show_pings="1">{{tpl:EntryTrackbackCountDigit}}
<a href="{{tpl:EntryURL}}#pings" class="ping_count">
<img src="{{tpl:BlogThemeURL}}/img/ico_xxx.gif" alt="Rétrolien(s)" title="{{tpl:EntryTrackbackCount}}"/>
</a>
</tpl:EntryIf>
<tpl:EntryIf has_attachment="1">
<a href="{{tpl:EntryURL}}#attachments" class="attach_count">{{tpl:EntryAttachmentCount}}</a></tpl:EntryIf>
</p>
Bon, pour en revenir aux "tpl", il est clair qu'une fois réalisées, c'est beaucoup plus lisible et simple à employer que le PhP. Le tout est d'en avoir un paquet sous le coude et de savoir à quoi elles correspondent, avec éventuellement des exemples (vive les "digits" de moreTpl). Je vais ré-organiser un peu le boxon que j'ai mis avant de passer à la suite.
Hors ligne
Ok, je n'avais pas saisi ta manière de penser, adjaya. En fait, pour charger les icônes, tu colles une classe afin de l'exploiter ensuite par le biais d'un fichier CSS, comme dans cet exemple pour une catégorie qui s'appelerait "Général" (nom URL "General") :
.General {
background: url("img/ico_General.gif") no-repeat;
padding-left: 20px;
}
J'ai testé, effectivement, ça marche au poil. Mais je pensais trafiquer directement la fonction pour y coller le nécessaire afin de ne rien avoir à ajouter dans le fichier CSS. Alors, même si je n'y connais rien en PhP, j'ai décortiqué la fonction utile, et j'ai refait cette portion par approximation (avec mes bases dans d'autres langages scriptés) - fichier "_public.php" - :
while ($rs->fetch()) {
$way = '<li><img src="http://intomybox.free.fr/dc/themes/intomybox/img/ico_';
$ext = '.gif"/>';
$ico = $way.$rs->cat_url.$ext;
$res .= $ico.' <a href="'.$core->blog->url.$core->url->getBase('category').'/'.
$rs->cat_url.'">'.html::escapeHTML($rs->cat_title).'</a>'.($w->postcount ? ' ('.$rs->nb_post.')' : '').
'</li>';
}
C'est une autre manière de procéder, et les 2 fonctionnent. Seulement, je n'en suis pas content pour 2 raisons :
1- la fonction n'est pas générique, puisque j'ai hard-codé le chemin du répertoire contenant les images.
2- pareil pour l'extension : du "*.gif" ; ce serait sympa de pouvoir utiliser autre chose.
En gros, il faudrait donner le choix du paramétrage par l'utilisateur à travers le widget (un paramètre "chemin" et un autre "extension" à passer à la fonction, par exemple), mais je n'ai pas assez de connaissances pour pouvoir le faire en PhP. Est-ce facilement réalisable ? quelqu'un serait intéressé pour réaliser ça ?
:)
Au pire, j'utiliserai ça en l'état, mais ça embête ma conscience. Ce n'est pas "propre", et non ré-utilisable (le comble pour une fonction).
;)
Hors ligne
Pour la 1, tu peux l'obtenir avec
$core->blog->themes_path.'/'.
$core->blog->settings->theme.'/img/ico_';
Restera le souci du rep d'image qui devra impérativement être nommé img
Pour les extensions d'image, je crois que j'ai déjà vu passer la possibilité de plusieurs extensions dans un plugin (mais lequel, that is the question...)
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Pour les extensions tu peux peut-être utiliser l'ajout de l'option :
$w->MyWidget->setting('option',__('Options:'),
null,'combo',array('opt1' => 1, 'opt2' => 2, ...,'optn' => n));
J'ai trouver ca dans la doc sur les widgets, à décortiquer donc
Il pourrait y avoir une option par extension par exemple.
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Ce qui donne dans _admin.php pour avoir le choix de l'extension et un champ pour le chemin :
<?php
$core->addBehavior('initWidgets',array('myCategoriesListBehaviors','initWidgets'));
class myCategoriesListBehaviors
{
public static function initWidgets(&$w)
{
$w->create('CategoriesListWidget',__('My CategoriesList widget'),
array('publicCategoriesListWidget','myCategoriesList'));
$w->CategoriesListWidget->setting('title',__('Title:'),'Categories','text');
$w->CategoriesListWidget->setting('option',__('Options:'),
null,'combo',array('.jpg' => 1, '.png' => 2, '.gif' => 3));
$w->CategoriesListWidget->setting('path',__('Path:'),'url','text');
}
}
?>
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Salut,
Kozlika, peux-tu me préciser quelles valeurs sont récupérées par tes 2 lignes, m'expliquer ce qu'elles retournent ? à priori, la première donne le chemin du thème courant, alors pourquoi ne pas faire directement :
$core->blog->themes_path.'/'.'/img/ico_';
adjaya, en partant de ton exemple "_admin.php", je suppose qu'on doit récupèrer ensuite dans "_public.php" les variables :
- "$path" pour le chemin menant au répertoire d'images
- "$option" pour le choix (1,2,3) concernant l'extension
J'espère que c'est comme ça que cela fonctionne. Dans cette hypothèse, le chemin ne devrait pas poser de problème, suffit que je remplace "$way" par "$path", mais pour la variable "$option", comment réalise-t-on un "switch... case..." en PhP ?
exemple en ActionScript :
switch (option){
case 1:
ext = ".jpg";
breakcase 2:
ext = ".png";
breakcase 3:
ext = ".gif";
breakdefault
break
}
Ainsi, en fonction du choix fait en "$option", je donne l'extension approprié. J'espère comprendre le raisonnement, parce que le PhP me pose de sérieux problèmes de lecture, avec ses notations bizarres : ", ', ->, /, etc.
:)
Hors ligne
$core->blog->themes_path
chemin vers le répertoire des themes.
ex. http://dissitou.klafoutis.org/themes
$core->blog->settings->theme
répertoire du thème actif
ex. atelier
$core->blog->themes_path.'/'.
$core->blog->settings->theme.'/img/ico_';
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
Ok, merci.
Mais cela n'a pas l'air de fonctionner comme ça le devrait.
Hard-codé, ça focntionne :
$path = '<li><img src="http://intomybox.free.fr/dc/themes/intomybox/img/ico_';
En remplaçant par les variables, non :
$path = '<li><img src="'.$core->blog->themes_path.'/'.$core->blog->settings->theme.'/img/ico_';
:'(
Hors ligne
Note : pour voir ce que la valeur renvoyait, je l'ai mis dans le "alt" de l'image (y'a pas un "trace", avec le PhP ?), et j'obtiens comme chemin :
/mnt/150/sdb/b/2/intomybox/dc/themes/intomybox
Soit un point de montage unix...
;)
Hors ligne
euh pardon
$core->blog->settings->themes_url.'/'.
$core->blog->settings->theme.'/img/ico_';
La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?
Hors ligne
adjaya, en partant de ton exemple "_admin.php", je suppose qu'on doit récupèrer ensuite dans "_public.php" les variables :
- "$path" pour le chemin menant au répertoire d'images
- "$option" pour le choix (1,2,3) concernant l'extensionJ'espère que c'est comme ça que cela fonctionne. Dans cette hypothèse, le chemin ne devrait pas poser de problème, suffit que je remplace "$way" par "$path", mais pour la variable "$option", comment réalise-t-on un "switch... case..." en PhP ?
C'est plutôt :
$way = $w->patch;
$ext = $w->option;
Pour éviter le swich case :
$w->CategoriesListWidget->setting('option',__('Options:'),
null,'combo',array('.jpg' => '.jpg', '.png' => '.png', '.gif' =>'.gif'));
comme ca tu récupère directement l'extension choisie.
Cela fonctionne si tes icônes respectent ce choix et sont toutes ou en gif, ou en jpg, ou en png.
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Héhé...
Je suis content de te voir dans l'erreur au moins une fois, c'est rassurant.
:P
Ces quelques lignes fonctionnent :
$path = '<li><img src="'.$core->blog->settings->themes_url.'/'.$core->blog->settings->theme.'/img/ico_';
$ext = '.gif"/>';
$ico = $path.$rs->cat_url.$ext;
Du coup, je vais maintenant tâtonner du côté de l'option "adjaya".
;)
Merci.
Hors ligne
Vous n'êtes pas identifié(e).