Si votre site et Dotclear partagent le même espace

Par « partagent le même espace », j'entends que les fichiers de Dotclear sont accessibles depuis l'endroit où vous voulez placer les articles. Il est également possible d'utiliser cette méthode si il n'y a pas d'accès au fichier de configuration de Dotclear, mais dans ce cas on ne pourra pas se servir de la couche d'abstraction fournie par le moteur de blog, et il aurait fallut faire les requêtes « en dur ».

Dans notre cas, il suffit d'inclure les fichiers de Dotclear et de jouer avec l'API :

<?php
define('CONF_ONLY','1');
include_once('./blog/inc/config.php');
include_once('./blog/inc/clearbricks/dblayer/dblayer.php');
try
{
  @$db = dbLayer::init(DC_DBDRIVER,DC_DBHOST,DC_DBNAME,DC_DBUSER,DC_DBPASSWORD,0);
  @$conn = $db->db_connect(DC_DBHOST,DC_DBUSER,DC_DBPASSWORD,DC_DBNAME);
}
catch (Exception $e)
{
  $db = '';
  echo 'Erreur de connexion';
}
 
if(!$db)
{
  //exit;
}
else
{
  $query =
  ' SELECT post_id,post_title,post_url
    FROM '.DC_DBPREFIX.'post
    WHERE post_status = \'1\'
    ORDER BY post_dt DESC LIMIT 5';
  $result = $db->db_query($conn,$query);
  $num_results = $db->db_num_rows($result);
 
  echo '<ul>';
  for($i = 0 ; $i < $num_results ; $i++)
  {
    $row = $db->db_fetch_assoc($result);
    $row['post_title'] = htmlspecialchars($row['post_title']);
    echo '<li><a href="./blog/index.php/post/'.$row['post_url'].'" title="'.$row['post_title'].'">'.$row['post_title'].'</a></li>';
  }
  echo '</ul>';
  $db->db_close($conn);
}
?>

La requête ici n'affiche que les titres, triés par date de publication, mais on peut la modifier pour qu'elle renvoie plus d'informations.

Si les fichiers de Dotclear ne sont pas accessibles, et la base non plus d'ailleurs

Dans ce cas, je suppose que le flux est quand même accessible, au minimum, nous allons récupérer le flux RSS du blog et le traiter. Pour ça on va utiliser un logiciel qui - il me semble - n'est plus maintenu, mais qui fait toujours très bien son travail : http://magpierss.sourceforge.net/

<?php
require_once('./magpierss/rss_fetch.inc');

define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');

$url = "http://mathedit.free.fr/blog/index.php/feed/rss2";
$rss = fetch_rss($url);

$max_items = 5;
$i = 0;

foreach ($rss->items as $item )
{
    if ($i>$max_items)
        break;

    $title = $item['title'];
    $url = $item['link'];
    $summary = substr(strip_tags($item['summary']),0,100);
    echo '<p>'.$summary.' <a href="'.$url.'">lire</a></p>';

    $i++;
}

?>

Voilà c'est tout, n'oubliez pas d'encapsuler tout ça dans une classe pour la forme, et amusez vous bien ;)