GPvar:tx_ttnews|tt_news im Typoscript weiterverarbeiten [Gelöst]

  • EvilBMP EvilBMP
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    30. 01. 2007, 17:47

    Hallo,

    soweit mir bekannt ist kann man mit Hilfe des "data" Attributes z.B. ganz bestimmte Daten aus der DB ziehen.

    Ich möchte nun den Titel der aktuellen angezeigten News erhalten ...

    [TS]10 = TEXT
    10.data = DB:tt_news:AKT_ID:title[/TS]

    Anstelle von AKT_ID müsste die per GET übergebene ID der angezeigten News eingesetzt werden! Ich habe schon ein wenig probiert:

    [TS]10.TEXT
    10.data = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title[/TS]

    Das funktioniert leider schonmal nicht :(

    Gibts eine Möglichkeit diese zwei data Objekte zu verschachteln ... ODER gibts vielleicht eine einfachere Möglichkeit auf den Titel der akt. News (Single Ansicht) zuzugreifen?!

    Gruß, Evil


  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    30. 01. 2007, 18:21

    ist schon korrekt - einfach dahinter ein
    [TS]10.insertData=1[/TS] ;)

  • EvilBMP EvilBMP
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    30. 01. 2007, 22:58

    das geht aber leider nicht mit dem data attribut, sondern nur mit dem value attribut ...

    nehme ich also statt data das value attribut, dann gibt er mir einfach den string aus mit der ersetzten GPvar

    [TS]10.TEXT
    10.value = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title
    10.insertData = 1[/TS]

    Ergebnis:

    [HTML]DB:tt_news:19:title[/HTML]

    Nur wie bekomme ich nun diesen value per data verarbeitet ? o.O

    [b]EDIT:[/b]

    Also ich hab dann jetzt mal noch ein bissl probiert und gegoogled ;)

    Der Tip von steffenk war schonmal ganz gut, jedoch bewirkt das [i]insertData = 1[/i] leider nur, dass die GPvar geparst wird.

    Standardmäßig kann man in eine DB-Klausel keine GPvars einfügen - Konstanten oder andere Variablen funktionieren jedoch. Damit also der Data-String zweimal geparst wird, muss über [i]dataWrap[/i] erst einmal die GPvar in den String eingefügt und durch [i]wrap3[/i] noch einmal umschlossen werden, so dass daraus eine Typoscript Variable wird. Dadurch kann per [i]insertData[/i] noch einmal der umgesetzte DB-String geparst bzw. übersetzt werden.

    [i]wrap3[/i] wird in der TYPO3-Funktion vor insertData und nach [i]dataWrap[/i] aufgerufen - es ist also völlig belanglos in welcher Reihenfolge die Variablen gesetzt werden, da diese eine feste Abarbeitungsreihenfolge besitzen.

    [TS]10.dataWrap = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title
    10.wrap3 = {|}
    10.insertData = 1[/TS]

    Umsetzung:

    1. Zeile: DB:tt_news:{GPvar:tx_ttnews|tt_news}:title
    2. Zeile: {DB:tt_news:19:pid}
    3. Zeile: News-Titel der News mit der ID 19

    Eingesetzt ist TYPO3 v4.04

    Ich hoffe, ich kann hiermit einigen anderen Suchenden helfen ... Viel Spaß beim probieren 8-)

    Gruß, Evil

  • sissi sissi
    Jedi-Meister
    0 x
    255 Beiträge
    0 Hilfreiche Beiträge
    15. 10. 2007, 22:16

    Hey Evil,

    ich hab das mal eben versucht zu uebertragen und zwar moechte ich den titel (sitzt in der spalte titel in der tabelle tt_news_cat) der jeweiligen kategorie aus der tt_news_cat-Datenbank auslesen...

    1. page.10.marks.PAGETITLE = TEXT
    2. page.10.marks.PAGETITLE.dataWrap = DB:tt_news_cat:{GPvar:tx_ttnews|cat}:title
    3. page.10.marks.PAGETITLE.wrap3 = {|}
    4. page.10.marks.PAGETITLE.insertData = 1

    gibt aber nix aus....habsch irgendwo nen denkfehler?!

    viele gruesse
    sissi

  • just2b just2b
    TYPO3-Yoda
    0 x
    18741 Beiträge
    2 Hilfreiche Beiträge
    15. 10. 2007, 22:29

    hab mir mal die mühe gemacht: http://www.typo3.net/forum/list/list_post//67737/

    georg

  • EvilBMP EvilBMP
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    17. 10. 2007, 02:01

    [quote="sissi"]
    ...und zwar moechte ich den titel (sitzt in der spalte titel in der tabelle tt_news_cat) der jeweiligen kategorie aus der tt_news_cat-Datenbank auslesen...gibt aber nix aus....habsch irgendwo nen denkfehler?!
    [/quote]

    Nein, einen Denkfehler hast du an sich nicht, aber meines Erachtens einen semantischen Fehler!

    1. page.10.marks.PAGETITLE.dataWrap = DB:tt_news_cat:{GPvar:tx_ttnews|cat}:title

    Ich denke hier liegt das Problem, denn wenn ich z.B. eine einzelne News "anklicke" um zur Detailansicht zu kommen, dann wird bei mir keine GET-Variable names [b]tt_news[cat]=X[/b] mitgegeben. Mir ist jetzt gerade nicht ganz klar, ob man das irgendwo einstellen kann, dass die News Ext. genau das macht. Ebenso kannst du natürlich deine News Ext. auch per eigener Ext. erweitert haben, damit die SingleView-Links eben genau diesen zusätzlichen Parameter enthalten.

    Gesetz dem Fall, dass du aber die Standardversion verwendest, dann würde ich mal behaupten, dass durch die fehlende GET-Variable der obige Wert einfach leer ist.

    Ergebnis ist:

    DB:tt_news_cat::title

    und nicht z.B.:

    DB:tt_news_cat:2:title

    [i]Was also nun?[/i]
    --> Wir wissen ja, dass für die Einzelansicht einer News die ID der jeweiligen News mitgeben wird. Das heißt wir bekommen darüber aus der DB die ID der Newskategorie der jeweiligen News.

    1. page.10.marks.PAGETITLE.dataWrap = DB:tt_news:{GPvar:tx_ttnews|tt_news}:category

    Jetzt bekommst allerdings nur die ID der Newskategorie ausgegeben, aber nicht den Titel. Mit der ID können wir ja aber nun die tt_news_cat abfragen - im SQL Fachjargon wäre das jetzt eine verschachtelte SQL Abfrage.

    Im Prinzip ebend dann so - aber gleich vorneweg, so geht es leider nicht - das packt dann TYPO3 doch noch nicht :D

    1. page.10.marks.PAGETITLE.dataWrap = DB:tt_news_cat:{DB:tt_news:{GPvar:tx_ttnews|tt_news}:category}:title

    Man braucht also was Anderes um die verschachtelte Abfrage auszuführen. Hierbei hilft das RECORDS Objekt!

    Es erlaubt ja via [i]source[/i] Attribut die Angabe von einer bzw. mehreren kommaseparierten uid(s). Da dieses Attribut stdWrap zulässt ist unser Problem gelöst - denn dadurch können wir hier auch die dataWrap "Geschichte" anwenden.

    Somit ergibt sich:

    1. page.10.marks.PAGETITLE = RECORDS
    2. page.10.marks.PAGETITLE {
    3. source.dataWrap = DB:tt_news:{GPvar:tx_ttnews|tt_news}:category
    4. source.wrap3 = {|}
    5. source.insertData = 1
    6. tables = tt_news_cat
    7. conf.tt_news_cat = TEXT
    8. conf.tt_news_cat.field = title
    9. }

    Also nochmal in short:
    source: uid der Kategorie der angezeigten News
    tables: Tabelle die im RECORDS Objekt abgefragt werden soll
    conf: Ausgabe der jeweiligen Daten, hier der Titel der Newskategorie

    In SQL-Sprache ergibt obiges also:

    1. SELECT title FROM tt_news_cat WHERE uid = (SELECT category FROM tt_news WHERE uid = UID_VON_DER_AKTUELLEN_NEWS_VIA_GETVAR)

    ps: es gibt keinen reinen "Code" BBCode ... also nicht vom Php: verwirren lassen

    Grüße, Evil 8-)

  • sissi sissi
    Jedi-Meister
    0 x
    255 Beiträge
    0 Hilfreiche Beiträge
    28. 10. 2007, 15:59

    hi,

    dein ansatz hat mich auf die richtige spur geschubst :-) vielen dank für den ausführlichen beirag!

    hab das ganze in mein wiki aufgenommen:

    http://typo3pwnage.com/doku.php?id=knowledgebase:gpvar_in_select

    allerdings nutze ich eine "echte" typoscript-select abfrage und nicht RECORDS wie du, das prinzip (kleinen umweg über std gehen) ist aber das gleiche.

    viele grüsse
    sissi

  • thomas_swoon thomas_sw...
    Padawan
    0 x
    46 Beiträge
    0 Hilfreiche Beiträge
    14. 10. 2008, 14:23

    Hi!
    der link scheint leider nicht mehr zu gehen, kannst du die lösung bitte hier posten.
    Ich brauche für eine condition die id der Kategorie in der single view, die wie schon oben geschrieben aber nicht als globale variable verfügbar ist.
    das ganze wird noch erschwert, dass tt_news die einzelnen News-Einträge über eine eigene Tabelle tt_news_cat_mm mit der jeweiligen Kategorie verknüpft.

  • sissi sissi
    Jedi-Meister
    0 x
    255 Beiträge
    0 Hilfreiche Beiträge
    15. 10. 2008, 12:02

    hi, die ganze typo3pwnage-site scheint down zu sein. hoffe sie läuft bald wieder!

  • Mopps Mopps
    Jedi-Ratsmitglied
    0 x
    867 Beiträge
    0 Hilfreiche Beiträge
    04. 11. 2008, 12:14

    Vielen Dank für die Beiträge.

    Der Google Cache hilft manchmal weiter.
    [TS]temp.newscat = CONTENT
    temp.newscat {
    table = tt_news_cat
    select {
    pidInList = 46 # Sysfolder-ID der News
    andWhere {
    data = GPvar:tx_ttnews|cat
    wrap = uid=|
    }
    }
    renderObj = TEXT
    renderObj.field = title
    }
    [/TS]