En effet DotClear2 ne gère aucuns tag META-KEYWORDS ou META-DESCRIPTION, ce qui est bien dommage. En effet, même si les keywords ne servent plus à grand chose aujourd'hui dans le domaine de l'indexation, le champs description lui est utilisé par les moteurs pour afficher un résumé de la page indéxée.

Je vous propose donc ici un petit hack de DotClear2 afin de gérer ces 2 tags...

Commençons par le plus simple...

Mettre la liste des tags d'un post dans le champ META-KEYWORDS de sa page...

Rien de plus simple, éditez le template affichant les posts de votre thème (posts.html) et rajoutez dans le header le code suivant :

  <meta name="keywords" content="<tpl:EntryMetaData type="tag">{{tpl:MetaID}} </tpl:EntryMetaData>"/>

Trop dur hein ? :)

Maintenant on va faire un peu plus compliqué puisqu'il est nécessaire de modifier le code de DotClear2 afin de générer un résumé du post s'il n'a pas de chapo...

Resumé dans le champs META-DESCRIPTION

  • Editez le fichier inc/core/class.dc.rs.extensions.php.
  • Rajoutez une fonction getSummary après la fonction getExcerpt.

Voici le code de cette fonction :

 public static function getSummary(&$rs,$absolute_urls=false)
        {
          $excerpt = $rs->post_excerpt_xhtml;
          $content = $rs->post_content_xhtml;

          if ($excerpt == '') {
            $content = substr($content, 0, 1000);
            $content = html_entity_decode($content);
            $content = preg_replace("/<.*?>/", " ", $content);
            $content = htmlentities($content, ENT_COMPAT, "UTF-8");
            $content = preg_replace("/[^\w&',.;:!\? ]/", " ", $content);
            $content = preg_replace("/[ ]+/", " ", $content);

            $words = explode(" ", $content);
            $limit = 50 < sizeof($words) ? 50 : sizeof($words);
            for ($i = 0; $i < $limit; $i++) {
              $excerpt = $excerpt . " " . $words[$i];
            }
          } else {
            $excerpt = html_entity_decode($excerpt);
            $excerpt = preg_replace("/<.*?>/", " ", $excerpt);
            $excerpt = htmlentities($excerpt, ENT_COMPAT, "UTF-8");
            $excerpt = preg_replace("/[ ]+/", " ", $excerpt);
          }
            return $excerpt;
        }

Ensuite on utilisera cette fonction dans notre template pour remplir le champ META-DESCRIPTION. Pour ce faire il faut définir cette fonction comme étant utilisable dans les templates. Pour ce faire, editez : inc public/class.dc.template.php et, après la ligne :

$this->addValue('EntryExcerpt',array($this,'EntryExcerpt'));

rajoutez la ligne suivante :

$this->addValue('EntrySummary',array($this,'EntrySummary'));

Editez ensuite à nouveau votre fichier post.html et rajoutez sous la ligne précédement rajoutée la ligne suivante :

<meta name="description" content="{{tpl:EntrySummary}}"/>