The Wayback Machine - https://web.archive.org/all/20070202233913/http://www.dotclear.net:80/planet/

DotClear

vendredi 26 janvier 2007

DotClear 2 ubique sur un Mac

Un petit billet mémo pour mes besoins futurs à propos du fichier de configuration nécessaire sur une installation locale de DotClear 2 sur un Mac.

Le premier fichier config.php concerne un DotClear 2 tournant avec MAMP et une base de donnée MySQL nommée dc2 (le serveur MySQL est intégré à l'application MAMP). DotClear est installé dans un répertoire dc2 à la racine du serveur Apache. J'utilise l'utilisateur root ce qui n'a pas beaucoup d'importance sur une installation tournant localement. Notez aussi que le dossier tmp est créé dans le répertoire de DotClear et pas à la racine, ça me permet de tout virer d'un seul coup si nécessaire :

// Database driver (mysql, pgsql, sqlite)
define('DC_DBDRIVER','mysql');

// Database hostname (usually "localhost")
define('DC_DBHOST','localhost:8889');

// Database user
define('DC_DBUSER','root');

// Database password
define('DC_DBPASSWORD','root');

// Database name
define('DC_DBNAME','dc2');

// Tables' prefix
define('DC_DBPREFIX','dc_');

// Crypt key (password storage)
define('DC_MASTER_KEY','Abracadabra');
 
// Admin URL. You need to set it for some features.
define('DC_ADMIN_URL','http://localhost:8888/dc2/admin/');

// Cookie's name
define('DC_SESSION_NAME','dcxd_my');

// Plugins root
define('DC_PLUGINS_ROOT',dirname(__FILE__).'/../plugins');

// Template cache directory
define('DC_TPL_CACHE','tmp');

Le deuxième fichier config.php concerne une deuxième installation DotClear 2 tournant cette fois ci avec une base de donnée PostgreSQL nommée dotclear (le serveur Apache est toujours celui qui est intégré à MAMP). DotClear est installé dans un répertoire dc2pg à la racine du serveur Apache. J'utilise l'utilisateur postgres créé au moment de l'installation du serveur (voir ce billet pour plus d'informations). Notez aussi que le dossier tmp est créé dans le répertoire de DotClear et pas à la racine, ça me permet de tout virer d'un seul coup si nécessaire :

// Database driver (mysql, pgsql, sqlite)
define('DC_DBDRIVER','pgsql');

// Database hostname (usually "localhost")
define('DC_DBHOST','localhost:5432');

// Database user
define('DC_DBUSER','postgres');

// Database password
define('DC_DBPASSWORD','');

// Database name
define('DC_DBNAME','dotclear');

// Tables' prefix
define('DC_DBPREFIX','dc_');

// Crypt key (password storage)
define('DC_MASTER_KEY','Abracadabra');


// Admin URL. You need to set it for some features.
define('DC_ADMIN_URL','http://localhost:8888/dc2pg/admin/');

// Cookie's name
define('DC_SESSION_NAME','dcxd_pg');

// Plugins root
define('DC_PLUGINS_ROOT',dirname(__FILE__).'/../plugins');

// Template cache directory
define('DC_TPL_CACHE','tmp');

Une dernière petite chose que vous avez peut-être remarquée. J'ai donné un nom différent au cookie de session pour chacune des deux installations, respectivement dcxd_my et dcxd_pg, ce qui me permet d'avoir simultanément une session d'administration ouverte dans chaque installation.

Billet original sur Carnet :: Franck Paul

lundi 22 janvier 2007

Avis aux (hypothétiques) retardataires

Je doute qu'ils soient nombreux, mais on ne sait jamais. Alors ...

Si vous êtes un fidèle de longue date de ce blog, que vous êtes abonnés aux flux RSS ou Atom depuis plus d'un an, avez-vous mis à jour les URLs vers ceux-ci ?

Jusqu'à aujourd'hui, j'ai tâché de rediriger de manière transparente les anciens liens callmepep.org/dotclear/rss.php et callmepep/dotclear/atom.php.
Mais voilà : je m'apprête à faire sauter tout cela ...

Je vous invite donc à changer vos liens de souscription en :

Merci d'avance ;-)

Billet original sur just call me pep - dotclear

samedi 20 janvier 2007

Vieilles peaux (aka "Q10 for the masses")

La dcTeam prend encore quelques rides.
Les gamins le sont un peu moins : après biou, c'est au tour de ZeuBeuBeu d'incrémenter sa variable $age.

Les registres de condoléances respectifs sont ici et .

Bon anniversaire, les copains. :-)

Billet original sur just call me pep - dotclear

samedi 13 janvier 2007

Migration

Un premier constat sur une première tentative de migration, juste pour voir, d'un blog DotClear 1 vers un blog DotClear 2. Et bien c'est pas de tout repos. Surtout lorsqu'il y a 850 billets, 8500 commentaires, 1200 images. Tout ça avec des temps d'exécution des scripts PHP normalement limités à 30 secondes[1].

J'ai du installer une version locale de DotClear 2 sur mon Mac, à l'aide de l'application MAMP, pour arriver à faire un premier import. Il va falloir que je trouve un moyen de faire tourner une base PostgreSQL sur mon Mac, afin de refaire l'import dirtectement dessus vu que la destination finale utilisera également le même moteur de base de données.

J'espère que le futur plugin Galerie me permettra de générer les prévisualisations des photos en 400 pixels de largeur, telles que je les utilise aujourd'hui, car DotClear ne propose que 500 pixels et c'est trop pour le layout actuel de mon thème[2].

Pour résumer, les étapes minimales identifiées à ce jour sont :

  • fermeture des commentaires et trackbacks ici, puis export complet après un petit nettoyage de rigueur (spams, log, …)
  • importation locale sur un DotClear utilisant une base de données PostgreSQL
  • suppression de la base MySQL chez Free pour la remplacer par une base PostgreSQL[3]
  • installation de DotClear 2 et importation
  • croisage de doigts intensifs et inscription aux abonnés absents pour les réclamations !

Pour peaufiner il faudra ensuite :

  • s'occuper des redirections pour conserver un accès aux anciennes URL des billets
  • se refaire un thème à partir du thème Connections utilisé ici
  • ajuster la page d'aide en fonction du nouveau moteur
  • installer les pages connexes de contact et d'informations légales
  • trouver un moyen de lister proprement les différents plugins et thèmes proposés ici
  • faire une table des matières (éventuellement en portant le plugin idoine sous DotClear 2)

C'est pas gagné !

Notes

[1] Pour info, l'import à nécessité un timeout au moins égal à 120 secondes et la reconstruction du répertoire média prend au moins 5 minutes, je n'ai pas pu aller au terme jusqu'à maintenant !

[2] la taille inférieure, 240 pixels, est je trouve beaucoup trop petite pour être utilisée en lieu et place.

[3] J'hésite encore à utiliser le deuxième espace que j'ai chez Free et qui possède déjà une base de données PostgreSQL. Celui-ci est à l'adresse http://open.time.free.fr/dotclear/ et je préfèrerai conserver http://franck.paul.free.fr/dotclear/ comme actuellement (notez que de toute façon je conserverai la mention dotclear dans l'URL).

Billet original sur Carnet :: Franck Paul

jeudi 11 janvier 2007

Et de 5 !

Sortie d'une inattendue version Beta 5 de Dotclear 2.

De toute manière, quand on aime, on ne compte pas :-)

Billet original sur just call me pep - dotclear

mardi 9 janvier 2007

Ma confiance numérique

Je ne vous ai pas dit — et visiblement personne ne s'en est plaint jusqu'à ce jour — que j'ai réglé le plugin SpamClear sur mode de confiance: suppression automatique des spams (non recommandé si SpamClear n'est pas bien entraîné)[1]. Tous les commentaires et trackbacks, dès qu'ils sont reconnus comme étant du spam sont supprimés sans recours aucun. C'est très reposant pour ma souris et c'est effectif depuis la fin de l'année dernière.

Si jamais un de vos commentaires n'apparaissait pas dès l'envoi, faites-moi un signe via le formulaire de contact ou par tout autre moyen de votre convenance. Je me demande même s'il faut que je laisse Spamplemousse actif chez moi !

Notes

[1] Le mien a l'air de l'être plutôt bien, au delà même des seuils recommandés par icelui.

Billet original sur Carnet :: Franck Paul

mardi 2 janvier 2007

Le Standblog propulsé par Dotclear 2

Le Standblog est probablement le blog le plus fréquenté à être propulsé par Dotclear.

Ca nous donnera au passage l'occasion de voir comment se comporte Dotclear 2 dans le cas d'un site à très fort trafic, hébergé sur un simple mutualisé (le très honorable service de l'APINC).

Il y a également une petite émotion particulière qui accompagne cette migration : c'est avant tout par la lecture du Standblog que j'en suis venu à utiliser Dotclear, pour finalement participer au projet.

Alors, je profite de l'occasion pour remercier Tristan. Sans lui, je serais peut-être passé à côté de l'aventure Dotclear et je n'aurais sans doute pas fait la connaissance de cette attachante bande de névrosés recrutés par Olivier.

Euh... A bien y regarder...
Je ne suis pas très sûr du cadeau... ;-)

Billet original sur just call me pep - dotclear

lundi 1 janvier 2007

Quelques vérités

De même :

il est évident que ce jeu de composants PHP n'est pas un framework ...

Vous pourrez également en déduire que ce billet n'est pas un troll ;-)

Billet original sur just call me pep - dotclear

vendredi 22 décembre 2006

Plâtre et ciment

A partir de la semaine prochaine[1], je vais sortir les pelles et truelles[2] et m'attaquer à la refonte de ce blog.

Il est temps de refaire la façade, qui a quasiment été reprise à l'identique lors de la migration vers Dotclear 2, et d'en profiter pour réorganiser également les contenus.

A vrai dire, ce blog, tel qu'il est actuellement constitué, cédera sans doute la place à un duo (ou plus si affinités ...) : un blog blah blah[3] et un blog dédié aux articles et bricolages 100% Dotclear 1.2.x et Dotclear 2.

Il faudra donc vous attendre à :

  • de belles réponses 404 et/ou 410 sur certaines URLs,
  • de sordides erreurs PHP de temps à autre,
  • une apparence étrange,
  • toutes sortes de mauvaises surprises ...

Ah oui. Je ne l'ai pas encore précisé, mais je compte travailler en direct-live sur le serveur. Ca risque donc de brasser un peu ...

D'ailleurs, la première étape sera de mettre le présent blog à poil. Grosso merdo, un CSS Naked Day revival.

A l'heure où le quidam de base rabâche au sujet du web 2.0, où certains agités de la cafetière se masturbent le neurone et parlent de web 2.1 / web 3.0, j'opte pour la remise à la mode du web 0.1 alpha.

Total vintage, non ? :-)

Notes

[1] Voire même ce week end...

[2] Oué, oué... les pioches également... ;-)

[3] Ce sera probablement lui qui reprendra l'URL et le nom courants.

Billet original sur just call me pep - dotclear

lundi 18 décembre 2006

Thème Freshy - Image d'entête aléatoire

Le thème Freshy est livré avec 14 images (voir ce billet pour la liste exhaustive). Voyons comment mettre en place l'affichage aléatoire de l'une d'entre elle. J'avais déjà exposé deux méthodes utilisables avec le thème Travelogue, je vais ici reprendre la deuxième et l'intégrer au thème Freshy.

Première étape, création des 14 feuilles de styles pour chacune des 14 images disponibles. Pour ça, rien de bien compliqué car il suffit dans chacune d'elle de mettre le code suivant, en changeant bien sûr le numéro de l'image :

#title_image {
   margin:0;
   text-align:left;
   display:block;
   height:95px;
   background:url(images/headers/header_image1.jpg)
    center center transparent repeat-y;
}

Vous trouverez en annexe de ce billet une archive contenant les 14 feuilles de style. Pas la peine de refaire le travail. Décompressez l'archive et placez toutes les feuilles de style dans le répertoire principal du thème (/themes/freshy/).

Deuxième étape, suppression du style correspondant dans la feuille de style du thème (style.css). Il faut éditer le fichier et supprimer ou mettre en commentaire les lignes 57 à 62. Elles contiennent ceci une fois mises en commentaire :

/* #title_image {
   margin:0;
   text-align:left;
   display:block;
   height:95px;
   background:url(images/headers/header_image6.jpg)
    center center transparent repeat-y;
} */

Troisième et dernière étape, appel aléatoire d'une des feuilles de style. Il faut éditer le fichier template.php du thème pour y rajouter la ligne suivante :

<link rel="stylesheet" type="text/css" href="http://franck.paul.free.fr/dotclear/<?php dcInfo('theme'); ?>/image<?php echo(rand(1,14)); ?>.css" media="screen" />

Copiez cette ligne et insérez là juste après la ligne 49 du fichier (dans la section <head>).

Voilà maintenant le thème muni d'un affichage aléatoire de l'image d'entête. Notez que si le cache est activé sur votre blog, cela peut empêcher l'affichage d'une nouvelle image. Il faudra alors vider le cache avant de recharger la page (ou forcer le raffraichissement) pour déclencher le mécanisme.

Billet original sur Carnet :: Franck Paul

samedi 16 décembre 2006

Les entêtes du thèmes Freshy

Le thème Freshy comporte un bandeau muni d'une image en haut de la page. Cette image peut facilement être changée par une de celles qui sont livrées avec le thème ou bien encore par une que vous aurez préparée. Ces images doivent avoir une taille de 780 pixels de large et de 95 pixels de haut.

Pour définir l'image utilisée, vous devez modifier le fichier style.css livré avec le thème. À la ligne 62 vous trouvez ceci :

background:url(images/headers/header_image6.jpg)
 center center transparent repeat-y;

Remplacez le numéro (6 dans ce cas) par un autre (1 à 14) pour utiliser l'image correspondante, et enregistrez le fichier.

Voilà la liste des images livrées, le numéro qui précède l'image est celui qu'il faut utiliser :

Si vous souhaitez utiliser une autre image, vous pouvez la rajouter dans le répertoire images/headers/ du thème et spécifier alors son nom en lieu et place de l'originale.

Billet original sur Carnet :: Franck Paul

mercredi 13 décembre 2006

Mettre en place le nuage de tag dans le thème Connections

Une question posée par email me conduit à écrire ce petit billet à propos de la mise en place du nuage de mots-clés (tags) présent dans la colonne de droite du thème Connections.

Tout d'abord le code nécessaire à l'affichage du nuage :

<div id="twtags-cloud">
<h2>Mots-cl&eacute;s</h2>
<?php twTags::tagCloud(); ?>
</div>

Compliqué n'est-ce pas ? Et encore sur les quatre lignes, une seule sert réellement à afficher le nuage (la troisième), le reste n'est là que pour créer le cadre et mettre en place son titre.

La fonction twTags::tagCloud() va générer une liste non numérotée classique (<ul><li>…</li></ul>), ce qui est tout à fait conforme d'un point de vue sémantique car parler de nuage de mots-clés revient à dire liste des mots-clés, nuage n'est utilisé que par référence à son aspect, ce qu'on va voir maintenant. Il suffit d'appliquer quelques styles particuliers pour obtenir cet affichage sous forme de nuage :

#twtags-cloud ul {
   list-style-type: none;
}

#twtags-cloud li {
   display: inline;
}

Le premier style permet de supprimer les puces normalement affichées devant chaque élément de la liste. Le deuxième évite de passer à la ligne pour chaque nouvel élément. Ils seront donc listés les uns à la suite des autres.

Pour finir, voyons les styles nécessaires pour obtenir une taille proportionnelle à la fréquence d'utilisation des mots-clés :

.level-1 {
   font-size: 0.9em;
}

.level-2 {
   font-size: 1.1em;
}

.level-3 {
   font-size: 1.3em;
}

.level-4 {
   font-size: 1.5em;
}

.level-5 {
   font-size: 1.7em;
}

C'est fini.

PS : Si vous souhaitez d'autres exemples d'intégration de plugins dans un des thèmes disponibles ici, faites un petit signe de la main !

Billet original sur Carnet :: Franck Paul

dimanche 10 décembre 2006

Les notes dans les billets

Vous avez certainement remarqué qu'il y avait parfois des notes ici et là dans les billets. Chacune est repérée par un numéro entre crochet. Pour atteindre le contenu de la note, vous savez surement qu'il suffit de cliquer sur ce numéro, et effectivement vous allez vous retrouver tout en bas du billet, à l'endroit où se trouve ladite note[1].

Arrivé là, je me souviens, la première fois où j'ai cliqué sur ce numéro, m'être dit : Comment retrouver l'endroit où j'ai interrompu la lecture pour lire cette note ?. Et bien avec DotClear, rien de bien compliqué, il suffit de cliquer sur le numéro qui précède la note pour revenir immédiatement à l'endroit voulu. Étonnant non ?

Notes

[1] Et maintenant ? Comment revenir à ma lecture ? Cliquez sur le numéro, à gauche, au début de ce paragraphe.

Billet original sur Carnet :: Franck Paul

jeudi 7 décembre 2006

Différencier les liens internes des liens externes

Toujours à la recherche des moyens me permettant de me conformer à toutes les bonnes pratiques d'Opquast — il m'en reste deux à remplir aujourd'hui et ce billet concerne la première — j'ai cherché un moyen de différencier les liens externes (qui pointent sur un site externe à celui-ci) des liens internes.

Une petite recherche Google m'a fait rapidement comprendre qu'il n'y avait pas de solutions totalement accessible à ce jour, sauf bien sûr à reprendre tous mes billets et tous les liens qui s'y trouvent, et à rajouter pour chacun une mention textuelle indiquant si le lien est externe ou pas. Je vous avoue tout de suite que la simple idée de reprendre les quelques 800 billets de ce blog m'effraie un peu.

Pour l'instant, je me suis limité à utiliser des règles CSS 3 pour obtenir l'affichage d'une petite image à la suite des seuls liens externes (j'en ai profité pour mettre également un petit symbole à la suite des adresses email). Bien sûr ce système a des limitations. Premièrement il n'est accessible qu'aux personnes voyantes et qui n'ont pas désactivé l'affichage des feuilles de style, qui utilisent un navigateur qui interprète correctement ces règles et qui n'utilisent pas un agrégateur RSS[1].

Les images utilisées, qui ont été imaginées par Nate, sont :

  • Petite flèche sortant d'un cadre : pour les liens externes
  • Petite enveloppe : pour les adresses email

Les règles utilisées, qui ont été adaptées de celles indiquées par William Cox — qu'il a lui même adapté des originales fournies par Stuart, sont les suivantes :

a[href^="mailto:"] {
   background: transparent url('img/aemail.gif') right center no-repeat;
   padding-right: 10px;
}

#content a[href^="http:"] {
   background: transparent url('img/aoutside.gif') right center no-repeat;
   padding-right: 10px;
}

#content a[href^="http://franck.paul.free.fr"] {
   background: inherit;
   padding-right: 0px;
}

La première sert pour les adresses email, la deuxième sera utilisée pour tous les liens commençant par http:, la troisième permet d'ignorer les liens internes. C'est tout ce que je peux faire à ce jour pour me conformer à cette bonne pratique.

Notes

[1] J'aimerais trouver une alternative textuelle à l'image, au moins pour les lecteurs d'écrans. Alors si quelqu'un a des idées, qu'il n'hésite pas ! Existe-t-il une technique CSS qui permettrait de compléter l'attribut title avec la mention (lien externe) uniquement pour les liens externes ?

Billet original sur Carnet :: Franck Paul

mercredi 6 décembre 2006

URL absolues dans les flux RSS

Une des bonnes pratiques Opquast est intitulée de la manière suivante :

Les hyperliens contenus dans les fils de syndication sont absolus.

Le problème avec DotClear 1.2.x est que les URL relatives présentes dans les billets ne sont pas converties au moment de la génération du flux RSS (ou Atom). Pour se conformer à cette bonne pratique il va falloir modifier le code pour intégrer cette conversion.

Important : modifier le core de DotClear, saimal, ça complique la maintenance et les mises à jour, donc c'est en connaissance de cause que vous faites les modifications. C'est d'ailleurs pour en garder une trace que j'écris ce billet.

Deux classes sont concernées. Il s'agit des classes xblogpost et xblogcomment (fonctions getRSSItem() et getAtomEntry() pour les deux classes) qui se trouvent respectivement définies dans les fichiers class.xblogpost.php et class.xblogcomment.php (répertoire layout), qu'il faudra modifier en utilisant une fonction que j'ai trouvée sur le blog de Gerd Riesselmann. Voilà le code de cette fonction de conversion :

<?php
function relToAbs($text, $base)
{
  if (empty($base))
    return $text;
  // base url needs trailing /
  if (substr($base, -1, 1) != "/")
    $base .= "/";
  // Replace links
  $pattern = "/<a([^>]*) " .
             "href=\"[^http|ftp|https]([^\"]*)\"/";
  $replace = "<a\${1} href=\"" . $base . "\${2}\"";
  $text = preg_replace($pattern, $replace, $text);
  // Replace images
  $pattern = "/<img([^>]*) " . 
             "src=\"[^http|ftp|https]([^\"]*)\"/";
  $replace = "<img\${1} src=\"" . $base . "\${2}\"";
  $text = preg_replace($pattern, $replace, $text);
  // Done
  return $text;
}
?>

Cette fonction se chargera de convertir les URL des hyperliens et des images présents dans le contenu. Elle attend deux paramètres, le contenu dans lequel se trouve (éventuellement) les URL à convertir et l'URL de base. Pour fournir cette dernière il faudra indiquer ceci util::getHost().dc_blog_url ce qui donnera dans mon cas http://franck.paul.free.fr/dotclear/[1]. Ensuite, il faut ajouter l'appel à la fonction de conversion une fois le contenu récupéré en utilisant la ligne suivante :

$content = util::relToAbs($content,util::getHost().dc_blog_url);

dans chacune des quatre fonctions citées plus haut.

Voilà maintenant une nouvelle bonne pratique mise en œuvre, ce qui au passage me permet de remplir toutes les conditions des premiers et deuxièmes niveaux de conformité.

Notes

[1] Il faudra éventuellement que vous adaptiez cette URL de base en fonction de vos habitudes. Pour ma part, je spécifie les URL internes par rapport à la racine du site et pas par rapport à la racine du blog pour obtenir une prévisualisation correcte des images pendant la saisie du billet, donc j'ai utilisé uniquement util::getHost() comme deuxième paramètre de la fonction.

Billet original sur Carnet :: Franck Paul

mardi 5 décembre 2006

Vignettes des liens externes

J'ai découvert sur le blog de Romuald une petite fonction assez sympathique. En effet lorsque vous survolez un lien avec la souris, une petite vignette s'affiche avec une copie d'écran du site en question. J'ai aussitôt regardé ça de plus près et il s'agit en fait d'un service gratuit fourni par le site Snap.

Exemple de vignette affichée au survol d'un lien

Comment ça marche ? Simplement. Il s'agit d'un appel à un script javascript qu'il faut insérer dans l'entête (entre les balises <head> et </head>) une fois que vous vous êtes enregistré chez eux. Seuls les liens externes seront concernés (bien qu'on puisse désactiver cette limitation) et, chose importante, le script ne remet pas en cause la validité du site où il est installé. Pas de soucis non plus si le visiteur n'a pas activé javascript sur son navigateur, ça reste transparent. Le seul bémol est que ce script est hébergé sur un serveur externe avec les aléas associés.

Vous trouvez ça comment ? Superflu, indispensable, très web 2.0 ?

PS : Je viens de m'apercevoir que c'est aussi un moyen indirect de différencier les URL externes des URL interne[1]. Ce qui est une des bonnes pratiques recommendées par Opquast.

Notes

[1] A l'exception près qu'il faut avoir le javascript activé !

Billet original sur Carnet :: Franck Paul

lundi 4 décembre 2006

Vivons heureux. Vivons cachés ?

Depuis le temps que j'utilise PHP, mes seules tentatives de dopage serveur s'étaient limitées à des périodes d'utilisation de Zend Optimizer sur mes machines de développement.

Ce week end, j'ai franchi un cap : je me suis dit qu'il était temps de jeter un oeil à APC. J'ai donc opté pour installer le bouzin sur la dedibox qui abrite ce blog, en espérant que ça n'affolera pas la mule[1]...

Et puisqu'on parle de cache, mais niveau HTTP cette fois, j'en profite pour signaler qu'une petite amélioration a été apportée au mécanisme de cache HTTP de Dotclear 2, via le support des conditions HTTP-IF-NONE-MATCH[2].

Notes

[1] Donc, si le serveur tombe ou que des bizarreries apparaissent, vous saurez d'où ça vient ... ;-)

[2] Je profiterai peut-être de l'occasion pour offrir une suite au billet Trafic HTTP : distribution de coups de pied au cul en abordant le système de cache HTTP dans la famille Dotclear.

Billet original sur just call me pep - dotclear

vendredi 1 décembre 2006

Thème Connections et plugin Galerie

Depuis que le thème Connections est disponible, certains rencontrent des difficultés à y intégrer de manière harmonieuse le plugin Galerie. Je vais vous indiquer rapidement comment j'ai fait ici.

Préalables

Je pars du principe que vous avez installé le thème Connections et le plugin Galerie, mais pas encore modifié les fichiers comme indiqué sur la page d'installation du plugin. Je considère également que vous êtes capables de modifier des fichiers situés sur votre espace d'hébergement, soit grâce au plugin Gestionnaire de fichiers, soit grâce à votre client FTP et votre éditeur de texte favori.

Mise en place du code nécessaire

Comme indiqué sur la page d'installation du plugin, il s'agit d'insérer quelques lignes dans le fichier template.php situé dans le répertoire du thème Connections (/themes/connections/).

Tout d'abord, ce qu'il faut pour afficher la liste des galeries dans la sidebar. Les lignjes 153 à 156 du fichier contiennent ces lignes :

<div id="categories">
   <h2>Cat&eacute;gories</h2>
   <?php dcCatList(); ?>
</div>

Juste après (ligne 157), insérez ces lignes :

<div id="galleries">
   <h2><a href="http://franck.paul.free.fr/dotclear/<?php dcGallery::HomeURL(); ?>">Galeries</a></h2>
   <ul>
   <?php dcGallery::galleryList('<li>%s','<ul class=\'children\'>%s</ul></li>','<li>%s</li>'); ?>
   </ul>
</div>

Ensuite il faut ajouter le code qui permettra au plugin d'afficher la liste des galeries, les galeries sous forme de vignettes et les images proprement dites. Les lignes 70 à 72 du fichier template.php contiennent ceci :

<?php if ($err_msg != '') : /* Si on a une quelconque erreur, on l'affiche */?>
   <div class="error"><strong>Erreur : </strong>
   <?php echo $err_msg; ?></div>

Juste après (ligne 73), insérez ces 6 lignes :

<?php elseif ($mode == 'galleryCat') : ?>
   <?php include dcGallery::includeCat(); ?>
<?php elseif ($mode == 'galleryGal') : ?>
   <?php include dcGallery::includeGal(); ?>
<?php elseif ($mode == 'galleryImage') : ?>
   <?php include dcGallery::includeImage(); ?>

Enfin, il faut ajouter un lien vers la feuille de style utilisée par le plugin dans l'entête. La ligne 46 et 47 du fichier contiennent ceci :

<link rel="stylesheet" type="text/css" href="http://franck.paul.free.fr/dotclear/<?php dcInfo('theme'); ?>/style.css" media="screen" />
<?php dcPostTrackbackAutoDiscovery(); ?>

Entre ces deux lignes, insérez la ligne suivante :

<link rel="stylesheet" type="text/css" href="http://franck.paul.free.fr/dotclear/<?php dcGallery::includeCSS(); ?>" media="screen" />

Voilà, c'est tout pour le fichier template.php. Enregistrez-le et envoyez le si nécessaire sur votre espace d'hébergement.

Le style utilisé pour l'affichage des galeries (listes, vignettes et images)

Toutes mes galeries utilisent le thème connections qui est dérivé du thème default fourni avec le plugin galerie. Il vous suffit de télécharger l'archive jointe à ce billet et de la décompacter sur votre disque dur puis d'en téléverser le contenu dans un nouveau répertoire nommé /share/gallery/themes/connections/. Ensuite il faudra préciser pour chacune des catégories et des galeries que vous souhaitez utiliser le thème connections.

Personnellement, j'ai choisi une autre approche qui m'évite de changer le thème des catégories et des galeries. J'ai fait une copie du thème défault (on ne sait jamais), et j'ai remplacé le contenu par ma version. Comme ça, c'est pris en compte directement.

Voili, voilà.

Billet original sur Carnet :: Franck Paul

mercredi 29 novembre 2006

Aveu

Il y a des moments, comme ce soir par exemple, où je hais ce type ...

Vraiment ! :-p

Billet original sur just call me pep - dotclear

mardi 28 novembre 2006

Le menu de Freshy - Compléments

Je vous avais parlé des possibilités de personnalisation de la barre de menu du thème Freshy dans ce billet de fin septembre dernier. Depuis, plusieurs d'entre vous ont posé des questions ici, sur le forum de DotClear ou encore par mail, essentiellement sur la manière de de mettre en évidence le menu sélectionné en fonction du mode courant.

Je rappelle que le but du jeu est de positionner une classe current_page_item sur la balise <li> (en plus de la classe existante page_item ou last_menu qu'il faut préciser quoiqu'il arrive). Le code de base est le suivant :

<li class="page_item <?php echo (test) ? 'current_page_item' : ''; ?>">…</li>

Voilà l'aspect normal d'un élément du menu :

Élément de menu normal

Et voilà maintenant à quoi il ressemble lorsqu'on ajoute la classe current_page_item à la balise <li> :

Élément de menu en cours

Attention si vous avez le plugin pagination installé et actif car il intercepte le mode courant et le remplace par le sien. Dans ce cas il faudra tester une autre variable ($dc_orig_mode) dans laquelle le plugin sauvegarde le mode standard avant de le modifier. D'ailleurs, par soucis de simplicité, nous pouvons mettre la ligne suivante, juste avant la définition de la barre de menu, y compris si vous n'avez le plugin installé chez vous :

<?php if ($mode != 'pagination') $dc_orig_mode = $mode; ?>

Nous allons maintenant voir comment spécifier le test en fonction des cas.

Cas de la page d'accueil

Dans ce cas, il suffit d'utiliser le test $dc_orig_mode == 'home'.

Cas des catégories

Le test ($dc_orig_mode == 'cat') && ($news->f('cat_id') == xx) permettra de tester si la catégorie possédant l'identificateur numérique xx est active. L'identificateur numérique est facilement récupérable sur la page de gestion des catégories. Vous y trouverez la liste de toutes vos catégories et pour chacune, en glissant la souris sur leurs noms vous verrez une URL qui se termine par &cat_id=xx. Notez le xx, c'est lui dont il s'agit.

Si vous souhaitez que l'item de menu reste éclairé y compris lorsque vous affichez un billet de cette catégorie, il suffit d'utiliser && ($news->f('cat_id') == xx).

Cas des pages connexes

J'avais précisé dans le billet précédent comment créer une petite fonction dans le fichier prepend.php du thème qui permet de faire test simplement. Avec cette fonction, il suffit de tester avec dcRelatedCurrent('infos') pour une page spécifiée avec infos = "infos.php|Informations" dans le fichier related.ini du plugin (répertoire share/related@@).

Cas d'un billet particulier

Ici il suffit d'utiliser ($dc_orig_mode == 'post') && ($news->f('post_id') == xxx), avec xxx représentant l'identificateur numérique du billet. Cet identificateur précède normalement le titre dans l'URL du billet. Par exemple, le billet que vous êtes en train de lire à un identificateur égal à 792.

Cas d'une table des matières

Dans ce cas, il faut utiliser ($dc_orig_mode == 'tocHome'). Si vous voulez différencier les différentes tables des matières en fonction du fichier de configuration utilisé, vous pouvez compléter en testant la variable $toc_ini_file qui contiendra alors le nom du fichier de configuration (sans extension). Par exemple ($dc_orig_mode == 'tocHome') && ($toc_ini_file == 'alpha') dans le cas d'un fichier alpha.ini (dans le répertoire share/toc).

Cas d'une galerie

Avec le plugin Galerie il suffit de tester avec ($dc_orig_mode == 'galleryCat') || ($dc_orig_mode == 'galleryGal') || ($dc_orig_mode == 'galleryImage').

Cas du résultat d'une recherche

Sur la page de résultat d'une recherche il faut tester avec ($dc_orig_mode == 'search').

Voilà, je pense avoir fait le tour des possibilités. Si vous aviez des précisions à apporter, n'hésitez-pas à le faire en commentaire, je mettrai alors ce billet à jour en conséquence.

Billet original sur Carnet :: Franck Paul

- page 1 de 15