TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

jetzt buchen

GPvar:tx_ttnews|tt_news im Typoscript weiterverarbeiten


Autor Nachricht
Verfasst am: 30. 01. 2007 [17:47]
EvilBMP
Themenersteller
Dabei seit: 06.03.2006
Beiträge: 37
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 ...

TYPOSCRIPT
10 = TEXT
10.data = DB:tt_news:AKT_ID:title


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

TYPOSCRIPT
10.TEXT
10.data = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title


Das funktioniert leider schonmal nicht icon_frown.gif

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
Profil
Verfasst am: 30. 01. 2007 [18:21]
steffenk
Moderator
Dabei seit: 22.09.2005
Beiträge: 4839
ist schon korrekt - einfach dahinter ein
TYPOSCRIPT
10.insertData=1
icon_wink.gif

ProfilWWW
Verfasst am: 30. 01. 2007 [22:58]
EvilBMP
Themenersteller
Dabei seit: 06.03.2006
Beiträge: 37
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

TYPOSCRIPT
10.TEXT
10.value = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title
10.insertData = 1


Ergebnis:

HTML
DB:tt_news:19:title


Nur wie bekomme ich nun diesen value per data verarbeitet ? icon_confused.gif

EDIT:

Also ich hab dann jetzt mal noch ein bissl probiert und gegoogled icon_wink.gif

Der Tip von steffenk war schonmal ganz gut, jedoch bewirkt das insertData = 1 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 dataWrap erst einmal die GPvar in den String eingefügt und durch wrap3 noch einmal umschlossen werden, so dass daraus eine Typoscript Variable wird. Dadurch kann per insertData noch einmal der umgesetzte DB-String geparst bzw. übersetzt werden.

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

TYPOSCRIPT
10.dataWrap = DB:tt_news:{GPvar:tx_ttnews|tt_news}:title
10.wrap3 = {|}
10.insertData = 1


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 icon_cool.gif

Gruß, Evil

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 31.01.2007 um 00:19.]
Profil
Verfasst am: 15. 10. 2007 [22:16]
sissi
Dabei seit: 08.02.2004
Beiträge: 255
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...

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


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

viele gruesse
sissi

ProfilWWWICQ
Verfasst am: 15. 10. 2007 [22:29]
just2b
TYPO3-Gott
Moderator
Dabei seit: 04.08.2004
Beiträge: 19047
hab mir mal die mühe gemacht: http://www.typo3.net/forum/list/list_post//67737/

georg

=> TYPO3 - inspiring people to share <= aber kein Support per PM!

=> in eigener Sache: · inspiring people to share your location Trag dich in die TYPO3 Weltkarte ein und zeige wie groß die TYPO3 Community ist - vielen Dank!<=
ProfilWWW
Verfasst am: 17. 10. 2007 [02:01]
EvilBMP
Themenersteller
Dabei seit: 06.03.2006
Beiträge: 37
sissi schrieb:

...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?!


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

TYPOSCRIPT
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 tt_news[cat]=X 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



Was also nun?
--> 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.

TYPOSCRIPT
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 icon_biggrin.gif

TYPOSCRIPT
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 source 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:

TYPOSCRIPT
page.10.marks.PAGETITLE = RECORDS
page.10.marks.PAGETITLE {
  source.dataWrap = DB:tt_news:{GPvar:tx_ttnews|tt_news}:category
  source.wrap3 = {|}
  source.insertData = 1
  tables = tt_news_cat
  conf.tt_news_cat = TEXT
  conf.tt_news_cat.field = title
}


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:

PHP
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 icon_cool.gif
Profil
Verfasst am: 28. 10. 2007 [15:59]
sissi
Dabei seit: 08.02.2004
Beiträge: 255
hi,

dein ansatz hat mich auf die richtige spur geschubst icon_smile.gif 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


ProfilWWWICQ
Verfasst am: 14. 10. 2008 [14:23]
thomas_swoon
Dabei seit: 13.06.2007
Beiträge: 46
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.
Profil
Verfasst am: 15. 10. 2008 [12:02]
sissi
Dabei seit: 08.02.2004
Beiträge: 255
hi, die ganze typo3pwnage-site scheint down zu sein. hoffe sie läuft bald wieder!

ProfilWWWICQ
Verfasst am: 04. 11. 2008 [12:14]
Mopps
Dabei seit: 21.02.2006
Beiträge: 849
Vielen Dank für die Beiträge.

Der Google Cache hilft manchmal weiter.
TYPOSCRIPT
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
}
Profil