Polo Aquarius David, biologeek eClaire Djoh David, biologeek Stefano Foot-parier David, biologeek David, biologeek David, biologeek David, biologeek David, biologeek orientation scolaire Tom blog.imprimante.biz conseil orientation eClaire David, biologeek mirovinben Kelsurf David, biologeek Amine David, biologeek David, biologeek David, biologeek David, biologeek Richard Bruno AntoineD conseil orientation David, biologeek jeanmarie Polo David, biologeek David, biologeek David, biologeek Thomas Rudolf Rabatjoie-tv David, biologeek David Larlet David, biologeek Aquarius Rabatjoie-tv pickupjojo David, biologeek Rabatjoie-tv David, biologeek Siddartha Goudie

j'ai mieux ;)

<ul>
<?php
$news = $blog->getLastNews(10,0);
while ($news->fetch()) :
?>
<li><a href="<?php dcPostURL(); ?>"><?php dcPostTitle(); ?></a></li>
<?php endwhile; ?>
</ul>

getLastNews peut etre configurée comme vous voulez! 10 pour 10 derniers articles, 0 toutes categorie..

2006-07-23 2005-04-30 Informatique Web
Logo associé au billet intitulé Afficher les x derniers billets de Dotclear en page d'accueil

J'ai récemment appris qu'il y avait des personnes encore plus faignantes que moi dans l'informatique. C'est sûr ça fait plaisir (et ça rassure), mais ça aide pas quand on cherche quelque chose qui a déjà été fait! Donc voila, je ne sais pas si ça a déjà été codé et documenté quelque part mais si ça peut servir à quelques uns d'entre vous, c'est déjà ça :-)

Pour ceux qui sont pressés

Il suffit de rajouter ce petit bout de code PHP à votre page d'accueil en vérifiant que la troisième ligne contient bien le chemin vers votre fichier de configuration de Dotclear, normalement si tout se passe bien vous pouvez voir ce que ça va donner en consultant la page d'accueil de ce site.

<?php
define('CONF_ONLY','1');
include('./dotclear/conf/config.php');

@ $db = mysql_pconnect(DB_HOST,DB_USER,DB_PASS);
if(!$db) { echo 'Erreur de connexion'; exit; }

mysql_select_db(DB_DBASE);
$query =
' SELECT post_id,post_titre,post_titre_url,post_dt 
  FROM '.DB_PREFIX.'post 
  ORDER BY post_id DESC LIMIT 5';
$result = mysql_query($query);
$num_results = mysql_num_rows($result);

echo '<ul>';
for($i = 0 ; $i < $num_results ; $i++)
{
  $row = mysql_fetch_array($result);
  $date = explode(' ',$row['post_dt']);
  $date_slash = str_replace('-','/',$date[0]);
  echo '<li><a href="/dotclear/index.php/'.$date_slash.'/'
    .$row['post_id'].'-'.$row['post_titre_url'].'" title="'
    .$row['post_titre'].'">'.$row['post_titre'].'</a></li>';
}
echo '</ul>';
?>

Bug connu, une erreur du type:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource...

Si vous avez cette erreur c'est très probablement que vous utilisez depuis quelques temps déjà Dotclear et que votre fichier de configuration contient la variable DB_BASE à la place de la variable DB_DBASE, il suffit alors de changer la ligne du précédent script mysql_select_db(DB_DBASE); en mysql_select_db(DB_BASE);

Pour ceux qui veulent comprendre

  • La première ligne du script est peut-être la plus mystérieuse pour ceux qui n'ont jamais mis le nez dans le code de Dotclear, elle permet juste de définir CONF_ONLY pour ne pas que le fichier de configuration que l'on appelle à la ligne suivante aille chercher d'autres fichiers qui nous sont inutiles dans le cas présent.
  • On essaye ensuite de se connecter à la base en utilisant les informations issues du fichier de configuration en renvoyant un message en cas d'échec, si vous obtenez ce message, c'est probablement dû au fait que vous n'avez pas entré le bon chemin d'accès au fichier de configuration.
  • On sélectionne la base de donnée de votre blog et on effectue la requête qui va nous permettre d'afficher le titre des liens et de recomposer l'adresse pour accéder au billet qui lui est associé. C'est à cet endroit que vous pouvez spécifier le nombre de billets à afficher, il suffit de remplacer 5 par votre nombre.
  • La liste des billets va être présentée sous forme de liste, il faut dans un premier temps formater la date pour obtenir un adresse correcte et il suffit ensuite d'appeler les bonnes colonnes du tableau renvoyé par la requête à la base de donnée.

Voila pour les bases, vous pouvez maintenant modifier l'affichage à votre convenance en donnant une id à <ul> ou une class aux <li>. Si vous êtes sages la prochaine étape consistera à effectuer une petite jointure pour récupérer la catégorie associée à chaque billet :-).

[HS]: je dois avouer que c'est très déroutant de se replonger dans du PHP après avoir fait du Python, ne serait-ce que pour l'oubli des «; » , mais aussi par la nécessité de passer par des variables intermédiaires... par exemple pour la date j'avais commencé par faire: str_replace('-','/',explode(' ',$row['post_dt'])[0]); qui a superbement planté :D.

[ edit du 3 mai ]: finalement rajouter les catégories c'est pas très compliqué et ça ne mérite pas un nouveau billet :-)

Associer le nom des catégories aux derniers billets

Il y a deux lignes à changer, la première concerne la requête qui doit effectuer une jointure entre la table post et la table catégorie:

$query =
' SELECT post_id,post_titre,post_titre_url,post_dt 
  FROM '.DB_PREFIX.'post 
  ORDER BY post_id DESC LIMIT 5';

devient donc:

$query =
  ' SELECT post.post_id,post.post_titre,post.post_titre_url,post.post_dt,cat.cat_libelle 
  FROM '.DB_PREFIX.'post AS post, '.DB_PREFIX.'categorie AS cat
  WHERE post.cat_id = cat.cat_id
  ORDER BY post.post_id DESC LIMIT 5';

Vous pouvez remarquer la création d'alias (AS) permettant de générer une requête plus lisible, ici on fait une jointure entre le cat_id de la table post et celui de la table catégorie.

Ensuite, il ne reste plus qu'à afficher le libellé de la catégorie du billet de la façon suivante:

echo '<li><a href="/journal/index.php/'.$date_slash.'/'
  .$row['post_id'].'-'.$row['post_titre_url'].'" title="'
  .$row['post_titre'].'">['.$row['cat_libelle'].'] '.$row['post_titre'].'</a></li>';

Et voila, le résultat est toujours consultable en page d'accueil du site.

Afficher les x derniers billets de Dotclear en page d'accueil

J'aurai voulu savoir comment ajouter la date des posts en plus du titre.
Pourriez-vous me donner la marche à suivre ?

2005-10-28

En effet, donc si on se base sur ce code là, la requête devient :

$query =
' SELECT post.post_id,post.post_titre,post.post_titre_url,post.post_dt,cat.cat_libelle
FROM '.DB_PREFIX.'post AS post, '.DB_PREFIX.'categorie AS cat
WHERE post.cat_id = cat.cat_id AND post.post_pub = 1
ORDER BY post.post_id DESC LIMIT 5';

2007-05-07
inedit

Dix Mille mercis pour ce code ; ca fait un moment que je cherchais !

2008-01-11

Bonjour,

J'ai essayé comme vous le proposez au dessus, de coller les lignes dans mon fichier Template.

Les billets récents apparaissent bien SAUF QUE... C'est la pagaille totale : la mise en page est complétement remise à plat... Je vous laisse juger l'impression écran...

img178.imageshack.us/img1...

Si vous allez voir mon site actuellemnt, il n'y a pas de soucis de mise en page en temps normal... Le fond de l'écran doit être noir...

Quel serait la solution ? D'où viendrait le problème ? Sur le Forum DOTCLEAR personne ne me répond...

Merci d'avance

2006-08-24
Spy

et si on désire avoir les commentaires du "dit" billet ?

2006-06-08

@superseb801 : lis.

@Flavien : non je ne pense pas, ou alors il faut au moins l'adapter. D'ailleurs si tu y arrives tu peux poster la solution ici.

2007-04-25
moon

Je n'arrive pas a me connecter à ma base de données, pourtant j'ai bien indiqué le chemin :/

2009-01-26

Ce n'est pas exactement le sujet du billet, mais ça s'en rapproche et peut-être sauras-tu m'aider...
En utilisant les functions de doctlear (v1.2.8), saurais-tu afficher les x derniers billets (ça c'est par défaut), suivis des Y derniers titres des billets suivants ?
En gros, comme sur tuxboard, quoi. Lui aussi sur dotclear.

Merci de ton aide

2008-06-06

Bonjour,
Je confirme que le bout de code proposé dans ce billet fonctionne parfaitement !

Le blog étant dans un sous domaine cela me permet d'afficher les titres des derniers billets sur la page d'accueil du domaine principal. Il est ensuite très facile de reconstruire une adresse asbolue pour pointer sur les billets quelque soit le mode d'affichage des url que l'on a choisi pour dotclear. Je n'ai pas installé le code pour afficher la catégorie. Il est à craindre que la jointure entre les tables post et catégorie charge un peu la base de données ...

merci pour le code. :)

2007-04-29

Je me répond tous seul!
En fait cela est lié au fait que les 5 derniers billets affichés correspondent au 5 dernier crées!
Et donc non au 5 premiers billets visible sur le blog.

2007-12-21
Dorian

Entre deux j'avais trouvé une solution alternative qui consiste à décomposer la date

sscanf($row['post_dt'], "%4s-%2s-%2s", $annee, $mois, $jour);

puis à placer les variables ainsi créées là où je voulais les voir apparaitre.
Ca fonctionne très bien ainsi, mais je vais quand même essayer ta technique ;)

En tout cas, merci pour ton intervention rapide :)

2006-06-06
Banban

Bonjour,

J'ai intégré ce script sur mon site et ça a l'air de fonctionner nikel...

Le problème c'est que mon instinct grandissant de geek me pousse à aller plus loin...

En fait je me butte à la configuration de mon blog : j'ai pour des raisons pratiques des billets hors ligne d'une catégorie qui sont utilisés pour faire des pages fixes indépendantes du système de billets... sauf que bien sûr elles apparaissent quand même dans cette liste.
En gros ce que je voudrais c'est limiter cette liste de billets à ceux en ligne... mais au niveau php je me débrouille pour le comprendre, mais l'écrire c'est une autre chose...
Serait-il possible de me donner une ligne qui fixe l'affichage de chaque ligne à une condition, que le billet soit en ligne ?

Merci d'avance

PS : Super blog... je viens de le découvrir par hasard, je l'ai juste survolé, mais vous pouvez être sûr qu'il restera au chand quelque part dans mes marque-pages :)

2007-05-04

Merci ça marche impeccable sauf un seul truc, je sais pas d'ou ca vient

j'ai un probleme d'accent

le é se transforme en é...

si qqun a une idée

2005-11-24

Merci beaucoup pour toutes ces explications très rapides, très claires donc très efficaces.
J'irai faire un tour sur le site que tu m'indiques et pour ma requete un peu compliquée, c'était juste pour savoir, ce n'est pas grave.
Comme tu as l'air de bien t'y connaitre en Internet, saurais-tu où je peux trouver des exemples de feuille de style pour un nuage de tags ? Car j'ai installer le plugin tag, il fonctionne d'après le peu que j'ai vu, seulement le nuage s'affiche sans tenir compte des occurences des mots. De plus je voudrais limiter le nombre de mots de ce nuage.
Dans tout les cas, merci pour tout.

2006-06-22

Salut Rabatjoie-tv,

> Et sinon, où dois-je modifier si je veux mettre les 6 derniers articles et non les 5 derniers ?

Il suffit de modifier la ligne où il est inscrit LIMIT 5 par LIMIT 6 dans la requête.

> Dernière question, comment faire pour que ca mette les titres en gras ? Juste les titres, pas les catégories.

Modifie :

.$row['post_titre'].'">'.$row['post_titre'].'</a></li>';

en :

.$row['post_titre'].'"><strong>'.$row['post_titre'].'</strong></a></li>';

2006-08-25

Bonjour,

J'ai installé ce code, je l'ai adapté pour mon site et c'est ok. Juste deux questions :
- Est-ce possible de n'afficher la liste qu'à partir du 3ème post, c'est à dire en ne tenant pas compte des 2 permiers articles. Si oui c'est super.
Dans ce cas je vais faire un peu plus compliqué, est-ce possible de ne pas tenir compte du premier article de chaque catégorie ?
- N'étant pas très douée en Internet, je ne sais pas comment je peux retirer les petits symbole devant chaque titre (www.e-tud.com/une/).

Merci d'avance et merci pour ce code très pratique.

2006-06-22

Il me semble bien qu'en page d'accueil tu aies accès aux fonctions de dotclear grâce au mode home.

Je m'étais inspirée d'un exemple pré fait pour faire la page d'accueil de mon site et je n'ai pas fait d'acces direct à la base de données

En tout cas merci pour ce billet qui tombe plutôt bien étant donné que je voulais faire un rappel des derniers posts en première page.

2005-05-09
veda

J'ai trouvé la solution:

SELECT post_id,post_titre,post_titre_url,post_dt FROM '.'dc_'.'post WHERE post_pub = 1 ORDER BY post_dt DESC LIMIT 5';


Reste de problème lié à l'utf8.

En fait je cherche à afficher ce script dans une page du forum punBB qui je crois est en ansi.

Là par contre je ne sais pas encore palier au pb.

2006-04-14

Compliqué ?
Je rappelle que le but est d'afficher les derniers billets en page d'accueil donc on n'a pas accès aux fonctions de Dotclear...

De plus, si tu commences à inclure des fichiers de Dotclear, il y un tas de fonctions dont tu n'as pas besoin pour ce que je veux faire, je pense que ma solution est la plus rapide, mais je peux me tromper, quel fichiers as-tu besoin d'inclure pour que ça marche ?

Merci pour les compliments :)

2005-05-04

@Aquarius : bon je t'explique rapidement comment faire, ça doit se trouver détaillé un peu partout. Créer un tableau associatif entre les chiffres des mois et leur nom puis recomposer la date.

@Kelsurf : c'est un problème d'encodage de caractères, probablement au niveau du charset utilisé...

2005-11-24
Banban

> N'hésite pas à demander plus de détails

Bon j'avoue là que je suis totalement dépassé...

Le problème c'est déjà que je trouve plein de différences entre le code initial et celui que tu me proposes.

Voilà ce que j'ai (le code présent dans ce billet à quelques détails près :

<?php
define('CONF_ONLY','1');
include('/dotclear/conf/config.php');

@ $db = mysql_pconnect(DB_HOST,DB_USER,DB_PASS);
if(!$db) { echo 'Erreur de connexion'; exit; }

mysql_select_db(DB_DBASE);
$query =
' SELECT post.post_id,post.post_titre,post.post_titre_url,post.post_dt,cat.cat_libelle
FROM '.DB_PREFIX.'post AS post, '.DB_PREFIX.'categorie AS cat
WHERE post.cat_id = cat.cat_id
ORDER BY post.post_id DESC LIMIT 5';
$result = mysql_query($query);
$num_results = mysql_num_rows($result);

echo '<ul>';
for($i = 0 ; $i < $num_results ; $i++)
{
$row = mysql_fetch_array($result);
$date = explode(' ',$row['post_dt']);
$date_slash = str_replace('-','/',$date[0]);

echo '<a href="/dotclear/index.php/?'.$date_slash.'/'
.$row['post_id'].'-'.$row['post_titre_url'].'" title="'
.$row['post_titre'].'">'.$row['post_titre'].'</a><br>';
}
echo '</ul>';
?>

Ce qu'il y a dans le "$query" est assez différent, j'imagine que tu as juste simplifié le code, mais moi je ne m'y retrouve pas.

Je précise que le code ci-dessus marche parfaitement à l'exception des billets hors lignes qui sont affichés au même titre que ceux en ligne.

Encore merci de ton aide !!

2007-05-06
jeanmarie

Salut,

merci pour ce script bien pratique...

Je l'ai adapté pour afficher uniquement le titre, le chapo et le contenu du billet (ce dernier apparaissant avec un effet slide jQuery) du dernier article.

Par contre, j'aimerai n'afficher le dernier billet que d'une catégorie.

jean marie

2009-01-26

Je souhaite mettre le nom de l'auteur du billet, je suppose que l'on procède comme les catégories... mais j'aurais besoin d'un coup de main pour la syntaxe exacte

2007-09-27

merci
j'ai essaye de le pofiner pour ajouter les chapos :)

for($i = 0 ; $i < $num_results ; $i++)
{
$row = mysql_fetch_array($result);
$date = explode(' ',$row['post_dt']);
$date_slash = str_replace('-','/',$date[0]);

echo '<tr>
<td colspan="2" align="center"><font color="#000000" size="-2" face="Tahoma, Verdana, Arial, sans-serif"><strong>'.$row['post_titre'].'</strong></font></td>
</tr>
<tr>
<td width="50%"><font color="#000000" size="-2" face="Tahoma, Verdana, Arial, sans-serif">'.$row['post_dt'].'</font></td>
<td width="50%" align="right"><font color="#FF0000" size="-2" face="Tahoma, Verdana, Arial, sans-serif"><em>'.$row['cat_libelle'].'</em></font></td>
</tr>
<tr>
<td colspan="2"><font color="#000000" size="-2" face="Tahoma, Verdana, Arial, sans-serif">';

function resume_xmots($MaChaine,$xmots)
{
$ChaineTab=explode(" ",$MaChaine);
for($n=0;$n<$xmots;$n++)
{
$NouvelleChaine.=" "."$ChaineTab[$n]";
}
return $NouvelleChaine;
}

echo resume_xmots($row['post_chapo'],20) ;
echo' ...</font></td>
</tr>';

}

et j'obtient ca
Fatal error: Cannot redeclare resume_xmots() (previously declared in /homepages/6/d147305526/htdocs/imode/index.php:56) in /homepages/6/d147305526/htdocs/imode/index.php on line 56
:(

ligne 56 = function resume_xmots($MaChaine,$xmots)

aurais tu ZE solution pour un pauvre petit phpien comme moi ?

2006-03-09

@Stefano : tu peux réutiliser la requête du commentaire 48 de cette page, en l'adaptant avec la table user. Tu crées des alias sur les deux tables avec AS et après tu récupères les champs dont tu as besoin.

Si tu trouves la réponse, tu peux la poster ici, sinon je t'aide un peu plus ;-).

2008-02-08
yhugo

Salut,

Merci David pour ce script ... je suis en train de m'en servir pour une boutique en ligne sur laquelle je travaille actuellement.

C'est bien pratique, j'utilise DotClear pour écrire et gérer les news pour ensuite les afficher dans l'interface de la boutique ...

Salutations



yhugo

2006-08-28
Scalp

Salut, Pourquoi ca marche chez tout le monde sauf chez moi :,) moi ca m'affiche:
'; for($i = 0 ; $i < $num_results ; $i++) { $row = mysql_fetch_array($result); $date = explode(' ',$row['post_dt']); $date_slash = str_replace('-','/',$date[0]); echo ''.$row['post_titre'].'
'; } echo ''; ?>

d'ou vien l'erreur?

2005-11-24

Bonjour

ca y est j'ai résolu le problème !

C'est dans mon fichier template, depuis le fichier qui était original, je ne sais pas pourquoi le fichier est modifié avec des liens directs.
Par ex. quand il y avait 'rss' bien sur mon fichier ca mettait un chemain d'accès complet pour finir en '... ss'. Bizarre

Sinon j'ai remarqué un autre truc peut etre utile à d'autres :

moi le lien ne devait pas être :

href="/journal/index.php/

Mais :

href="/"dossier de mon blog"/index.php/

Et sinon, où dois-je modifier si je veux mettre les 6 derniers articles et non les 5 derniers ?

Dernière question, comment faire pour que ca mette les titres en gras ? Juste les titres, pas les catégories.

Merci

2006-08-25

Ah non en fait j'ai trouvé pour ne pas tenir compte des premiers posts écrire: ORDER BY post.post_id DESC LIMIT 2, 10';
2 représentant le nombre de post à ne pas tenir compte.

2006-06-22

Merci beaucoup David !

2006-08-29

Il me semble que tu as déjà défini une telle fonction avant et c'est la raison pour laquelle il ne veut pas la redéfinir... en fait tu essayes de créer une fonction dans une boucle donc la première fois ça passe et ensuite il aime pas trop. Tu devrais essayer de sortir la définition de la fonction de la boucle.

ps : les tableaux c'est le mal ! Je te conseille de jetter un coup d'œil à openweb.eu.org ;)

2006-03-09

Heureux d'avoir pu servir :)

2005-05-01

Pour rajouter la date en brut (pas testé) :

echo '<li><a href="/dotclear/index.php/'.$date_slash.'/'
.$row['post_id'].'-'.$row['post_titre_url'].'" title="'
.$row['post_titre'].'">'.date[0].' '.$row['post_titre'].'</a></li>';

Après ça dépend comment tu veux l'afficher, généralement un peu de str_replace devrait te suffire, disons que là tu devrais l'afficher sous la forme brute qui est 06-06-06 pour aujourd'hui ;)

2006-06-06

Salut Moon,

recuperes-tu le champ dans la base avec le SELECT?

Si non, il faut rajouter post_dt en plus des champs dont tu as besoin...
Ensuite, tu peux l'afficher comme tu veux.
Ce qui donnera un truc du genre:
SELECT post_titre,post_titre_url,post_chapo,post_content,post_dt

J'espère que ça peut t'aider...

2009-02-03

Franchement très bien ça, merci ! :-p

2005-05-01
Jérémy

Bonjour,
très chouette mais j'ai un problème de chemin que je n'arrive pas à résoudre. C'est mon coté newbie probablement...
Voilà l'erreur quand on clique sur le lien :

The requested URL /dotclear/index.php/2006/09/18/84-un-rapport-annuel-sur-les-bailleurs-sociaux was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

2006-09-24
Dorian

>David disait : "Il suffit d'utiliser la variable $date[0] qui contient la date à reformater après selon l'affichage désiré."

Malgré cette explication, Je ne saisi pas très bien comment formater la date... Où et comment indiquer les paramètres ?

Sinon, le reste fonctionne très bien, merci beaucoup et bonne continuation !

2006-06-04

Bonjour,

j'aimerai juste que le 1er billet apparaisse tjs en haut de tous les autres, donc en page d'accueil, mais il ne faut pas que les commentaires soient affichés.

Je suis sous 1.2.7.1

Merci de votre réponse

2007-10-29

Je suis malheureusement très mauvais en php, et j'aurai voulu avoir la date comme ceci par exemple : 09 novembre 2005

Quel est le code à ajouter ?

Merci encore pour votre réponse.

2005-11-09

Génial ! C'est dingue comme de vieux billets peuvent servir looongtemps ! Merci :)

2007-08-09
veda

Très pratique ce bout de script.

J'ai par contre un souci à l'identique de Kelsurf avec le é se transformant en é...

Je crois que c'est dû au fait que mon blog est en utf-8 comment faire?

Le truc genant c'est qu'on récupére les derniers posts en fonction du post_id, ce qui fait que dans la liste on a même les billets qui sont offline.

De plus j'ai l'habitude de creer une suite de billet mais de les publier dans un ordre différent.

Il faudrait faire un select en ordonnant sur la date de publication tout en virant les billets qui sont offlines.

Quelqu'un a une idée pour modifier le select?

2006-04-14

> saurais-tu où je peux trouver des exemples de feuille de style pour un nuage de tags ?

Les nuages de tags avec Dotclear sont généralement conçus pour placer des spans autour des mots-clé ressemblant à : <span class="level-X">mot-clé</span> avec X allant de 1 à 5.

Il suffit ensuite de styler ces spans dans la feuille de style, par exemple :

span.level-1 {font-size:60%}
span.level-2 {font-size:80%}
span.level-3 {font-size:100%}
span.level-4 {font-size:120%}
span.level-5 {font-size:140%}

Pour les autres questions, je ne l'utilise pas donc je ne peux pas trop t'aider.

2006-06-22
Flavien

Est-ce que ca marche aussi avec Dotclear 2 ?

2007-04-25

Pour le problème de charset, il faut soit que tu convertisse le titre des billets en iso (qui doit être utilisé par punBB) soit que tu utilises punBB en utf-8 (je sais pas si c'est possible !). Le plus simple est évidemment de convertir les titres en iso avec une fonction php.

Tu peux essayer de trouver ton bonheur sur : fr.php.net/htmlentities

Bonne continuation :)

2006-04-14

En fait j'ai la même erreur que Scalp, c'est à dire que ça m'affiche:

'; for($i = 0 ; $i < $num_results ; $i++) { $row = mysql_fetch_array($result); $date = explode(' ',$row['post_dt']); $date_slash = str_replace('-','/',$date[0]); echo ''.$row['post_titre'].'
'; } echo ''; ?>

J'ai pourtant bien vérifier le chemin d'accès au fichier config.php, et j'ai bien '<ul>' et non pas '<ul?>'...

As tu une idée d'où ça pourrait venir?

2006-06-28

> Serait-il possible de me donner une ligne qui fixe l'affichage de chaque ligne à une condition, que le billet soit en ligne ?

Tiens j'ai oublié de publier la modification que j'avais effectué pour mon cas pour n'afficher que les billets "en ligne". Voici ma requête actuelle :

$query = "
SELECT p.post_titre AS titre, c.cat_libelle AS cat, p.post_titre_url AS url
FROM ".DB_PREFIX."post AS p, ".DB_PREFIX."categorie AS c
WHERE p.cat_id = c.cat_id AND p.post_pub = 1 ".$where."
ORDER BY p.post_dt DESC LIMIT ".$limit;

La partie importante pour la publication est le "p.post_pub = 1". N'hésite pas à demander plus de détails si tu ne t'en sors pas.

PS : merci :-)

2007-05-04

Salut ! Bravo pour le petit script ! C'est désormais mon premier bout de php sur mon site ! ça se fête ;)

Mais j'ai un problème, et comme je suis un novice total en la matière... je ne trouve pas quoi modifier :'(

Ton code me donne un lien comme ça :

www.antoinedoyen.net/boug...

or, moi, il me faut :

www.antoinedoyen.net/boug...

Bref : comment est-ce que je "faire rajouter" le petit point d'interrogation juste après .php ? Merci d'avance !

Et encore bravo pour le code. :)

2005-12-18

eClaire, il semblerait bien que l'exemple pré-fait était le mien si je ne me trompe pas ;)
cf. biosphere.biologeek.com/2...

Je sais donc un peu de quoi je parle et je suis en train de mettre en place un mode home aussi... mais pas pour la page d'accueil du site, stay tunned =)

2005-05-10

mdr, désolée

je dois être un peu à l'ouest alors :'(
pour moi ta page d'accueil était la home de dotclear, m'en vais faire un somme ;)

2005-05-10
moon

Hello,

je n'arrive pas à afficher la date sur l'URL, qlq'un peut-t-il m'expliquer la raison?

merci pour votre reponse.

2009-02-02

Salut,

> Est-ce possible de n'afficher la liste qu'à partir du 3ème post, c'est à dire en ne tenant pas compte des 2 permiers articles. Si oui c'est super.

Oui, tu as trouvé seul en plus, génial :)

> Dans ce cas je vais faire un peu plus compliqué, est-ce possible de ne pas tenir compte du premier article de chaque catégorie ?

Mmh ça c'est beaucoup plus complexe, pas impossible mais prise de tête en gros la démarche à adopter c'est de faire une requête par catégorie puis d'enlever la première entrée puis de regrouper tous les résultats de toutes les catégories pour les classer par date. C'est pas vraiment léger pour la base de données non plus... à toi de voir mais j'ai pas vraiment le temps (bon d'accord et l'envie ;) de m'y mettre là.

> N'étant pas très douée en Internet, je ne sais pas comment je peux retirer les petits symbole devant chaque titre

C'est dans la css (www.e-tud.com/une//themes...), il faut retirer la ligne :

list-style-image:url('images/ul.gif');

dans le bloc ul{}

Par contre ça t'enlève les images pour toutes les listes de ta page (voire de ton site) et ça les remplace par un point. Si tu souhaites aussi enlever le point, rajoute list-style-type:none; dans le même bloc. Ici aussi, les modifications s'appliquent à toutes les pages contenant la css.

À ce sujet le code html de ton site n'est pas vraiment « propre », de bons conseils à ce sujet sont prodigués sur openweb.eu.org/

2006-06-22
jeanmarie

Salut,

bon, un voisin de bureau ma montré la réponse (on ne soupçonne pas toujours les ressources qu'on a à proximité :) ), il suffit d'un WHERE bien placé et ça roule..

Du coup, ca donne ca (dans mon cas, je pioche dans la 2e catégorie):

$query =
' SELECT post_titre,post_titre_url,post_chapo,post_content,cat_id
FROM '.DB_PREFIX.'post
WHERE cat_id = 2
ORDER BY post_id DESC LIMIT 1';

Merci pour ce petit script bien efficace...

Bonne continuation...

jean marie

2009-01-27

Il suffit d'utiliser la variable $date[0] qui contient la date à reformater après selon l'affichage désiré.

2005-11-02

Bonjour Thomas,

Dans ce cas, je trouve qu'il est plus simple de mettre ce premier billet directement dans le template non ?

Bon courage !

2007-10-29

voici une version personnalisée par mes soins pour DC2. Il est destiné à mon portail qui n'est pas en UTF8 et propose les titres des billets sous forme d'une liste à puces et avec la date au format jj/mm/aaaa

<?php
# version 1.0b
$config = '../dc2/inc/config.php';
$blogid = 'default';
$nbnews = '10';
$title = '<h4>Les billets les plus récents...</h4>';
#--------
define('CONF_ONLY','1');
include($config);
@ $db = mysql_connect(DC_DBHOST,DC_DBUSER,DC_DBPASSWORD);
if(!$db) { return; }
mysql_select_db(DC_DBNAME);
$query =
' SELECT blog_url
FROM dc_blog
WHERE blog_id = "'.$blogid.'"';
$result = mysql_query($query);
$url = mysql_fetch_array($result);
$query =
' SELECT *
FROM dc_post
WHERE blog_id = "'.$blogid.'" AND post_status = "1" AND post_type = "post" AND post_password IS NULL
ORDER BY post_dt DESC LIMIT '.$nbnews;
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
#--------
echo $title;
echo '<ul>';
for($i = 0 ; $i < $num_results ; $i++)
{
$row = mysql_fetch_array($result);
$date = explode('-',$row['post_dt']);
$day = explode(' ',$date[2]);
echo '<li>'.$day[0].'/'.$date[1].'/'.$date[0].' : <a href="'.$url[0].'post/'.$row['post_url'].'">'.$row['post_title'].'</a></li>';
}
echo '</ul>';
?>

2007-05-12

Pour cette solution il faut être dans l'environnement du blog sinon tu vas avoir du mal à récupérer l'objet $blog non ? Or, ce n'est pas l'objectif recherché ;)

2006-07-23
Banban

Au fait, j'ai oublié de te remercier, le code du commentaire #48 fonctionne parfaitement.

Bonne continuation !

2007-06-04
marcolas

Bonjour
Et si je veux, en prime, ajouter le chapeau s'il existe ou le contenu si le chapeau est inexistant, comment je fais ?

Merci en tout cas pour l'astuce :)

Marc

2008-11-12

Ça sent fortement le point d'interrogation placé au mauvais endroit :

echo '<ul>'; c'est bon par contre

echo '<ul?>'; ça ferme le script php et il considère la suite comme du texte...

2005-11-24
superseb801

Serieux les gars, y a personne qui peut être clair?? Franchement je suis peut-être un nab mais le php orienté objet ça me saoule à mort, il y a vingt fois trop de pages... Donc si quelqu'un pouvait dire dans quelle page exactement il faut rajouter quoi parce que c'est vraiment pas le truc sur le quel je veux passer une heure.
Je suis sur que je suis pas le seul donc si je trouve la solution je la mettrai!

2007-04-25
michel gook

vous savez si c'est possible de laisserun seul billet permanent en page d'accueil sur dot clear ????

2008-02-12
kim

POur répondre à Sidarta...

Il y a un p'tit bug : il manque un ptit ? dans la ligne echo ...


<?php
$rs = $blog->getLastNews(7,0);
while ($rs->fetch())
{
echo '<li><a href="index.php'.'?'.$rs->f('postyear').'/'.$rs->f('postmonth').'/'.$rs->f('postday').'/'.$rs->f('post_id').
'-'.$rs->f('post_titre_url').'" title="'.$rs->f('post_titre').'">'.$rs->f('post_titre').'</a></li>';
}
?>

Autrement 'est super simple à utiliser... trop simple peut-être ?
Moi je l'ai inclure directement dans le template.php du theme comme ceci
<div id="lastposts">
<h2>Derniers billets</h2>
<?php .... ?>
</div>

2007-11-22

Merci pour ta contribution mirovinben !

2007-05-15

Bonjour,
J'ai la version 1.2.7. Je voudrais me compliquer la vie et afficher les derniers post du même rédacteur. voici le bout de code en question :

$sql = 'SELECT * FROM `'.DB_PREFIX.'post` WHERE `cat_id` =3 AND `post_pub` =1 ORDER BY `post_id` DESC LIMIT 10;';

je voudrais donc ajouter aussi la condition 'SELECT * FROM `'.DB_PREFIX.'user` WHERE `user_id` =nom rédacteur

Je ne m'y connait pas beaucoup et alors je vous pose la question comment lier les deux conditions ?


Je vous remercie par avance.

2008-02-08

Oula, un peu compliqué tout ca, je te propose un peu plus simple en se servant des fonctions Dotclear .. tant qu'à faire, autant ne pas ré-inventer la roue ;-)

<?php
$rs = $blog->getLastNews(10,0);
while ($rs->fetch()) {
echo '&lt;li>&lt;a href="/index.php/'.$rs->f('postyear').'/'.$rs->f('postmonth').'/'.$rs->f('postday').'/'.$rs->f('post_id').
'-'.$rs->f('post_titre_url').'" title="'.$rs->f('post_titre').'">'.$rs->f('post_titre').'&lt;/a>&lt;/li>';
}
?>
Et en plus, en regardant le fichier functions.php, un tas d'option est présent !!

Super le design du site, bravo !

2005-05-04

Merci beaucoup, c'est exactement ce que je cherchais :)

2006-06-27

@michel gook : tout est possible :-)

Le plus simple est à mon avis de modifier le template d'index en incluant le html en question dedans. S'il faut récupérer un vrai billet ça demande plus de code mais ça reste possible.

2008-02-12

Bonjour,
merci pour ce plugin!
J'avais un petit problème car j'utilise la personalisation des urls pour avoir url plus clean.
Mais un peu de modif et c'etait réglé!

Par contre j'aimerais comprendre comment se passe l'ordre d'affichage des 5 derniers billets car dans mon cas il sont pas dans l'ordre!

Merci d'avance!

2007-12-14

Salut Antoine,

Il suffit de modifier :
echo '<li><a href="/dotclear/index.php/'.$date_slash.'/'

en :
echo '<li><a href="/dotclear/index.php?'.$date_slash.'/'

Bonne continuation :)

2005-12-19