Zum Inhalt springen

Kategorie Extension - Kategoriename auslesen

Erstellt am 30. September 2010 · 4 Antworten · letzte Antwort am 30. September 2010

Tags: Datenbank, Frage

AlexD ·

Hallo,

Ich habe mir eine Extension mittels Kickstarter erstellt, welche es mir ermöglicht einzelnen Seiten eine oder mehrere Kategorien zuzuordnen.

Dazu wurde eine Tabelle erstellt (tx_prmbgpageext_kategorien) mit den Feldern:
-uid
-pid
[einige von Typo3 erstellte Felder]
-title

Zudem wurde die Tabelle 'pages' erweitert um die Spalte 'tx_prmbgpageext_kategorie'. Dort werden die Kategorie-ID's die man einer Seite zugeordnet ( z.B. "1" oder "1,2,3" )

Das schwierige an der ganzen geschichte ist, dass ich keine GET Variable zur verfügung habe, worüber ich die Kategorie abfragen kann, da alle im BE erstellten Seiten auf der Startseite untereinander aufgereiht werden. Somit ist die Startseite eine Übersichtsseite alle unterseiten.

Ich bin bisher so weit gekommen, dass ich die in der tabelle pages eingetragenen kategorien auslesen kann.
Auch die ID's und Titel aus der tabelle tx_prmbgpageext_kategorien konnte ich auslesen, allerdings diese beiden nicht miteinander in relation setzen.

Versucht habe ich das ganze über LOAD_REGISTER... aber ich vermute, das ist der falsche Weg.

Wie erstellt man in Typoscript die Abfrage richtig, so dass ich am ende den bzw die Titel der eingetragenen kategorien auslesen kann?

Danke und Gruß
Alex

AlexD ·

Danke für den Link.

Ich denke mal ich werds vorübergehend auch erst mal über eine schon fertige Extension machen, allerdings interessiert mich immernoch die sache mit dem auslesen der Relationen von 2 Tabellen.

Irgendwie muss das ja machbar sein... allerdings habe ich nirgends was gefunden, was auch nur annähernd erklärt wie es funktioniert. In den meisten foren gab es nur immer wieder verweise auf die TS Referenzen (die allerdings in sachen Beispiele auch nicht sonderlich hilfreich sind).

//Edit

Was mir grade noch auffällt:

Ich hatte vergessen zu erwähnen, dass ich diese Kategorisierung brauche um daraus am ende classen für Listings auszulesen.
in etwa kommt dann sowas bei raus:

<ul>
   <li class="item {hier_kategorie1}">
      <!-- Inhalt aus seite 1 -->
   </li>
   <li class="item {hier_kategorie2} {hier_kategorie3}">
      <!-- Inhalt aus seite 2 -->
   </li>
   ...
</ul>

ist das mit der Extension die du vorgeschlagen hast möglich?

igorshmigor ·

Keine Ahnung, ob das mit der Extension möglich ist, aber ich denke schon.

In TypoScript müsste das für deine eigene Extension ungefähr so gehen (Auslesen der Kategorien für die aktuelle Seite):

lib.myCategory=CONTENT
lib.myCategory{
   table=tx_prmbgpageext_kategorien
   select{
      andWhere=uid in ({field:tx_prmbgpageext_kategorie})
      andWhere.insertData=1
   }
   renderObj [ ... hier kommt die Formatierung der Ausgabe]
}

Edit: Ach ne, das wird nicht funktionieren, wegen pidInList. Vielleicht geht's mit RECORDS

AlexD ·

Also das hier ist mein momentanes Typoscript mit dem ich mir die aktuelle Ausgabe generiere:

temp.abstract = COA
temp.abstract {
    10 = CONTENT
    10 {
        table = pages
        select {
            pidInList = 9
        }
        wrap = <ul id="portfolio-list">|</ul>
        renderObj = COA
        renderObj.wrap = <li class="item ">|</li>
        renderObj {
            10 = LOAD_REGISTER
            10 {
                pageuid.cObject = TEXT
                pageuid.cObject.field = uid
            }
            
            20 = CONTENT
            20 {
                table = tt_content
                select {
                    pidInList.data = register:pageuid
                    where = colPos=1
                }
            }
        
            30 = TEXT
            30.value = weiter&hellip;
            30.typolink.ATagParams = class=more
            30.typolink.parameter.data = register:pageuid
        }
    }
}

Meiner vermutung nach, muss ich die Abfrage nach dem Titel der kategorie dort rein basteln, in eine variable speichern und dann in der Zeile

renderObj.wrap = <li class="item ">|</li>

die Variable wieder ausgeben (nach 'item').

liege ich mit der Vermutung richtig?