it-swarm.com.de

Wie kann ich die Kategorietabelle abfragen und eine Ergebnismenge mit meiner gespeicherten Bestellung erhalten?

In meinem Joomla-Projekt habe ich eine Hauptkategorie, die einige Unterkategorien enthält. Ich habe die Reihenfolge im Backend per Drag & Drop umgestellt.

Wie kann ich die Datenbank abfragen, um die Bestellung zu überprüfen?

$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();

Ich verwende diesen Code, um alle Unterkategorien abzurufen, kann sie jedoch nicht wie im Backend nach Reihenfolge ordnen.

Ich habe nachgesehen, aber die Kategorietabelle enthält keine Spalte mit der Reihenfolge.

Also, wo speichert Joomla die Bestellung?

4
Joomler

In der Tabelle #__categories Hat das Bestellfeld den Namen lft. Diese Spalte speichert also die Reihenfolge der Kategorien.

Wenn Sie mehr über die Codeseite erfahren möchten, können Sie Folgendes sehen:

administrator/components/com_categories/models/categories.php

Und überprüfen Sie die Funktion populateState(), dort ist die Reihenfolge festgelegt.

In Ihrer Abfrage müssen Sie lediglich eine order by-Klausel hinzufügen und wie folgt ändern:

$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";

Hoffe das hilft

3
Liz.