Archives du mot-clé XML

Diffuser un flux RSS dynamique

Les fils de syndication RSS sont devenus essentiels pour les blogs, et tout autre type de site qui publie régulièrement du nouveau contenu. C’est un moyen très pratique pour diffuser votre contenu et permettre à vos visiteurs de suivre votre blog en s’abonnant à vos fils RSS.

En outre, cela permet aussi de s’inscrire dans des annuaires RSS, qui vous rapporteront de nombreux liens en profondeur (autres que votre page d’accueil), en plus de pouvoir accrocher les visiteurs de l’annuaire en leur présentant du contenu attrayant avant même qu’ils ne mettent le pied dans votre site Web!

La plupart des CMS (tels que Joomla, WordPress, Dotclear etc.) ont déjà un script intégré qui vous génère pour vous vos fils RSS. Par contre, si vous possédez un site Web dynamique fait « à la main », vous devrez vous débrouiller seul!

Assumons que vous possédez un site Web dynamique en PHP qui publie des articles de temps en temps. Nous allons créer un fonction PHP pour extraire ces articles de la base de données puis les inscrire dans un fichier XML, ce qui constituera votre fil RSS. Ainsi, votre fil RSS se mettra constamment automatiquement à jour.

Générer automatiquement le flux avec la réécriture d’URL

Pour y arriver, nous allons utiliser la réécriture d’URL car ça permet de faire le tout plus proprement, en simulant le fichier RSS sur demande, au lieu de constamment modifier dynamiquement un fichier RSS réel.

Créez un fichier .htaccess que vous placerez à la racine de votre site, ou bien modifiez celui que vous avez déjà, s’il y-a-lieu :


Options +FollowSymlinks
RewriteEngine on

# Le lien pour le fil RSS
RewriteRule ^rss\.xml$ /rss.php [L,NC]

Avec cette réécriture, le fichier rss.php va générer dynamiquement le contenu XML du flux RSS, il le simulera donc le fichier.

Créez un fichier qui se nommera rss.php. Nous extrayons dans l’exemple suivant les derniers articles d’un blogue (imaginaire).

Voici la structure de la table qui sert dans l’exemple :


CREATE TABLE IF NOT EXISTS `blog` (
`id` mediumint(9) NOT NULL COMMENT ‘ID de l »article’,
`texte` text NOT NULL COMMENT ‘Texte de l »article’,
`date` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=’Articles du blogue’;

À insérer dans le fichier rss.php :

// Connexion MySQL
$host = « localhost »; // généralement localhost
$user = « NOM_D_UTILISATEUR »;
$pass = « MOT_DE_PASSE »;
$bdd = « NOM_DE_LA_BD »;

@mysql_connect($host,$user,$pass) or die(« La connexion a échoué: « .mysql_error());
@mysql_select_db(« $bdd ») or die(« La sélection de la base a échoué: « .mysql_error());

// Spécifier le type de contenu : XML
header(« Content-Type: text/xml »);

// Requête MySQL qui extrait les articles de la base de données
$requete = « SELECT id, date FROM blog ORDER BY date DESC LIMIT 10″; // les 10 derniers articles
$resultat = mysql_query($requete);

// Écriture du fichier XML
// l’entête :
$sm =  »;
$sm .= ‘xmlns:xsi= »http://www.w3.org/2001/XMLSchema-instance »
xsi:schemaLocation= »http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd »>’;

// Articles du blog
while ($blog=mysql_fetch_array($resultat,MYSQL_ASSOC)) {
$xml = ‘‘;
$xml .= ‘‘;
$xml .= ‘TITRE DU FLUX RSS‘; // Le titre de votre flux RSS. Par exemple : Derniers articles du site xyz
$xml .= ‘HTTP://WWW.VOTRESITE.COM/‘; // URL de votre site
$xml .= ‘‘.$title.’‘; // Description de votre site

$xml .= ‘‘;
$xml .= ‘VOTRE_SITE/IMAGE.GIF‘; // Une image, logo
$xml .= ‘TITRE DE L’IMAGE‘; // Normalement la même chose que le titre plus haut
$xml .= ‘HTTP://WWW.VOTRESITE.COM/‘; // URL de votre site
$xml .= ‘DESCRIPTION‘; // Description de votre site (pour l’image)
$xml .= ‘‘;
}
$i = 0;

foreach($news as $a) {
if($i < 12) { $id = $a['date']; $datexml = explode('-', $a['date']); $date2=date("D, d M Y H:i:s", mktime(0,0,0, $datexml[1],$datexml[2],$datexml[0])); $lien = "http://www.votresite.com/articles.php?id=" . $id; // Le lien vers l'article spécifique (à modifier selon vos besoins) $xml .= '‘;
$xml .= ‘‘.$a[‘titre’].’‘; // Titre de l’article
$xml .= ‘‘.$lien.’‘; // Lien vers l’article
$xml .= ‘‘.$lien.’‘; // Permalink
$xml .= ‘‘.$date2.’ GMT‘;
$xml .= ‘‘.strip_tags($a[‘txt’]).’‘; // Texte de l’article, en enlevant les tags HTML qu’il peut contenir (il peut y avoir plus de raffinement ici)
$xml .= ‘
‘;

$i++;
}
}

// édition de la fin du fichier XML
$xml .= ‘‘;
$xml .= ‘‘;

echo $xml;

Ainsi, lorsque vous tenterez d’accéder http://www.votresite.com/rss.xml, le fichier rss.php sera appelé et un document XML simulé affiché, avec les 10 derniers articles bien frais sortis de votre blog.

Si vous préférez, il est aussi possible de réaliser une fonction à l’aide de ce code, et, au lieu de simuler le fichier avec la réécriture d’URL, écrire directement dans un fichier flux.xml. Inscrivez simplement à la fin de votre fonction quelque chose comme ça, pour écrire dans le fichier :

// écriture dans le fichier
$fp = fopen(« flux.xml », ‘w+’);
fputs($fp, $xml);
fclose($fp);

Créer un Sitemap Google pour votre site

Un Google Sitemap est un élément primordial au succès de votre référencement : il sert à indiquer à Google quelles pages il doit indexer. Ça permet d’accélèrer le processus d’indexation de nouvelles pages, et ça permet également d’inclure tout votre contenu pertinent dans l’index de Google.

À la base (vous l’aurez deviné, je l’espère!), un Sitemap c’est un plan de votre site. Une arborescence de vos pages, dans laquelle l’importance qu’ont certaines pages de plus ou de moins sur les autres pages du même site est explicitement indiquée.

Bien sûr, ce n’est pas obligatoire; ce n’est qu’une aide pour Google (ainsi que pour vous, par le même fait). Vous ne pouvez pas espérer que toutes les pages que vous inclurez dans votre Sitemap seront indexées dans Google, car bien que vous lui montrez le chemin, Google n’est pas idiot, il n’indexera de toutes manières que les pages qu’il aura jugées pertinentes.

Laissez tomber les pages de contact et d’aide, focussez votre référencement sur votre contenu réel. Encore faut-il qu’il les trouve ces superbes pages qui feront grimper votre trafic : le Sitemap Google est là pour ça.

Selon la nature de votre site (un site statique ou un site dynamique), la façon de fabriquer votre Sitemap peut varier : de là le but de cet article.

En tout temps, je vous conseille de vous reférer à la documentation Google sur ce sujet.

Créer un Sitemap statique

Par statique, j’entends un Sitemap que vous devez écrire vous même, et qui ne changera pas automatiquement. C’est ce qu’on utilise normalement pour des sites qui possèdent uniquement des contenus statiques en pages HTML.

Pour faire ça, inutile de perdre votre temps à en écrire un vous même, vous pouvez utiliser un outil de création automatique de Sitemap. Vous pouvez également l’utiliser pour un site dynamique qui n’utilise pas la réécriture d’URL, mais il vous faudra le regénérer une fois de temps en temps – un truc que vous allez oublier de faire.

Créer un Sitemap dynamique

Un Sitemap dynamique se mettra automatiquement à jour sur votre site Web, ce qui est très pratique si vous mettez régulièrement à jour votre contenu. La méthode proposée ici utilise la réécriture d’URL pour simplifier le tout.

Dans le premier temps, créez un fichier .htaccess placé à la racine, ou modifiez celui que vous avez peut-être déjà :


Options +FollowSymlinks
RewriteEngine on

# Lien pour le Sitemap
RewriteRule ^sitemap\.xml$ /sitemap.php [L,NC]

Ainsi, sitemap.php va nous permettre de générer dynamiquement et simplement le contenu du fichier XML (le sitemap). Chaque fois que Google cherche à ouvrir la page sitemap.xml, sitemap.php est sollicité et crée une mise à jour du « fichier » XML.

Créez donc un fichier intitulé sitemap.php. Dans l’exemple suivant, on récupère les articles d’un blog imaginaire.

Voici la structure de la table qui sert dans l’exemple :


CREATE TABLE IF NOT EXISTS `blog` (
`id` MEDIUMINT(9) NOT NULL COMMENT ‘ID de l »article’,
`texte` TEXT NOT NULL COMMENT ‘Texte de l »article’,
`DATE` DATE NOT NULL)
ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=’Articles de blog’;

Voici pour le fichier sitemap.php :

// Connexion MySQL
$host = « localhost »; // généralement, c’est localhost
$user = « NOM_D_UTILISATEUR »;
$pass = « MOT_DE_PASSE »;
$bdd = « NOM_DE_LA_BD »;

@mysql_connect($host,$user,$pass) or die(« Echec de connexion au serveur: « .mysql_error());
@mysql_select_db(« $bdd ») or die(« Echec de sélection de la base: « .mysql_error());

// Spécifier le type de document, soit un document XML
header(« Content-Type: text/xml »);

// Requête MySQL pour aller chercher les articles du blog
$requete = « SELECT id, date FROM blog ORDER BY date DESC »;
$resultat = mysql_query($requete);

// Écriture du fichier XML
// l’entête :
$sm =  »;
$sm .= ‘xmlns:xsi= »http://www.w3.org/2001/XMLSchema-instance »
xsi:schemaLocation= »http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd »>’;

// Articles du blog
while ($blog=mysql_fetch_array($resultat,MYSQL_ASSOC)) {
$sm .= ‘‘;
$sm .= ‘http://votresite.com/blog?id=’.$blog[‘id’].’‘; // en suposant que vos pages dynamiques fonctionnent ainsi
$sm .= ‘‘.$blog[‘date’].’‘;
$sm .= ‘monthly‘;
$sm .= ‘0.7‘;
$sm .= ‘
‘;
}

$sm .=  »;

echo $sm;

Comme vous pouvez le deviner, chaque item du sitemap obéit à ce schéma :






<loc> L’emplacement exact de votre page. N’oubliez pas d’inclure le domaine (http://www.domaine.com).
<lastmod> Quand est-ce que votre page a été modifiée pour la dernière fois (ou quand a t-elle été créée). Cette donnée est préalablement stockée dans vos tables par vos scripts de blog. Vous devez fournir cette données sous un format valide W3C.
<changefreq> À quelle fréquence cette page risque t-elle d’être mise à jour? (always, hourly, daily, weekly, monthly, yearly, never). Ceci constitue un indice pour Google, la fréquence d’exploration de Google peut ne pas respecter votre commande. Et il ne sert à rien de mettre always si vous ne modifiez jamais un article une fois qu’il est publié.
<priority>

Cette donnée est un indice hiérarchique, indiquant si cette page est plus importante que d’autres, sur votre site. Cette comparaison ne s’applique pas aux autres sites. Il est inutile de mettre 1 partout, vous vous nuirez. Donnez une priorité plus haute aux pages qui vous semblent plus importantes et qui changent plus souvent

Normalement, en accédant la page sitemap.xml sur votre site, vous devriez voir votre Sitemap en format XML. Vérifiez s’il est valide, puis vous pourrez le soumettre à Google.

Bien sûr, il est possible d’améliorer ce script de plusieurs façons. Par exemple, vous pouvez stocker dans vos tables de données, dans une colonne priority, la priorité à donner à chacune des pages. Même chose pour le changefreq.

Évidemment, on se prend moins la tête avec les CMS!

Créer un Sitemap dynamique pour Joomla!

Pour ce qui est d’un sitemap pour Joomla!, vous avez à votre disposition deux composants : xMap et Joomap, les deux disponible en versions J!1.0x et J!1.5x.

Je n’ai pas essayé Joomap, mais xMap fonctionne très bien. Il existe des extensions pour la plupart des composants connus (Sobi2, Adsmanager, Community Builder, …), ce qui est indispensable. Il s’agit des deux plus connus, mais il existe d’autres composants.

Créer un Sitemap dynamique pour Drupal

Installez le module XML Sitemap pour Drupal, disponible pour Drupal 5.x.

Créer un sitemap dynamique pour WordPress

Téléchargez le plugin de Arne Brachhold, qui fonctionne très bien pour créer un Sitemap pour WordPress. Si le référencement vous intéresse, je vous invite à lire mon article au sujet du référencement sur WordPress.