Plusieurs blogs sur plusieurs noms de domaines mais gérés par un seul Dotclear 2, c'est possible !

Cette semaine, un nouvel article un peu plus « technique » que d’habitude, pour aider ceux qui se retrouveraient avec la même problématique que moi…
Alors oui, je me doute bien que les « vieux de la vieille » de Dotclear, les « grands gourous », ou même les « super habitués », savent parfaitement comment faire cela, mais sans être une débutante pour autant dernièrement je me suis retrouvée coincée face à cette problématique, j’ai trouvé que la doc sur le sujet n’étais pas nécessairement très claire et heureusement qu’un des « grands gourous » justement m’a aidée…
En fait, c’est effectivement assez simple, une fois qu’on le sait :)
Alors voilà, en quelques points, ce qu’il faut faire, exposé de manière simple (ou en tout cas je l’espère) !
ATTENTION cependant : je ne fournirai PAS de support sur ce billet, donc je vous conseille plutôt d’aller sur les forums de Dotclear, l’aide y est toujours rapide et efficace ! ;)

Déjà, pour que cela fonctionne, vous devrez, évidemment, avoir un hébergement suffisamment gros pour accueillir tous vos blogs, et avoir les droits d’administration des noms de domaine désirés pour les faire pointer là où il faut (plus sur ce sujet un peu plus loin).

L’idée, donc, est d’utiliser le système de multiblog de Dotclear afin d’avoir une seule interface d’administration pour plusieurs blogs.
Votre URL d’administration est et restera donc toujours http://mondomaine.tld/dotclear/admin, où mondomaine.tld est un des noms de domaine choisis (ça marchera avec tous, en fait).

1ère étape : installer Dotclear :)

Je pars du principe que vous avez déjà installé un blog Dotclear, ou en tout cas que vous savez le faire, et je vous laisse le faire avant de continuer.

Un blog tout bête par défaut ira très bien, mais le mieux serait de lui donner un id particulier et dans ce cas je vous conseille de le faire en fonction du nom de domaine auquel il se réfèrera (mais restez simple, un mot unique c’est encore le mieux).

2ème étape : tout ranger comme il faut

On partira du principe que vos blogs vont avoir des ressources en commun (thèmes, plugins, medias…) mais il faut noter que cette procédure vaut aussi bien dans le cas d’un monoblog : avoir les fichiers propres au blog bien séparés de ceux de l’admin est simplement une question de bon sens.

En premier lieu, on va donc se débrouiller pour avoir côte à côte, à la racine de votre hébergement, deux dossiers : “dotclear” (qui contiendra toute l’install de dotclear) et “all-blogs”.

Ce second dossier “all-blogs” contiendra plusieurs dossiers : “themes” (vos thèmes, donc, y compris une copie du thème par défaut “default”), “plugins” (les plugins que vous installez, pas ceux par défaut de Dotclear, qui restent là où ils sont), et “public” (qui contiendra généralement vos médias en tout genre, vidéos, images, etc.).

Pour que Dotclear voient les plugins que vous installerez dans ce répertoire, il vous faudra modifier le fichier “config.php” se trouvant dans “dotclear/inc/” en remplaçant :

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

par

// Plugins root - les plugins de base restent en place, les nouveaux vont dans /all-blogs/plugins
define('DC_PLUGINS_ROOT',dirname(__FILE__).'/../plugins'.PATH_SEPARATOR.dirname(__FILE__).'/../../all-blogs/plugins');

De la même manière, pour que Dotclear voit les thèmes et les médias, il vous faut changer quelques préférences dans la page “about:config”, et ce pour tous les blogs que vous aurez par la suite :

public_path: ../all-blogs/public
public_url: /all-blogs/public
themes_path: ../all-blogs/themes
themes_url: /all-blogs/themes

3ème étape : le fichier index.php à la racine

A la racine de votre hébergement, il vous faudra créer un fichier index.php contenant un code similaire à celui-ci, en l’adaptant à vos besoins (en testant en fonction de vos noms de domaine/ids de blogs, donc) :

<?php
    /* placer le blog a la racine : l'identifiant unique par défaut du blog est "default",
    l'identifiant est déduit de l'url appelée,
    les fichiers de dotclear sont dans /dotclear */
    $myBlogId = 'blog1'; // par défaut le blog sera le "blog1"
    $myBlog = $_SERVER['HTTP_HOST']; // on récupère le nom de domaine
    if (preg_match(&quot;/mot1/i&quot;, $myBlog)) { // on cherche si le nom de domaine contient le mot "mot1"
        $myBlogId = 'blog1'; // si oui, alors l'id du blog est "blog1"
    } else if (preg_match("/mot2/", $myBlog)) { // sinon on cherche si le nom de domaine contient le mot "mot2"
        $myBlogId = 'blog2'; // et si oui, alors l'id du blog est "blog2"
    } // etc...
    // Si vous avez beaucoup de cas, il est possible qu'un switch soit plus efficace/rapide, mais je ne suis pas experte...
    define('DC_BLOG_ID',$myBlogId); // définir l'identifiant du blog
    require dirname(__FILE__).'/dotclear/inc/public/prepend.php'; // définir le chemin vers prepend
php?>

4ème étape : les noms de domaine

En ce qui concerne les noms de domaines et l’hébergement, il faudra vous assurer que les noms de domaine pointent vers votre hébergement, pour cela je vous invite à consulter la documentation de votre registrar/hébergeur (selon les cas).

A savoir cependant, si vous souhaitez faire cela dans un sous-répertoire de votre hébergement (si celui-ci vous sert déjà à autre chose et qu’il vous reste de la place), c’est tout à fait possible si vous vous assurez que les noms de domaines pointent vers le bon sous-répertoire (là où vous aurez rangés “dotclear” et “all-blogs” et qui sera donc votre racine pour ces noms de domaine)… :)


Voilà, maintenant vous pouvez créer tous les blogs supplémentaires que vous voulez, leur attribuer des thèmes, les remplir avec du contenu et des médias, installer vos plugins, etc…

Enfin, pour chacun des blogs il faudra que l’adresse entrée dans le champs “URL du blog” de la page “Paramètres du blog” corresponde au format suivant : “http://mondomaine.tld/index.php/” (ou “http://mondomaine.tld/index.php?” si vous êtes en mode “query_string”), “http://mondomaine2.tld/index.php/” (idem), etc.

Pour que personne ne vous voie faire vos petites affaires tout en étant en “conditions réelles” (sur le serveur définitif, donc), je vous conseille d’utiliser le plugin “Private Mode” (et là pour les plus geeks).

A savoir aussi, il existe d’autres méthodes quand on a accès à la configuration Apache du serveur d’hébergement, mais comme ce n’est pas toujours le cas, cette méthode est là ! :)

J’espère que cet article vous aura été utile, et que je n’ai pas raconté trop de bêtises :)

Sinon, les gourous, n’hésitez pas à me reprendre !

Commentaires