Hello,
J'ai enfin résolu mon problème. Je le présente ci-dessous pour les personnes qui souhaiteraient faire un tri par un champ "date" personnalisé.
Je précise par contre que le code est rajouté dans les fichiers de base du composant... Donc comme l'a justement précisé micker, à la moindre maj ca pète... Mais en attendant ça fonctionne !
Deux fichiers à modifier ici.
Le premier est "category.xml" (dans administrator/components/com_flexicontent/models)
Il suffit en fait de rajouter l'option de tri que l'on souhaite ajouter dans les paramètres du groupe "common", sous-paramètre "orderby". Il suffit de se calquer sur un des paramètres pré-existant...
Enfin le second est "category.php" (dans components/com_flexicontent/models)
On rajoute une ligne dans la fonction _buildQuery() qui créé la requête. J'ai spécifié une clause supplémentaire, qui récupère la table faisant la relation entre l'id du champ date personnalisé et l'id de l'item.
Code:
. ' LEFT JOIN #__flexicontent_fields_item_relations AS ir ON ir.item_id = i.id'
On rajoute une option supplémentaire pour le ORDER BY dans la finction _buildItemOrderBy(). Je choisis donc bien de classer mes items par la valeur du champ date...
Code:
case 'date' :
$filter_order = 'ir.value';
$filter_order_dir = 'ASC';
break;
Mais cela ne marcherait pas sans préciser quel est l'id du champ personnalisé. Donc, dans la fonction _buildItemWhere(), je vais restreindre le WHERE à l'id du champ (qui variera, à vous de le trouver). Ce qui donne :
Code:
// First thing we need to do is to select only the requested items
$where = ' WHERE rel.catid = '.$this->_id;
$where .= ' AND ir.field_id = 27 ';
Et voilà, mes items sont enfin classés en ordre chronologique, d'après la date personnalisée...
Dans mon cas il s'agissait donc de lister des évènements, le plus récent devant s'afficher en premier. C'est chose possible ici, mais TEMPORAIREMENT, en attendant une adaptation plus propre et ne craignant pas la MàJ...
C'est peut être pas très clair, mais l'heure m'excusera
je veux bien avoir quelques retours sur ça, si il y a moyen de perfectionner etc...
Merci !