====== Astuces pour DotClear ====== ===== Modifier "Lire la suite" ===== Dans le fichier list.php, chercher la ligne et la remplacer par : Le texte que je veux

'); ?>
Si vous souhaitez en profiter pour appliquer un style différent de celui des liens courants, vous pouvez ajouter une classe dans la modification. Par exemple : La suite de l\'article

'); ?>
Vous pourrez ensuite donner des paramètres de style à **.suite a** dans la feuille de style de votre thème. ===== Inverser l'ordre des billets ===== ==== Objet ==== Sur la page d'accueil, présenter les billets du plus ancien (en haut) au plus récent (en bas). ==== Mise en oeuvre ==== Au début de votre fichier template.php, dans la partie "body", ajouter ceci : getLastNews(dc_nb_post_per_page,$cat_id,'post_dt ASC'); $news->setBlog($blog); } ?> Il est possible de façon similaire de modifier l'ordre pour les modes 'cat' et 'month'. ===== Inverser l’ordre des commentaires et trackbacks ===== ==== Objet ==== Lors de l’affichage des billets, afficher les commentaires comme les billets en page d’accueil, du plus récent au plus ancien. ==== Mise en œuvre ==== Dans le fichier post.php, chercher la ligne d’ouverture du traitement des trackbacks isEmpty()) : /* Message si aucun trackback */ ?> et modifier comme ceci getComments($post_id,'DESC'); /* ordre des commentaires et trackbacks */ $trackbacks = $comments->extractTrackbacks(); /* séparer les commentaires des trackbacks */ if ($trackbacks->isEmpty()) : /* Message si aucun trackback */ ?> Pour n’impacter que les commentaires et pas les trackbacks, placer les deux lignes ajoutées ci-dessus avant if ($comments->isEmpty()) : /* Message si aucun commentaire */ au lieu de l’ouverture du traitement des trackbacks. C’est prêt, servez sans attendre ;-) ===== Ouvrir les liens dans une autre fenêtre ===== ==== Objet ==== Faire en sorte que les liens de la section "liens" (oui oui) s'ouvrent dans une nouvelle fenêtre. ==== Mise en oeuvre ==== L'astuce suivante a pour but d'afficher une case que l'utilisateur peut cocher si il souhaite que les liens exterieurs au site soient ouverts dans une autre fenêtre Mettre ce qui suit dans un fichier scripts.js dans le repertoire de son theme : // JavaScript targeters adapted from holovaty.com via padawan.info function linksInNewWindow(a) { var b=a?"site":"_self"; var c=document.links; for(var i=0;i Et mettre dans le fichier template.php : Dans l'entête du fichier, et : A l'endroit où l'on veut placer la boite à cocher ===== Supprimer la mention de l'auteur ===== ==== Objet ==== Sur la liste des billets ou sur l'affichage d'un billet, ne pas faire apparaitre le nom de l'auteur. Utile pour éviter de surcharger l'affichage lorsque l'on est le seul auteur des billets d'un blog. ==== Mise en oeuvre ==== Dans le fichier list.php de votre thème ou du thème default s'il n'existe pas pour votre thème, chercher la ligne :
%s

'); ?>

>
===== Exclure une catégorie de la page d'accueil ===== ==== Objet ==== Faire en sorte que les billets appartenant à la catégorie de son choix n'apparaissent pas en page d'accueil. ==== Mise en oeuvre ==== Donc admettons que j'ai fait des catégories diverses et variés mais que je ne veux que dotclear m'affiche la catégorie Pensebete sur la page d'accueil (vous changerez bien entendu Pensebete par le nom de votre catégorie à éviter, faites gaffe au respect des majuscules) tout d'abord vous devez avoir un home.php voici un tres bon tutoriel sur comment en obtenir un : http://petit.dotclear.net/pages/2004/12/02/27-creer-une-page-daccueil-differente maintenant que vous avez un fichier home.php editez le et remplacez le par ça : SQL (" AND C.cat_libelle_url <> 'Pensebete' ", 'post_dt DESC', dc_nb_post_per_page); $news = $blog->con->select($request,'xblogpost'); $news->setBlog($blog); while ($news->fetch()) : ?>
%s

'); ?>

>
===== Ouverture d'un lien dans une nouvelle fenêtre (en javascript) ===== Votre Lien Même résultat qu'un lien target="_blank" mais en gardant une compatibilité XHTML 1.0 Strict. ===== N'afficher que les billets de la langue par défaut à l'accueil ===== Afin de n'afficher que la langue par défaut à l'affichage initial du blog il suffit de remplacer dans le fichier prepend.php de votre theme ou du theme par defaut à la ligne 35 : $lang = (!empty($_GET['l'])) ? $_GET['l'] : NULL; par $lang = (!empty($_GET['l'])) ? $_GET['l'] : dc_default_lang; ===== Enlever les "Aucun commentaire" ou "Aucun trackback" affichés sous chaque billet ===== La première chose à faire est de désactiver commentaires et/ou trackbacks dans les outils de l'interface d'admin en cliquant sur Configuration de DoctClear?. Il vous suffit de changer la valeur proposée dans "Permettre les commentaires" et/ou "Permettre les trackbacks". Ensuite s'attaquer au code... Quelques fichiers sont à modifier : post.php, list.php et si le fichier est créé, home.php qui reprend les mêmes modifications que list.php. ==== post.php ==== si l'on veut enlever les trackbacks

Trackbacks

isEmpty()) : /* Message si aucune trackback */?>

Aucun trackback.

fetch()) : /* Liste des trackbacks */ // On met le numéro du trackback dans une variable $tb_num = $trackbacks->int_index+1; ?>

. Le à , de

Pour faire un trackback sur ce billet :

Les trackbacks pour ce billet sont fermés.

si l'on veut enlever les commentaires :

Commentaires

isEmpty()) : /* Message si aucune commentaire */ ?>

Aucun commentaire pour le moment.

fetch()) : /* Boucle de commentaires */ // On met le numéro du commentaire dans une variable $co_num = $comments->int_index+1; ?>

. Le à , par

Ajouter un commentaire

Les commentaires pour ce billet sont fermés.

==== list.php ==== si l'on veut enlever les trackbacks :: si l'on veut enlever les commentaires : ===== Remplacer des titres en images ===== Suite à une recherche sur le web et une demande auprès d'Alex, je vous propose de découvrir les étapes à suivre pour mettre en place le remplacement des titres en images. Je tiens à rappeler que cela fut mis en place et intégré avec intelligence au sein du thème Tutti Frutti. 1. Placer dans le fichier prepend.php dans le répertoire du thème utilisé ou, s'il n'est pas présent dans celui-ci, dans le répertoire du thème default, juste avant la balise ?>, les 2 fonctions suivantes : function myWordWrap($txt,$font,$size,$width) { // Définition du nombre de ligne de l'image $nbre_ligne = 1; /* word-wrapper. gets bounding box sizes for each word in a string, then strings words together up to desired width. calls strpos and imagettfbbox only once per word - so very fast. this version reconcatenates the words with a
character where the line break should be. */ $txt.=" "; // guaranteed to find end of line $spaces=array(); $wids=array(); $i=0; while(true) { $j=strpos(substr($txt,$i)," "); if(!($j===false)) { $spaces[]=$j+$i; @ $bbox=imagettfbbox($size,0,$font,substr($txt,$i,$j+1)); $left=($bbox[0]>$bbox[6])?$bbox[6]:$bbox[0]; $right=($bbox[2]>$bbox[4])?$bbox[2]:$bbox[4]; $wids[]=$right-$left; $i=$j+$i+1; } else break; } $lastspace=-1; $cum=0; $t2=""; for($i=0;$i0)&&($cum+$wids[$i])>$width)) // time for a line break { $t2.="\n"; $nbre_ligne++; $cum=0; $i--; } else { // we'll always get at least one word (even if too wide) thanks to // ($cum>0) test above $t2.=substr($txt,$lastspace+1,$spaces[$i]-$lastspace); $cum+=$wids[$i]; $lastspace=$spaces[$i]; } } $image_created = array("$t2","$nbre_ligne"); return $image_created; } function create_title($titre,$couleur_texte,$couleur_fond,$taille_texte,$chemin_police) { // echo "Chemin police : $chemin_police"; //Définition de la largeur maximum de l'image générée $width_max = 500; //Définition du nom de l'image en fonction du titre et des attributs passés dans la fonction //$titre_affiche = strtoupper($titre); $titre_affiche = $titre; $nom_image = md5($titre.$chemin_police.$taille_texte.$couleur_fond.$couleur_texte); $chemin_repertoire = $_SERVER['DOCUMENT_ROOT']."/".substr($GLOBALS['img_path'],1)."titres"; if(!file_exists($chemin_repertoire)) { @ mkdir($chemin_repertoire,0777) or die("Impossible de créer le répertoire d'image titre '$chemin_repertoire'"); } $chemin_image = $chemin_repertoire."/".$nom_image.".png"; if(!file_exists($chemin_image)) { // Test de la taille de l'image et définition du nombre de ligne $tableau = myWordWrap($titre_affiche,$chemin_police,$taille_texte,$width_max); $titre_image = $tableau[0]; $nbre_ligne = $tableau[1]; // Calcul de la taille de l'image @ $taille_image = imagettfbbox($taille_texte,0,$chemin_police,"$titre_image"); $taille_image_largeur = (abs($taille_image[0])+abs($taille_image[2])+5); if($taille_image_largeur > $width_max) $taille_image_largeur = $width_max; $taille_image_hauteur = (abs($taille_image[6])+abs($taille_image[7])+2) * $nbre_ligne; // Création du cadre d'image $img = imagecreate($taille_image_largeur,$taille_image_hauteur); // Définition de la couleur du texte $couleur_texte = hexdec(str_replace('#','',$couleur_texte)); $couleur_texte = imagecolorallocate($img,($couleur_texte & 0xFF0000) >> 16,($couleur_texte & 0x00FF00) >> 8,($couleur_texte & 0x0000FF)); // Définition de la couleur du fond $couleur_fond = hexdec(str_replace('#','',$couleur_fond)); $couleur_fond = imagecolorallocate($img,($couleur_fond & 0xFF0000) >> 16,($couleur_fond & 0x00FF00) >> 8,($couleur_fond & 0x0000FF)); // Remplissage du fond de l'image avec la couleur définie avant imagefill($img,0,0,$couleur_fond); // Ajout du texte, affichage ligne par ligne si le texte compporte plus d'une ligne if($nbre_ligne > 1) { $titre_image = explode("\n",$titre_image); $i = 0; while($i != $nbre_ligne) { imagettftext($img,$taille_texte,0,0,$taille_texte + (20*$i),$couleur_texte,$chemin_police,$titre_image[$i]); $i++; } } else { @ imagettftext($img,$taille_texte,0,0,$taille_texte,$couleur_texte,$chemin_police,"$titre_image"); } // Création de l'image et écriture sur le serveur @imagepng($img,$chemin_image) or die ("Impossible d'écrire dans le répertoire d'images..."); imagedestroy($img); } $chemin_image = $GLOBALS['img_path']."titres/".$nom_image.".png"; if(file_exists($_SERVER['DOCUMENT_ROOT'].$chemin_image)) { $taille_image = getimagesize($_SERVER['DOCUMENT_ROOT'].$chemin_image); $taille_image_largeur = $taille_image[0]; $taille_image_hauteur = $taille_image[1]; echo "$titre\"$titre\""; //width:".$taille_image_largeur."px;height:".$taille_image_hauteur."px;\" />"; } else { echo $titre; } }
2. Choisir la police (exemple : ta_police.ttf) et la copier dans le répertoire du thème utilisé. 3. Dans le fichier list.php du thème utilisé ou dans celui du thème default, remplacer la ligne 31 (normalement) : href=""> Par : href="">f('post_titre'),"#ccccccc","#FFFFFF","12",$_SERVER['DOCUMENT_ROOT'].$GLOBALS['theme_uri'].$GLOBALS['__theme']."/ta_police.ttf");?> 4. Dans le fichier post.php du thème utilisé ou dans celui de default, remplacer ligne 25 (normalement) :

Par :

f('post_titre'),"#cccccc","#FFFFFF","12",$_SERVER['DOCUMENT_ROOT'].$GLOBALS['theme_uri'].$GLOBALS['__theme']."/ta_police.ttf"); ?>

5. Utiliser le code ci-dessous pour appeler une image à la place d'un titre dans ton template.php Avec comme valeurs dans les exemples ci-dessus #cccccc la couleur du texte, #FFFFFF la couleur de fond, 12 la taille du texte, et ensuite le chemin de la police de caractères (nommé ta_police.ttf ci-dessus). 6. Admirer le travail ! ===== Thème multilingue ===== Le {{1.2:contribute:dc1-defaulttheme-multilingual.tar.gz|thème multilingue}} est une adaptation du thème par défaut de la version 1.2 : identique, à ceci près qu'il utilise le mécanisme interne de DotClear pour la localisation. Il ne contient que deux langues, l'anglais et le français, mais il est possible d'en ajouter. Le thème s'adaptera alors à la langue définie dans la configuration de DotClear. Pour l'utiliser, il faut remplacer le thème default/ par celui-ci, de cette façon, tous les thèmes ne contenant que des feuilles de style pourront immédiatement en profiter. Le fichier prepend.php contient une ligne qui, si elle est décommentée, permet au thème de s'adapter à la langue demandée par le visiteur (depuis le menu des langues présent si vous avez écrit des articles dans plusieurs langues.) On constate aisément que ce template est beaucoup plus lourd à gérer pour qui voudrait le modifier, ce qui explique que malgré la présence du mécanisme de localisation dans Dotclear 1.2, le thème fourni avec l'application reste localisé dans une seule langue. ===== Créer des sous-catégories ===== Code à copier et mettre dans le prepend.php de votre thème. /** @Function dcLeveledMenu Cette fonction affiche la liste des catégories, ordonnées par leur description. La liste générée est une liste non ordonnée (