Zum Inhalt springen

Breadcrumb + tt_news (SingleView)

Erstellt am 2. August 2007 · 13 Antworten · letzte Antwort am 30. September 2009

Tags: tt_news, Frage

madmat ·

Hola,

ich benutze folgende Select Abfrage

30 = CONTENT
    30 {
        table = tt_news
        select {
            pidInList = 195,194,276
            andWhere.dataWrap = uid={GPvar:tx_ttnews|tt_news}
        }
        renderObj = TEXT
        renderObj.field = title
        wrap =  / <a href="#">|</a>
        stdWrap.if.isTrue.data = GPvar:tx_ttnews|tt_news
    }

um den Titel einer News in die Breadcrumbs zu bekommen.

Das funktioniert im SingleView auch, nur im ListView zerbricht die Abfrage - da dort keine "uid" gesetzt ist.
Wie schreibe ich das jetzt korrekt um uid nur zu setzen wenn sie auch vorhanden ist ?

"andWhere.dataWrap.if.isTrue.data" bringt leider nichts, auch zahlreiche Variationen davon nicht.

Und wenn wir schonmal dabei sind, das "pidInList" - lässt sich das generalisieren ? Sowas wie "pidInList = *" oder ähnlich ?
Ich habe nämlich sehr viele Seiten die News enthalten...

madmat ·

Kam evtl. nicht ganz raus, also die fragliche Zuweisung ist folgende:

andWhere.dataWrap = uid={GPvar:tx_ttnews|tt_news}

Wie kann man den Fall dass keine uid gesetzt ist abfangen ?

madmat ·

Also:
Ziel der Aktion ist es den Titel einer News im Breadcrumb des Single View auszugeben.

IST:
Home / Infos / Seitentitel der Singleview Seite

SOLL:
Home / Infos / Newstitel

Das macht obiger Codeschnipsel schon super.
Nur leider versagt der halt wenn man in den List View zurück geht.
Dann gibts folgenden MySQl Fehler:

caller	t3lib_DB::exec_SELECTquery
ERROR	You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND tt_news.deleted=0 AND tt_news.t3ver_state!=1 AND tt_news.hidden=0 AND (tt_ne' at line 4
lastBuiltQuery	
SELECT *
FROM tt_news
WHERE
tt_news.pid IN (194,195,276) AND uid= AND tt_news.deleted=0 AND tt_news.t3ver_state!=1 AND tt_news.hidden=0 AND (tt_news.starttime<=1186571895) AND (tt_news.endtime=0 OR tt_news.endtime>1186571895) AND (tt_news.fe_group='' OR tt_news.fe_group IS NULL OR tt_news.fe_group='0' OR (tt_news.fe_group LIKE '%,0,%' OR tt_news.fe_group LIKE '0,%' OR tt_news.fe_group LIKE '%,0' OR tt_news.fe_group='0') OR (tt_news.fe_group LIKE '%,-1,%' OR tt_news.fe_group LIKE '-1,%' OR tt_news.fe_group LIKE '%,-1' OR tt_news.fe_group='-1'))
debug_backtrace	require // include // TSpagegen::renderContent // tslib_cObj->cObjGet // tslib_cObj->cObjGetSingle // tslib_cObj->USER // tslib_cObj->callUserFunction // call_user_method // tx_templavoila_pi1->main_page // tx_templavoila_pi1->renderElement // tx_templavoila_pi1->processDataValues // tslib_cObj->cObjGetSingle // tslib_cObj->COBJ_ARRAY // tslib_cObj->cObjGet // tslib_cObj->cObjGetSingle // tslib_cObj->CONTENT // tslib_cObj->exec_getQuery // t3lib_DB->exec_SELECT_queryArray // t3lib_DB->exec_SELECTquery // t3lib_DB->debug

Und ich vermute halt dass die fehlende "UID"

WHERE
tt_news.pid IN (194,195,276) AND uid= AND tt

der Grund dafür ist ?

Eine Möglichkeit wäre jetzt den Klickpfad in jeder Single View Seite bauen zu lassen - statt im Seiten Root - aber das ist angesichts der knapp 70 Single View Seiten etwas zu aufwändig.

madmat ·
just2b schrieb

und was bitte willst du in der listenansicht dynamisch setzen? von der 1. news oder wie?

Dynamisch setzen ?
Soll Deine Frage frei übersetzt heissen:

"Was soll in der Listenansicht im Breadcrumb angezeigt werden ?
Der Titel der ersten News oder wie ?"

Dann lautet die Antwort:
Nein, im ListView soll bitte schön ganz default mässig der Seitentitel (wie im obigen Beispiel ".../Infos/..." ) ausgegeben werden.

Ansonsten verstehe ich die Frage leider nicht
:o

madmat ·
madmat schrieb

Eine Möglichkeit wäre jetzt den Klickpfad in jeder Single View Seite bauen zu lassen - statt im Seiten Root - aber das ist angesichts der knapp 70 Single View Seiten etwas zu aufwändig.

just2b ·

dann prüf einfach mittels stdwrap oder ner condition ob eine variable in der url ist, und wenn nicht, dann mach gar nichts

georg

madmat ·

Jetzt nähern wir uns der Ausgangsfrage - wo würde ich die condition denn sinnvollerweise prüfen lassen, bzw. den stdWrap drumwrappen.

Ich hab nämlich langsam alle Varianten durch ohne Erfolg bisher, daher dachte ich dieses "if.isTrue.data" irgendwie einsetzen zu können...

digitalfreak ·

Ist zwar schon ewig her aber hier meine Lösung:

  marks.ROOTLINE = COA
  marks.ROOTLINE {
    # Standard Rootline Script
    10 < temp.rootline
    20 = CONTENT
    20 {
       table = tt_news_cat
       select {
           pidInList = 27
           andWhere.dataWrap = uid="{GPvar:tx_ttnews|cat}"
       }
       select.selectFields = title
       renderObj = COA
       renderObj {
         10 = TEXT
         10 {
           stdWrap.override.field = title
           stdWrap.required = 1
           #stdWrap.wrap = &nbsp;&gt;&nbsp;<a href="javascript:history.back();">|</a>
# hier hab ich bis jetz keine andere Lösung gefunden ...
           stdWrap.dataWrap = &nbsp;&gt;&nbsp;<a href="listenansicht/select_category/{GPvar:tx_ttnews|cat}.html">|</a>
         }
       }
    }
  
    30 = CONTENT
    30 {
       table = tt_news
       select {
           pidInList = 27
           andWhere.dataWrap = uid="{GPvar:tx_ttnews|tt_news}"
       }
       select.selectFields = title
       renderObj = COA
       renderObj {
         10 = TEXT
         10 {
           stdWrap.override.field = title
           stdWrap.required = 1
           stdWrap.wrap = &nbsp;&gt;&nbsp;<p>|</p> 
         }
       }
    }  
  }