Projets « Campagnes de tests « RC5 livrée - test de yacs 10.2.12, alias yacs Martin RC 5 « dysfonctionnement "neighbours" pour les pages classées «
dysfonctionnement "neighbours" pour les pages classées
Ok trouvé une erreur dans articles.php get_previous_url() et get_next_url().
prenons le cas d'une section qui affiche les pages par ordre d'édition.
Pour le lien "next" la requête demande :
les articles de rang supérieur ou égale ET de date d'édition inférieure.
alors qu'il faut demander :
les articles de rang supérieur OU (les articles de même rang ET de date d'édition inférieure)
voici le correctif pour get_previous_url
// depending on selected sequence
if($order == 'edition') {
$match = "articles.rank < ".SQL::escape($item['rank'])." OR (articles.edit_date > '".SQL::escape($item['edit_date'])."' AND articles.rank = ".SQL::escape($item['rank'])." )";
$order = 'articles.rank DESC, articles.edit_date, articles.title';
} elseif($order == 'publication') {
$match = "articles.rank < ".SQL::escape($item['rank'])." OR articles.publish_date > '".SQL::escape($item['publish_date'])."' AND articles.rank = ".SQL::escape($item['rank'])." )";
$order = 'articles.rank DESC, articles.publish_date, articles.title';
} elseif($order == 'rating') {
$match = "articles.rank < ".SQL::escape($item['rank'])." OR articles.rating_sum > ".SQL::escape($item['rating_sum'])." AND articles.rank = ".SQL::escape($item['rank'])." )";
$order = 'articles.rank DESC, articles.rating_sum, articles.edit_date';
} elseif($order == 'title') {
$match = "articles.rank < ".SQL::escape($item['rank'])." OR articles.title < '".SQL::escape($item['title'])."' AND articles.rank = ".SQL::escape($item['rank'])." )";
$order = 'articles.rank DESC, articles.title DESC';
} else
return "unknown order '".$order."'";
et pour get_next_url :
// depending on selected sequence
if($order == 'edition') {
$match = "articles.rank > ".SQL::escape($item['rank'])." OR (articles.edit_date < '".SQL::escape($item['edit_date'])."' AND articles.rank = ".SQL::escape($item['rank'])." )";
$order = 'articles.rank, articles.edit_date DESC, articles.title';
} elseif($order == 'publication') {
$match = "articles.rank > ".SQL::escape($item['rank'])." OR (articles.publish_date < '".SQL::escape($item['publish_date'])."' AND articles.rank = ".SQL::escape($item['rank'])." )";
$order = 'articles.rank, articles.publish_date DESC, articles.title';
} elseif($order == 'rating') {
$match = "articles.rank > ".SQL::escape($item['rank'])." OR articles.rating_sum < ".SQL::escape($item['rating_sum'])." AND articles.rank = ".SQL::escape($item['rank'])." )";
$order = 'articles.rank, articles.rating_sum DESC, articles.edit_date DESC';
} elseif($order == 'title') {
$match = "articles.rank > ".SQL::escape($item['rank'])." OR articles.title > '".SQL::escape($item['title'])."' AND articles.rank = ".SQL::escape($item['rank'])." )";
$order = 'articles.rank, articles.title';
} else
return "unknown order '".$order."'";
by Alexis Raimbault on Mar. 9 2010