[TYPO3-german] PID-Struktur prüfen?

Stephan Schuler stephan.schuler at netlogix.de
Sat Oct 31 14:51:55 CET 2009


Hallo Daniel.


Ein bisschen mehr Information würde uns erlauben, evtl. auch andere
Dinge zu empfehlen als den simplen DB-Query.

Zunächst mal musst du dir im klaren sein, aus welchen Tabellen du
Daten auslesen möchtest. Einfach alle Daten aus einem Sysfolder, den
darin enthaltenen Sysfoldern und das in beliebige Tiefe ist ein
ziemlicher Aufwand. Wenn du deine Rootseite erwischt, lädst du die
gesamte Datenbank in den PHP-Prozess. Von schnell kann dann natürlich
keine Rede mehr sein.

Ich würde dir empfehlen, zunächst rekursiv alle Pages auszulesen, die
unterhalb deiner Seite liegen. Aus der "pages"-Tabelle diejenigen
Pages auslesen, die als PID die aktuelle haben, das rekursiv, Start
bei $GLOBALS['TSFE']->id. Von allen Seiten brauchst du jeweils die
UID.
Raus kommt also ein Array an UIDs (oder ne Liste, wie auch immer).
Jetzt dann alle Records lesen, die auf diesen UIDs liegen.
Gehen wir davon aus, dass du in $pages ein Array als
array($rootPageId, $childA, $childB, $childC, $childAA, $childAB, ...)
hast.
'SELECT * FROM tt_content WHERE pid IN ('.join(',', $pages).')'
^^ Mit dem Query kriegst du alle tt_content-Records, die auf diesen
Pages liegen. Sorting solltest du abhängig vom Record-Type sinnvoll
machen, sprich anhand des Wertes der im
$GLOBALS['TCA'][$tableName]['ctrl'] für Sorting hinterlegt ist. Ich
würde hier aber eine zusätzliche Sortingstufe einbauen und die erst
mal "order by pid" abfragen, dann stimmt die interne Reihenfolge von
aufeinanderfolgenden Datensätzen auf dem selben Child-Sysfolder schon
mal
An dieser Stelle kommen die Datensätze natürlich nicht hierarchisch
geglieder aus dem Query sondern eben flach alle nacheinander. Wenn du
einen Hierarchie hier für notwendig hälst, solltest du das jetzt
PHP-Seitig machen.

Das oben beschriebene Vorgehen sollte eine recht geringe Anzahl von
einzelnen SQL-Anfragen (und einen recht geringen Aufwand für die
Datenbank) bedeuten. Die Performance geht so wenigstens nicht
exponentiell in den Keller wenn du viele Verschachtelungen hast.

Die oben genannten erste Sortierstufe "order by pid" ist btw. unnötig,
wenn du eine PHP-seitige hierarchische Umsortierung der Records zu
Pages durchführst, sofern du das "foreach $row" machst. Da ist ja nur
wichtig, dass das Sorting der Records des selben Sysfolders passt, ob
Records des selben Sysfolders immer lückenlos nacheinander kommen ober
ob sich Records unterschiedlicher Sysfolder mischen wird durch ein
PHP-seitigs nachsortieren ja eh hergestellt. Den Aufwand kann man der
Datenbank in diesem Fall also sparen.


Ich bleibe aber bei meiner ersten Aussage: Wenn ich genauer wüsste was
du eigentlich willst könnte ich dir *vielleicht* auch einen schöneren
(schnelleren) Weg nennen.


Grüße,
 Stephan Schuler.



Am 30. Oktober 2009 21:00 schrieb Daniel Swjetscharevsky <daniel at thefreeman.de>:
> Aha,
>
> ich kann also mit
>
> $GLOBALS['TSFE']->id
>
> Die aktuelle PID auslesen. Aber wie kann ich nun
> Prüfen, ob meine Sysordner-IDs in dessen Rootline sind?
>
> Gruß,
> Daniel
>
> -----Ursprüngliche Nachricht-----
> Von: typo3-german-bounces at lists.typo3.org
> [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Daniel
> Swjetscharevsky
> Gesendet: Freitag, 30. Oktober 2009 20:54
> An: 'German TYPO3 Userlist'
> Betreff: Re: [TYPO3-german] PID-Struktur prüfen?
>
> Oder Anders:
>
> Wie komme ich denn an die IDs und an die Darin enthaltene IDs?
>
> -----Ursprüngliche Nachricht-----
> Von: typo3-german-bounces at lists.typo3.org
> [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von DS Media Design
> Gesendet: Freitag, 30. Oktober 2009 20:14
> An: typo3-german at lists.typo3.org
> Betreff: [TYPO3-german] PID-Struktur prüfen?
>
> Hallo zusammen,
>
>
>
> ich möchte in meiner EXT gerne nur DIE Daten ausgeben, die unterhalb der
>
> aktuellen PID in einer der Sysordner stehen. Wie kann ich denn die Abfrage
>
> dieses Umstandes prüfen?
>
>
>
> Lieben Dank im Voraus.
>
> Daniel
>
>
>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>


More information about the TYPO3-german mailing list