Bouton suivant / précédent avec un paramètre de date

Bonjour :slight_smile:

Dans le cadre d’une refonte d’un site auquel je participe nous essayons de développer une fonction de navigation « suivant » / « précédent » un peu particulière.
Je vais essayer d’être clair et concis :slight_smile:

Nous avons une homepage qui affiche les articles & brèves des 2 derniers jours où il y a des publications. Ce qui donne ça en test >> http://blogotheque.hback.net
Le site est en cours de développe donc le header, le player (où BOoz devrait nous donner un coup de main) ne fonctionne pas pour le moment :slight_smile:

Le principe des boutons est « simple »
En fonction de la date du dernier ou du premier article de la page, on place leur date respective en variable dans le lien « précédent » ou « suivant »
Cette variable est récupérée au début de la page de destination via #ENV

Le bouton « précédent » doit afficher les articles des 2 jours précédents ceux affichés sur notre page où il y a eu des publications : il fonctionne :slight_smile:

Le bouton « suivant » doit afficher les artilces des 2 jours suivants ceux affichés sur notre page où il y a eu des publications et c’est de là que viens mon pb.
Si vous vous rendez sur cette page : http://blogotheque.hback.net/spip.php?page=jour_suiv&varjour_suiv=2007-11-18 et que vous cliquez sur le bouton « jours suivants » vous vous rendrez compte que l’on affiche les 2 derniers jours où il y a eu des publications et non les 2 jours suivants le 18 novembre. Après cherché dans tous les sens j’ai du mal à comprendre d’où pourrait venir mon souci :x

Pour éviter de faire un mail de 3 kilomètres voici où vous pourrez trouver les squelettes

Quelqu’un peut il me mettre sur une piste pour que j’arrive à gérer ce petit réglage ?

Par avance merci


Nenelle

Mathieu Genelle a écrit :

Bonjour :slight_smile:

Si tu passes la date dans l'url, alors tu peux utiliser le critere
{jour_relatif=0} les articles du meme jour que la dtae de l'url, et
{age_relatif < 3} les articles de moins de trois jours avant la date
dans l'url.

J’ai essayé avec ces deux paramètres dans mon squelettes jour_suiv.html mais que ce soit jour_relatif ou age_relatif le problème persiste :frowning:

2007/12/4, BoOz <booz.bloog@gmail.com>:

Mathieu Genelle a écrit :

Bonjour :slight_smile:

Si tu passes la date dans l’url, alors tu peux utiliser le critere
{jour_relatif=0} les articles du meme jour que la dtae de l’url, et
{age_relatif < 3} les articles de moins de trois jours avant la date
dans l’url.


Nenelle

Mathieu Genelle wrote:

Quelqu'un peut il me mettre sur une piste pour que j'arrive à gérer ce petit réglage ?

Salut, je n'ai pas regardé ce que tu as fait, mais les flèches sur cette page
Lectures bibliques quotidiennes - Taizé font ce que je pense tu veux faire (seulement ils avancent/regressent une semaine - dimanche à dimanche à la fois).

Tu trouves le squelette qui fait ça ici :
http://www.taize.fr/squelettes/readings.html

(|last_sunday / next_sunday sont des filtres que j'ai placé dans mes_fonctions.php -- mais tu n'auras pas besoin de filtres comme ça, je pense)

Paolo

Mathieu Genelle wrote:
> Pourrais tu m'envoyer ton fichier "mes fonctions" afin que je puisse
> checker tout cela et faire les adaptations nécessaires ?

Comme ça t'intéresse, voici toutes les données nécessaires pour voir comment ça marche (stp répondre à la liste - sinon d'autres qui sont éventuellement intéressés perdent le fil !).

Dans
http://www.taize.fr/squelettes/artnorm.html

la ligne
<INCLURE{fond=#TITRE}{date=#ENV{date}}{lang}{id_article}>

inclut le squelette "readings.html" en transmettant la date :
http://www.taize.fr/squelettes/readings.html

Dans mes_fonctions.php la partie utilisée est :

function last_sunday($mydate) {
$mydate = strtotime($mydate);
$mydate = strtotime("last Sunday", $mydate);
return date('Y-m-d', $mydate);
}
function next_sunday($mydate) {
$mydate = strtotime($mydate);
$mydate = strtotime("next Sunday", $mydate);
// In older versions (PHP 4) use this instead,
// "next Sunday" jumps/ed more than a week ahead:
// $mydate = strtotime($mydate) + (86400);
// $mydate = strtotime("this Sunday", $mydate);
return date('Y-m-d', $mydate);
}
function diffdays($mydate) {
// gives difference in days from present time
// positive result means date in future & vice-versa
return datediff('d', date('Y-m-d'), $mydate);
}

Et pour la fonction datediff j'ai utilisé jusqu'ici la fonction de cette page :
http://www.ilovejackdaniels.com/php/php-datediff-function/

(Mais il y a un bug mentionné par Comment #1 lié au changement d'heure deux fois par an. J'aimerais chercher autre chose. Quelqu'un connaît une fonction PHP qui donne correctement la différence entre deux dates ?)

En fait la partie qui utilise le filtre |diffdays ne sert qu'à limiter la plage de dates consultables (éviter l'explosion du cache entre autres) à 30 jours dans le passé, 40 jours à l'avenir. Si tu n'as pas besoin de ceci, tu peux laisser tomber.

Paolo