Wie Datensätze aus SEPARATER Tabelle mit TS über CONTENT auslesen

  • refalo refalo
    Padawan
    0 x
    46 Beiträge
    0 Hilfreiche Beiträge
    18. 12. 2006, 19:03

    Hallo!

    Ich greife BISHER MITTELS PHP-FUNKTIONEN per Schleife auf eine separate/neue Tabelle (sagen wir 'tx_test') über eine eigene Extension zu. Diese Tabelle habe ein Feld 'name'. In der Datei tca.php (im Unterverzeichnis der Extension) ist alles zur Tabelle angegeben/vorhanden!

    Nun möchte ich aber deren Datensätze/Rows (ALLE FELDER oder auch zunächst NUR EIN FELD) ALTERNATIV mit TS (NICHT per PHP!) UNABHÄNGIG VON DER AKTUELLEN SEITE/PID auslesen, HTML-rendern und Markern zuweisen.

    Da "drängelt" sich für mich CONTENT auf, z.B. in etwa so:

    [TS]tx_test = TEXT
    tx_test.field = name

    page.10.subparts.SUBPART = CONTENT
    page.10.subparts.SUBPART.table = tx_test[/TS]

    Die select-Angaben habe ich erst einmal bewusst weggelassen. Sollte unkritisch sein!?

    Leider kommt trotz vieler real vorhandener Datensätze NICHTS (bzw. ein Leerstring) zurück! :'(

    Ersetze ich tx_test oben überall durch einen unbekannnten / nicht existenten Tabellennamen, kommt die erwartete PHP-Laufzeitfehlermeldung (bzgl. 'TCA'), dass die TABELLE NICHT BEKANNT ist!

    Ersetze ich tx_test durch tt_content und sorge dafür, dass (der) Inhalt(e) auf der entsprechenden Seite geeignet vorhanden ist/sind, kriege ich den/die Inhalt(e) RICHTIG geliefert. :(

    Also: Kann man für sowas CONTENT (OHNE PIDINLIST) überhaupt BENUTZEN? #paralyzed#

    Wenn ja, wie?

    Oder was ist eine brauchbare Alternative?

    Für ein lauffähiges Minimalbeispiel, dass mir ALLE DATENSÄTZE einer Tabelle irgendwie hintereinander geklatscht (oder mit Zeilenumbruch) als String zurückliefert, wäre ich SEHR DANKBAR! ;)

    Vielen Dank für Eure konstruktiven Hinweise schon einmal im Voraus! #giggle#

    Gruß refalo.

    P.S: Mit RECORDS krieg' ich ja (glaub ich) immer NUR JEWEILS EINEN DATENSATZ, hier gibts allerdings im Gegensatz zu CONTENT das nützliche 'dontCheckPid' !


  • 1
  • just2b just2b
    TYPO3-Yoda
    0 x
    18741 Beiträge
    2 Hilfreiche Beiträge
    18. 12. 2006, 19:37

    Hallo,

    schau dir mal u.a. diesen Thread an > http://www.typo3.net/forum/list/list_post//54259/?page=2&sword=rgteaser#pid203441 bzw die Extension rgteaser, die ich danach gemacht habe. Die holt Inhalt aus der Tabelle pages & tt_content

    georg

  • refalo refalo
    Padawan
    0 x
    46 Beiträge
    0 Hilfreiche Beiträge
    19. 12. 2006, 18:23

    @just2b:

    Yepp, Deine Lösung könnte genial sein! Hab mir den/Deinen Thread angeguckt! Sieht recht passend aus. :D

    Nur nochmal zur Rekapitulation:

    Dein Lösungsansatz für mein Problem besteht scheinbar darin, dass man mittels einer (PHP-)User-Funktion sich eine/die geeignete, Komma-separierte PID-Liste (vorher) erzeugt (z.B. für ALLE PIDS oder so - eine LEERE PID-LISTE geht ja scheinbar NICHT!?), sodass ich dann sogar ALLE DATENSÄTZE einer separaten/externen Tabelle geliefert bekommen kann, die ich dann mit CONTENT/renderObj nach eigenem Gusto HTML-rendern kann!? :o

    Hatte in der TSREF übersehen, dass man bei pidInList statt einer PID-Liste auch etwas aus dem stdWrap-Baukasten angeben kann (allerdings hatte ich dafür bisher auch keine Beispiele gefunden). :o

    Aber meine Frage dazu: Ist sichergestellt, dass, wenn ich eine Liste mit ALLEN PIDS meiner Webseite "iregendwie" zusammenbaue, ich auch ALLE DATENSÄTZE EINER BELIEBIGEN TABELLE UNABHÄNGIG VON DIESEN PIDS geliefert bekomme? Es geht ja hier NICHT UM DATENSÄTZE, DIE CONTENTS BESTIMMTER SEITEN sind! Oder muss ich eine GANZ ANDERE PID-LISTE erzeugen? #paralyzed#

    Oder meintest Du das irgendwie anders? Vielleicht könntest Du mir ein ungefähres Minimalbeispiel (TS-Code), dass sich an mein obiges Minimalbeispiel orientiert, präsentieren?

    Vielen, Vielen Dank für Deine Aufklärung. Ich werde natürlich trotzdem schon einmal ein bißchen weiter rumpobieren...

    Gruß refalo. ;)

  • just2b just2b
    TYPO3-Yoda
    0 x
    18741 Beiträge
    2 Hilfreiche Beiträge
    20. 12. 2006, 08:17

    Hallo,

    also die userfunction ist nur dazu da, von einer gegebenen ID noch die Unter-Seite zu bekommen, also die liste bis zu einem Gewissen Level rekursiv abzuarbeiten! Du kannst das auch weglassen und manuell die Seiten-Ids eintragen!

    also du brauchst nicht unbedingt eine pidInList, es gibt auch eine uidInList, wenn du direkt auf die UID eines Datensatzes zurückgreifen willst

    Hab dir noch einen anderen Thread rausgesucht, wo es um fe_users geht, vielleicht hilft das mehr: http://www.typo3.net/forum/list/list_post//54035/?page=1&sword=fe_users%20user%3Awunschtacho#pid203329

    lg georg

  • refalo refalo
    Padawan
    0 x
    46 Beiträge
    0 Hilfreiche Beiträge
    27. 12. 2006, 12:52

    @just2b: Danke sehr! Meine Aufgabenstellung ist durch Deine Beispiele für mich jetzt zumindest prinzipiell gelöst: Mein eigentliches Problem war, mittels TS (NICHT PHP!) eine "sehr allgemeine" SQL- bzw Datenbankabfrage zu realisieren. Das kriegt man im Allgemeinen recht gut mit "select" hin. Habe ich auch alles über die TSref (ab Seite 30) nachvollzogen und hinbekommen (vor Allem unter Zuhilfenahme der stdWrap-Eigenschaften vieler select-Parameter). :D:

    Leider kann man nicht alle select-Parameter (zumindest bis TYPO3 4.0.2) "dynamisieren": In meinem Fall möchte ich immer nur eine bestimmte Anzahl von Datensätzen (Parameter 'max') ab dem "soundsovielten" Datensatz (Parameter 'begin') ausgeben (was in PHP über LIMIT "hochdynamisch" direkt möglich ist). Leider können die 'int'-Parameter 'begin' und 'max' (aus denen dann schließlich der SQL-Parameter 'LIMIT' generiert wird) zwar numerische Ausdrücke ('+calc'), jedoch nicht vom Typ 'stdWrap' (im Gegensatz beispielsweise zu Parameter 'pidInList') sein, sodass ich KEINE DIREKTE LÖSUNG sehe, mein konkretes Problem zu knacken (diese Einschränkung hat sich für mich auch durch "Rumprobieren" so bestätigt). Ich habe auch keine entsprechenden "komplexen" TS-select-Beispiele gefunden... :'(
    Über die Parameter 'where' und 'andWhere' kann ich das wohl auch nicht realisieren...?! Ich will ja NICHT die UID eingrenzen, sondern die Datensätze "zählen"...!!! #paralyzed#

    Frage: Weiß vielleicht doch noch einer irgendeine Lösung für mein Problem??

    Wahrscheinlich gibt es dann nur noch die Lösung, aus dem TS-Code eine externe TS-Datei zu machen, die ich mittels PHP preprozesse und dort an der Stelle für 'begin' und 'end' jeweils einen Marker durch jeweils eine numerische Konstante ersetze oder so....?? Geht das grundsätzlich? Hat das schonmal jemand so gemacht? Und ist das noch TYPO3-straight? Habt ihr noch einen schlauen Tipp für mich? ;)

    Ich steh (wie Bert Brecht) selbst enttäuscht und seh betroffen, den Vorhang zu und alle Fragen offen ... :o

    Gruß refalo.

    P.S.: Ich werde in Kürze noch ein kleines How-To schreiben, wenn ich das Ganze einiger Maßen "rund" zusammen habe.

  • just2b just2b
    TYPO3-Yoda
    0 x
    18741 Beiträge
    2 Hilfreiche Beiträge
    27. 12. 2006, 12:59

    Hallo,

    die frage ist, ob es nicht sinnvoller wäre, hier eine eigene Extension zu machen, da hast du dann das volle PHP-Programm und fährst mit der Kirche nicht 3x rund ums Dorf

    georg

  • 1