Kategorie Extension - Kategoriename auslesen

  • AlexD AlexD
    T3PO
    0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    30. 09. 2010, 13:35

    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


  • 1
  • igorshmigor igorshmig...
    Jedi-Ratsmitglied
    0 x
    941 Beiträge
    0 Hilfreiche Beiträge
    30. 09. 2010, 15:54

    Das würde ich über CONTENT machen.
    Aber bevor du dich allzu tief vergräbst, solltest du wissen, dass es schon Extensions zur Kategorisierung von Seiten gibt.
    Beispielsweise cag_relatedcontent ( http://typo3.org/extensions/repository/view/cag_relatedcontent/current/ ) oder gl_pages_cat

  • AlexD AlexD
    T3PO
    0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    30. 09. 2010, 16:26

    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:

    1. <ul>
    2. <li class="item {hier_kategorie1}">
    3. <!-- Inhalt aus seite 1 -->
    4. </li>
    5. <li class="item {hier_kategorie2} {hier_kategorie3}">
    6. <!-- Inhalt aus seite 2 -->
    7. </li>
    8. ...
    9. </ul>

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

  • igorshmigor igorshmig...
    Jedi-Ratsmitglied
    0 x
    941 Beiträge
    0 Hilfreiche Beiträge
    30. 09. 2010, 16:41

    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):

    1. lib.myCategory=CONTENT
    2. lib.myCategory{
    3. table=tx_prmbgpageext_kategorien
    4. andWhere=uid in ({field:tx_prmbgpageext_kategorie})
    5. andWhere.insertData=1
    6. }
    7. renderObj [ ... hier kommt die Formatierung der Ausgabe]
    8. }

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

  • AlexD AlexD
    T3PO
    0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    30. 09. 2010, 17:00

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

    1. temp.abstract = COA
    2. temp.abstract {
    3. 10 = CONTENT
    4. 10 {
    5. table = pages
    6. pidInList = 9
    7. }
    8. wrap = <ul id="portfolio-list">|</ul>
    9. renderObj = COA
    10. renderObj.wrap = <li class="item ">|</li>
    11. renderObj {
    12. 10 {
    13. pageuid.cObject = TEXT
    14. pageuid.cObject.field = uid
    15. }
    16.  
    17. 20 = CONTENT
    18. 20 {
    19. table = tt_content
    20. pidInList.data = register:pageuid
    21. where = colPos=1
    22. }
    23. }
    24.  
    25. 30 = TEXT
    26. 30.value = weiter&hellip;
    27. 30.typolink.ATagParams = class=more
    28. 30.typolink.parameter.data = register:pageuid
    29. }
    30. }
    31. }

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

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

    die Variable wieder ausgeben (nach 'item').

    liege ich mit der Vermutung richtig?

  • 1