Dans mon projet Joomla, j'ai une catégorie principale qui contient quelques sous-catégories. J'ai réorganisé la commande dans le backend par glisser-déposer.
Comment interroger la base de données pour vérifier la commande?
$db = JFactory::getDbo();
$sql = "select c2.* from #__categories c, #__categories c2
where c.id={$catid} and c.lft<c2.lft and c2.rgt<c.rgt";
$db->setQuery($sql);
$categories = $db->loadObjectList();
J'utilise ce code pour obtenir toutes les sous-catégories, mais je ne suis pas en mesure de les organiser par ordre comme je l'avais fait dans le backend.
J'ai jeté un coup d'œil, mais il n'y a pas de colonne de classement dans le tableau des catégories.
Alors, où Joomla stocke le commande?
Dans #__categories
, Le champ de classement des tables est nommé lft
. Ainsi, cette colonne enregistre l'ordre des catégories.
Si vous voulez regarder plus côté code, alors vous pouvez voir:
administrateur/composants/com_categories/models/categories.php
Et vérifiez la fonction populateState()
, la commande y est définie.
Dans votre requête, il vous suffit d'ajouter une clause order by et de la modifier comme suit:
$sql = "select c2.* from #__categories c, #__categories c2 where c.id={$catid} and c.lft<c2.lft and c2.rgt<c.rgt order by c.lft";
J'espère que cela t'aides