Perso Web Management Prog Blogosphère Développement Etudes OS Sécurité Infographie Mobiles Référencement Divers

01 mar. 2009

Mise à jour du site

Par Jean-Christophe Duvivier à 15:58

Mots Clés Blog, Dotclear, Flickr, Flickrshow, Portfolio, SPIP,

Un petit billet pour vous signaler la mise à jour de mon site, que je prépare déjà depuis pas mal de temps, petit à petit. J'ai totalement migré vers Dotclear 2, étant donné qu'il répond largement à mes besoins dans le cadre d'un site personnel. Je trouvais SPIP légèrement inadapté à ce blog, je le destine plus à de "vrais sites web" (L'amicale laïque du Mourillon par exemple). Dotclear est principalement orienté vers les blogs, et il le fait bien !

Alors quoi de neuf ?

Ça se passe principalement au niveau du portfolio, et des galeries photos. Ils sont gérés séparément du blog principal, et sont directement accessible via le menu en haut à droite. Toutes les photos des galeries sont hébergées sur mon compte Flickr. Je me contente d'afficher les miniatures pour la mise en bouche, et des formats moyens, via Flickrshow pour les détails.

Mise à jour du site : galerie photos

Concernant le portfolio, j'ai mis en page certains des anciens posts, tels que celui sur la Guerre des Mondes. J'ai rajouté pas mal de détails (croquis, vidéos etc.).

Mise à jour du site : portfolio

De plus, vous avez, comme sur le blog, la possibilité de commenter chaque référence. Tous mes travaux n'y figurent pas, mais je me charge de le mettre à jour rapidement ;)

Du nouveau également au niveau du CV : mise à jour des compétences, et affichage du logo pour chaque formation et entreprise.

Mise à jour du site : curriculum vitae

Le reste de la mise à jour tiens plus du détail : déplacement de la zone de recherche dans le header, affichage des dernières photos publiées dans la sidebar, correction de plusieurs styles css, changement de la page d'intro etc.

Si vous avez des suggestions pour améliorer le site, n'hésitez pas ;)

Le net devenant de plus en plus accessible, il devient relativement difficile de ressortir de la masse de blogs présents sur le toile. Je vais vous faire part de petites astuces rapides à mettre en place afin de vous assurer davantage de visites ;)

Ces astuces ne concernent en aucun cas une logique de codage, tels que la mise en place de texte alternatif sur les images, l'ajout de titre aux liens hypertextes, l'ajout de meta tags etc. On sait tous que le référencement est une science inexacte et qu'il est difficile de connaître LA logique de codage parfaite, qui vous fera ressortir sur le net. Les astuces que je vais vous présenter fonctionnent, et pour cause, nous n'allons pas améliorer le contenu de vos pages pour faire ressortir certains mots dans les moteurs de recherche, mais nous allons tout simplement faire connaître vos pages aux moteurs de recherche.

Allons-y !

1ère étape : Les tags

Je vous arrête de suite, nous n'allons pas parler de meta tags, ou de choses inutiles. Je vais vous parler d'une chose à la mode en ce moment : le tagcloud, ou nuage de tags.

Nuage de tags

Leur fonctionnement est très simple. Un tag peut être rattaché à plusieurs billets, et un billet peut posséder plusieurs tags. Ainsi, votre nuage de tags vous permettra d'accéder aux articles liés au tag sur lequel vous cliquez. Cela permet de générer du contenu régulièrement mis à jour, étant donné que chaque tag est susceptible d'être rattaché à de nouveaux billets.

Dans Dotclear et Wordpress, les tags sont gérés par défaut. Alors n'hésitez pas à rattacher une demi-douzaine de tags pour chaque article.

Mots Clés

2ème étape : L'url rewriting

Moins connu que les tags, mais d'une efficacité redoutable. Pour ceux qui ne savent pas ce que se cache derrière ce nom barbare, je tente une brève explication :

L'url rewriting permet de réécrire l'url de vos articles d'une façon plus pertinente. Prenons votre 3ème article, qui traite de la choucroute alsacienne. Dans un blog lambda, nous aurons ce type d'url : http://www.votresite.com/articles.php?id=3. Dans un blog utilisant l'url rewriting, on aura ceci : http://www.votresite.com/choucroute-alsacienne.html.

Url Rewriting

Où est l'intérêt ? Il y a quelques années, lorsque nous effectuions une recherche sur un moteur de recherche, ce-dernier associait nos mots clefs avec les meta tags des sites Internet référencés. Les webmasters, développeurs et compagnie ayant abusé de ces meta tags, en mettant des tonnes de mots clés, les moteurs de recherche se sont mis, petit à petit, à chercher directement dans l'url du site, ce qui révèle une certaine pertinence. Alors qu'un articles.php?id=3 ne veut rient dire, un choucroute-alsacienne.html ressortira beaucoup mieux sur le net.

Comment mettre en place l'url rewriting ?

Dotclear le gère automatiquement. Vous pouvez même choisir le format des url dans la gestion (Tableau de bord > Paramètres du Blog > Configuration du Blog). Je vous conseille le format "titre" qui vous permettra d'alléger vos url (en enlevant la date), et les rendre ainsi plus pertinentes.

Concernant Wordpress, je vous renvoi vers un très bon tuto, rédigé par Benjamin Agullana : Url Rewriting sous Wordpress.

Sous SPIP, il vous suffit d'utiliser les url propres (me demander comment faire si besoin).

À noter que tous les hébergeurs ne sont pas compatibles avec l'url rewriting (en particulier les hébergeurs gratuits).

3ème étape : Les sitemaps

Avant de vous parler des sitemaps, je vous demande, s'il vous plait, pour votre bien, et si vous ne en possédez pas encore un, de vous procurer un compte Google et de mettre en place les "Outils pour Webmasters".

Qu'est-ce-qu'un Sitemap ? Tout simplement un plan de votre site. Il se présente sous la forme d'un fichier xml qui renferme, entre autres, toutes les url de votre site. Il permet à Google d'indexer plus rapidement vos pages, en lui faisant connaître.

Si vous êtes l'heureux possesseur d'un blog Dotclear, je vous encourage, et vous demande même, d'installer l'excellent plugin Sitemap de Pep, téléchargeable à cette adresse : Plugin Sitemap par Pep. Une fois installé, rendez-vous dans le nouveau menu "Sitemaps", dans votre liste de menus à gauche, et cochez la checkbox "Permettre les sitemaps". Vous pouvez de plus régler le niveau d'importance des tags, billets, pages etc. Enregistrez la configuration et c'est terminé de ce côté là.

Plugin Sitemap

Ensuite, rien de plus simple. Rendez-vous dans vos "Outils pour Webmasters", ajoutez votre site si ce n'est déjà fait, et ajoutez votre sitemap dans la rubrique "Sitemaps". Il se nomme sitemap.xml et se trouve à la racine de votre site.

Outils pour Webmasters

Dès a présent, tous vos billets, tags, pages etc. seront constamment soumis à Google, qui les indexera.

Pour les adeptes de Wordpress ou de SPIP, sachez qu'il existe des plugins équivalents à celui présenté pour Dotclear. Cherchez un peu et vous trouverez ;)

4ème étape : Les mises à jour

Un site non mis à jour qui présente un contenu pertinent sera moins bien référencé qu'un site présentant un contenu moins intéressant, mais régulièrement mis à jour. Il est donc nécessaire de mettre votre blog à jour régulièrement. En plus de présenter à Google des pages différentes à chaque visite, il vous permettra de rajouter du contenu, de créer de nouvelles pages et donc d'être davantage présent sur le net ;)

Et voilà ! Rien qu'avec ceci, sans charte de codage particulière, vous pourrez vous hisser dans les premières pages de Google ;) À titre d'info, j'ai créé ce blog en octobre et ai aujourd'hui plus de 3000 visites par mois (source : Google Analytics).

Si vous avez des questions, réflexions etc., n'hésitez pas à vous manifester à la suite de l'article ;)

12 oct. 2008

Installer un mini calendrier sur SPIP 1.9.2

Par Jean-Christophe Duvivier à 09:58

Mots Clés Internet, Site, SPIP, Tutoriel, Web,

Le but de ce Tutoriel est de vous permettre d'intégrer un mini calendrier sur votre site SPIP, de la même manière que je l'ai fait sur ce site.

Ayant moi même rencontré beaucoup de problèmes dans l'installation de ce plugin, et, une fois réussi, ayant reçu beaucoup de mails me demandant conseils pour réaliser cette intégration, j'ai décidé de rédiger un Tutoriel, comme j'aurais aimé en trouver il y a 6 mois.

Un grand merci à Hervé, rencontré sur SPIP Contrib, qui m'a permis d'avancer ;)

Préambule :

Tout d'abord, il vous faut vous rendre sur SPIP Contrib pour télécharger la version 0.13 du calendrier, ainsi que le plugin Widget Calendrier. Ces deux plugins sont disponibles ici.

Une fois téléchargées, dézippez vos deux archives, et placez les dans le répertoire plugins présent à la racine de votre site (s'il n'y est pas, créez le).

spip_calendrier1

Rendez-vous dans l'admin de votre site, puis dans Configuration > Plugins et activez les deux plugins.

spip_calendrier2

À partir de maintenant, je vais décrire la marche à suivre pour implanter votre calendrier dans votre squelettes et énumérer les erreurs que vous pourriez rencontrer.

1ère étape :

Comme indiqué dans SPIP Contrib, vous devez insérez le code suivant dans votre squelette :

#CALENDRIER_MINI{#ENV{date},'date',#SELF}

1er Cas : Ça fonctionne, vous pouvez passer à l'étape suivante.

2ème Cas : Si le calendrier s'affiche mais que vous ne pouvez pas naviguer entre les mois c'est en général parce-que vous avez placé votre code dans un squelette que vous appelez (grâce à INCLURE) dans votre squelette principal. Le calendrier doit être inséré directement dans le squelette principal.

2ème étape :

Pour tester votre calendrier, vous décidez de programmer un événement (pour programmer un événement, rendez-vous dans l'article concerné, et cliquez sur la flèche noire à gauche de AGENDA).

1er Cas : Votre événement s'affiche dans votre calendrier, et vous accédez à l'article en cliquant sur le jour concerné. Vous pouvez passer à l'étape suivante.

2ème Cas : Si votre événement ne s'affiche pas, cela vient de votre page Plugins > agenda_1_9_2 > formulaires > calendrier_mini.html. Créez un dossier formulaires dans votre dossier squelettes, et copier votre page calendrier_mini.html dans votre nouveau dossier formulaires.

Remplacez le code suivant :

<tbody>
<BOUCLE_calendrier(EVENEMENTS)
{id_article}{id_mot?}{agenda date_debut, mois, (#ENV{date}|annee), (#ENV{date}|mois)}>
[(#DATE_DEBUT|Agenda_memo_full{#DATE_FIN,[(#TITRE|addslashes)],#DESCRIPTIF,#LIEU,
[(#ENV{self}|parametre_url{#ENV{var_date},[(#DATE_DEBUT|affdate{'Y-m-d'})]})]})]
</BOUCLE_calendrier>
[(#ENV{date}|agenda_mini)]
</tbody>

Par celui-ci :

<tbody class="calendrier-td"><BOUCLE_calendrier(EVENEMENTS)
{id_mot?} {agenda date_debut, mois, (#ENV{date}|annee), (#ENV{date}|mois)}>
[(#DATE_DEBUT|Agenda_memo_full{#DATE_FIN,[(#TITRE|addslashes|supprimer_numero)],
#DESCRIPTIF,#LIEU,#URL_ARTICLE,[(#DATE_DEBUT|affdate{'Y-m-d'})]]})]
</BOUCLE_calendrier>
[(#ENV{date}|agenda_mini)]
</tbody>

3ème étape :

Enfin, on va remanier le style de l'agenda. En principe vous ne rencontrerez pas de problème pour le personnaliser, mais je préfère vous donner toutes les cartes.

Personnalisation des cellules :

#calendar td { }

Personnalisation des cellules du mois en cours :

#calendar td.libre{ }

Personnalisation des cellules n'appartenant pas au mois en cours :

#calendar td.horsperiode{ }

Personnalisation de la cellule du jour en cours :

#calendar td.today{ }

Personnalisation des cellules des jours occupés :

#calendar td.occupe { }

Si vous voulez changer le nom des classes, en rajouter, en enlever etc., ça se passe dans le fichier agenda_1_9_2 > balise > calendrier_mini.php lignes 96, 100 et 107.

Utilisation :

Il ne vous reste plus qu'à tester votre calendrier en y ajoutant plusieurs événements. Rendez-vous dans votre article, et dépliez la partie concernant l'agenda.

spip_calendrier3

Renseignez-y le titre, le lieu, la date, le descriptif, et validez. En principe, l'événement figure dès à présent dans le calendrier ;-)

Si vous rencontrez des problèmes en suivant ce tutoriel, n'hésitez pas à laisser un message. J'essaierai d'y répondre ;-)

Mise à jour du 8/02/2009 : Plusieurs événements le même jour

Comme vous l'avez surement remarqué, lorsque plusieurs événements sont programmés le même jour, le lien renvoi sur le premier événement saisi, rendant les autres inaccessibles. Suite à de nombreuses demandes, je vous propose une solution à ce problème, facile à mettre en place. Elle est majoritairement basée sur l'infobulle javascript de Damien Alexandre, que j'ai remaniée à ma sauce, en la combinant avec le script de l'agenda. Voici les étapes de mise en place :

1ère étape : Le fichier calendrier_mini.html : squelette et scripts

Rendez-vous tout d'abord dans le fichier plugins > agenda_1_9_2 > formulaires > calendrier_mini.html ou dans squelettes > formulaires > calendrier_mini.html (si vous avez au préalable dupliqué le squelette de votre calendrier dans ce dossier).

Juste après ce code :

<div id="calendar">

Insérez ceci :

<div id="curseur" class="infobulle"></div>

Ce code représente une infobulle qui contiendra les liens de différents événements de la journée. Peut-importe où vous l'insérez étant donné qu'on la mettra en position absolute. Mais mieux vaut la mettre ici pour ne pas la perdre.

Ensuite le script. Vous pouvez le mettre ou vous voulez, tant qu'il est présent dans la même page que votre mini calendrier. Pour mon test, je l'ai mis tout en haut de mon calendrier_mini.html, c'est à dire avant le :

<div id="calendar">

Voici l'intégralité du code à insérer :

<script language="javascript" type="text/javascript">
<!--
// Fonction qui nous retourne l'élement en fonction de son id
function GetId(id)
{
  return document.getElementById(id);
}
 
var i = false; // Si l'infobulle est invisible, i = false et invesement
var a = true; // Si le curseur a déja survolé le jour, a = false
 
// Fonction qui calcule la position de l'infobulle en fonction de celle du curseur
function move(e)
{
    if(i && a)
    {  // Si la bulle est visible et que c'est la première fois que le curseur survole le jour, on calcul en temps reel sa position idéale
      if (navigator.appName!="Microsoft Internet Explorer")
      { // Si on est pas sous IE
        GetId("curseur").style.left=e.pageX + 5+"px";
        GetId("curseur").style.top=e.pageY + 10+"px";
      }
      else
      { // Si on est sous IE
        if(document.documentElement.clientWidth>0)
        {
          GetId("curseur").style.left=20+event.x+document.documentElement.scrollLeft+"px";
          GetId("curseur").style.top=10+event.y+document.documentElement.scrollTop+"px";
        }
        else
        {
          GetId("curseur").style.left=20+event.x+document.body.scrollLeft+"px";
          GetId("curseur").style.top=10+event.y+document.body.scrollTop+"px";
        }
      }
    }
    a = false; // Le curseur vient de survoler le jour, on passe a à false
}
 
// Fonction qui affiche l'infobulle
function montre(text) 
{ 
  if(i==false)
  { // Si l'infobule est invisible, on l'affiche
    GetId("curseur").style.visibility="visible"; // Si il est caché (la verif n'est qu'une securité) on le rend visible.
    GetId("curseur").innerHTML = text; // on copie notre texte dans l'élément html
    i=true;
    a = true;
  }
  else
  { // Si l'infobule est visible, on la cache
    cache();
  }
}
 
// Fonction qui cache l'infobulle
function cache()
{
  if(i==true)
  {
    GetId("curseur").style.visibility="hidden"; // Si la bulle est visible on la cache
    i=false;
  }
}
 
</script>

Je pense que les commentaires de Damien mêlés aux miens sont suffisants pour comprendre le code. Mais n'hésitez pas si vous avez des questions ;)

2ème étape : Le fichier habillage.css : style

Comme précédemment, vous pouvez mettre ce code n'importe où, mais c'est plus propre de le mettre dans votre fichier css principal. Il vous suffit donc d'y insérer ce code :

.infobulle
{
  position : absolute;   
  visibility : hidden;
  border : 1px solid Black;
  padding : 10px;
  font-family : Verdana, Arial;
  font-size : 10px;
  background-color : #ffffcc;
}

Modifiez le style à votre guise, mais laissez bien la position en absolute, c'est nécessaire pour le calcul de la position de votre infobulle en fonction de votre curseur.

3ème étape : Le fichier calendrier_mini.php : remplissage de l'infobulle

Rendez-vous dans le fichier plugins > agenda_1_9_2 > balise> calendrier_mini.php et remplacez ce code :

$evts = $evenements[$amj];
$class="";
if ($evts)
{
  $evts = "<a href='".parametre_url($evts[0]['URL'],'date',"$annee_en_cours-$mois_en_cours-$jour")."' 
title='".$evts[0]['SUMMARY']."'>".intval($jour)."</a>";
	$class='occupe';
}
else
{
	$evts = intval($jour);
	$class='libre';
}

Par ce code :

$evts = $evenements[$amj];
$info = ""; // Initialisation du contenu
for($i=0 ; $i<sizeof($evts); $i++) // Pour tous les éléments du tableau d'événements,
{
  // On créé un lien vers l'événement et on l'affiche
    $info .= "<a href=\'".parametre_url($evts[$i]['URL'],'date',"$annee_en_cours-$mois_en_cours-$jour")."\' 
title=\'".$evts[$i]['SUMMARY']."\'>".$evts[$i]['SUMMARY']."</a><br />";
  }
$class="";
if ($evts)
{
	$evts = "<a onmouseover=\"montre('".$info."');move()\" href='".parametre_url($evts[0]['URL'],'date',
"$annee_en_cours-$mois_en_cours-$jour")."' title='".$evts[0]['SUMMARY']."'>".intval($jour)."</a>";
	$class='occupe';
}
else
{
	$evts = intval($jour);
	$class='libre';
}

La méthode est simple, on parcoure le tableau des événements, et pour chaque élément, on affiche dans l'infobulle le titre de l'événement, qui mène directement à l'article.

Au final, l'utilisation est très simple : un survol sur le jour et vos événements apparaissent dans l'infobulle (vous pouvez donc choisir l'événement qui vous intéresse). Un deuxième survol sur le jour, et votre infobulle disparait.

Et voilà ! Si vous ne vous êtes pas trompés, tout est opérationnel ! N'hésitez pas à venir exposer vos problèmes si vous en rencontrez ;)

Propulsé par Dotclear - Hebergé par Infomaniak - Thème Green Mantis par jchristophe
© jchristophe.fr 2008 - 2009
Valide CSS 2.1 CSS 2.1 Valide XHTML 1.0 XHTML Strict 1.0 Flux RSS RSS