[Plume CMS - users] tris successifs/multiples dans la fonction getResources

2 views
Skip to first unread message

Melody Nelson

unread,
Apr 23, 2010, 1:04:22 AM4/23/10
to Plume CMS - users
salut à vous,

ça fait longtemps que je n'ai pas fait appel à vos lumières !

j'aimerais ajouter un second tri à la fonction getResources (dans
lib.frontend.php)

par défaut, ça se présente comme ça (enfin, je crois, je ne sais plus
si j'ai fait des modifs ou pas) :

function getResources($category='', $limit=10, $type='', $page=1,
$order='ORDER BY %sresources.publicationdate
DESC')

j'aimerais pouvoir indiquer 2 ordres de tri, j'ai tenté ma chance avec
ça :

function getResources($category='', $limit=10, $type='', $page=1,
$order='ORDER BY %resources.subtype_id DESC,
%sresources.publicationdate DESC')

mais c'est pas une bonne idée car le message suivant est affiché (et
la liste des ressources affichée en dessous semble aléatoire ou
hasardeuse) :

Warning: sprintf() [function.sprintf]: Too few arguments in blablabla/
manager/inc/lib.frontend.php on line 2137

comment puis-je faire ?

petite mise en contexte de ma question : j'aimerais arriver à faire ce
tri, et si possible ne l'appliquer qu'à la boucle $res de ma page
d'accueil... l'idée c'est que je n'utilise que des brèves associées à
la rubrique "accueil" et j'aimerais les trier par "priorité" puis par
date... la notion de priorité n'existant pas dans plume, j'ai créé un
sous-type de ressource "brève prioritaire" (c'est pour cette raison
que j'aimerais que le premier tri porte sur subtype_id)

merci

--
===============================================================
Documentation : http://pxsystem.sourceforge.net/fr/docs/ToC.html
===============================================================
Vous recevez ce message car vous êtes membre du groupe de discussion "Plume CMS - users".
¤ Pour ajouter un message à ce groupe, veuillez envoyer un courriel à plume-c...@googlegroups.com
¤ Pour vous désabonner de ce groupe, veuillez envoyer un courriel à plume-cms-use...@googlegroups.com
¤ Pour davantage d'options veuillez vous rendre sur la page Web du groupe : http://groups.google.com/group/plume-cms-users
===============================================================
You received this message because you are subscribed to the Google Groups "Plume CMS - users" group.
¤ To post to this group, send email to plume-c...@googlegroups.com
¤ To unsubscribe from this group, send email to plume-cms-use...@googlegroups.com

Loic d'Anterroches

unread,
Apr 23, 2010, 5:19:15 AM4/23/10
to plume-c...@googlegroups.com
Melody Nelson wrote:
> salut à vous,
>
> ça fait longtemps que je n'ai pas fait appel à vos lumières !
>
> j'aimerais ajouter un second tri à la fonction getResources (dans
> lib.frontend.php)
>
> par défaut, ça se présente comme ça (enfin, je crois, je ne sais plus
> si j'ai fait des modifs ou pas) :
>
> function getResources($category='', $limit=10, $type='', $page=1,
> $order='ORDER BY %sresources.publicationdate
> DESC')
>
> j'aimerais pouvoir indiquer 2 ordres de tri, j'ai tenté ma chance avec
> ça :
>
> function getResources($category='', $limit=10, $type='', $page=1,
> $order='ORDER BY %resources.subtype_id DESC,
> %sresources.publicationdate DESC')
>
> mais c'est pas une bonne idée car le message suivant est affiché (et
> la liste des ressources affichée en dessous semble aléatoire ou
> hasardeuse) :

$order='ORDER BY %1$sresources.subtype_id DESC,
%1$sresources.publicationdate DESC'

Tu as une unique valeur (le prefix de tes tables) que tu veux mettre
dans 2 endroits (les '%s'). Donc quand tu mets:

$order='ORDER BY %sresources.subtype_id DESC,
%sresources.publicationdate DESC'

Il répond: problème, une valeur en entrée et 2 valeurs à substituer.

Quand tu mets %1$s au lieu de %s tu dis "prends la première valeur".
Donc, si tu demandes 2 fois la première valeur, hop, cela fonctionne.

loïc

--
Indefero, project management & code hosting - http://www.indefero.net
Pluf PHP5 Framework inspired by Django - http://www.pluf.org

Melody Nelson

unread,
Apr 23, 2010, 6:47:07 PM4/23/10
to Plume CMS - users
salut Loïc,

je viens d'essayer... pour ne pas modifier lib.frontend et que cette
modif ait des répercussions sur le fonctionnement global de Plume,
j'ai créé une fonction dans manager/tools/mondossier/register.php

quand je modifie le tri comme tu l'as indiqué, ça me renvoit cette
erreur :

Fatal error: Call to a member function EOF() on a non-object in blabla/
manager/templates/default/category_homepage_test.php on line 83

NB : avec un tri "simple", la fonction marche correctement

voilà le code que j'utilise dans register.php (quasi identique à
libfrontend)

function pxGetHomeNews($limit=5, $type='', $category='',
$return=false)
{
$result = $GLOBALS['_PX_render']['last'] =
getResourcesHome($category,
$limit, $type, 1);
if ($return) return $result;
}


function getResourcesHome($category='', $limit=10, $type='', $page=1,
$order='ORDER BY %1$sresources.subtype_id
DESC,
        %1$sresources.publicationdate DESC')
{
if ('' == $category) {
$sql = SQL::getResources();
} else {
$sql = SQL::getResourcesInCat($category);
}
$con =& pxDBConnect();
$order = sprintf($order, $con->pfx);

$sql .= ' AND '.$con->pfx.'resources.website_id=\''
.$con->esc(config::f('website_id')).'\''."\n";
$sql .= ' AND '.$con->pfx.'resources.status=\''
.PX_RESOURCE_STATUS_VALIDE.'\''."\n";
if ('' != $type) {
$sql .= ' AND '.$con->pfx.'resources.type_id=\''
.$con->esc($type).'\''."\n";
}
$sql .= ' AND '.$con->pfx.'resources.publicationdate <= '
.date::stamp();
$sql .= ' AND '.$con->pfx.'resources.enddate >=
'.date::stamp();
$sql .= ' '.$order;

if (($rs = $con->select($sql, 'Paginator', $limit, $page)) ===
false) {
$GLOBALS['_PX_render']['error']->setError('MySQL: '.$con-
>error(),
500);
return false;
}
return $rs;
Reply all
Reply to author
Forward
0 new messages