[TYPO3-german] mit Typoscript nächsten und vorherigen Datensatz holen (konkret: tx_news)?

Gerhard Mehsel sparking at gmx.net
Wed Jul 10 11:47:28 CEST 2013


Arghh... beim ersten join muss aus <= ein < gemacht werden! War noch zum 
testen drin, sorry!



Am 10.07.13 11:44, schrieb Gerhard Mehsel:
> Hallo Bernd,
>
> danke für deinen Schubser.
>
> Am 08.07.13 08:57, schrieb bernd wilke:
>> Am 06.07.13 22:23, schrieb Gerhard Mehsel:
>>> Hallo,
>>>
>>> es gibt ja die Möglichkeit mit Typoscript select Datensätze aus einer
>>> Tabelle zu holen. Gibt es auch eine Möglichkeit, den nächsten und den
>>> vorherigen Datensatz zu holen, und zwar so, dass alle möglichen hidden,
>>> deleted, language_overlay, ... Felder beachtet werden?
>>>
>>> Konkret: ich habe die uid eines tx_news Datensatzes, brauche aber auch
>>> den vorhergehenden und nachfolgenden Datensatz für "vorheriger Artikel"
>>> und "nächster Artikel"-Links (in der Detailansicht). Dabei sollten
>>> natürlich die Restriktionen wie z.B Kategorie, hidden und deleted etc.
>>> berücksichtigt werden.
>>>
>>> Gibt es da eine Möglichkeit? Oder einen ganz anderen Ansatz?
>>
>> das ist doch in erster Linie eine Frage des Queries.
>> da würde ich so etwas ansetzen:
>>
>> SELECT * FROM {table} WHERE sorting > {current sorting-value} AND
>> enablefields({table}) ORDER BY sorting ASC LIMIT 0,1
>>
>> bzw. je nach aktueller sortierreihenfolge zb bei News mit datetime statt
>> sorting.
>> Für Vorgänger entsprechend < und DESC
>>
>> das jetzt in Typoscript umzusetzen ist dann der nächste Schritt und
>> "bleibe dem werten Leser als Übung überlassen" ;-)
>
> Folgendes ist rausgekommen, vielleicht kanns ja jemand brauchen, ich
> hoffe man kann's lesen.
> Achtung:
> - nicht getestet für andere Sprachen als die default Sprache;
> - shared Newsdatensätze, (andere PID, gleiche Kategorie) werden nicht
> berücksichtigt!
>
> Sollte jemand noch andere Probleme bemerken, nur her damit.
>
>
>
> # next article:
> # next
> #SELECT t2.title, t2.datetime FROM tx_news_domain_model_news t2
> #JOIN tx_news_domain_model_news t1
> #ON (t1.datetime < t2.datetime)
> #JOIN tx_news_domain_model_news_category_mm c1
> #ON (t1.uid = c1.uid_local)
> #JOIN tx_news_domain_model_news_category_mm c2
> #ON (t2.uid = c2.uid_local)
> #WHERE t1.uid = 4 AND c1.uid_foreign = c2.uid_foreign
> #ORDER BY t2.datetime ASC LIMIT 0,1
> #;
> #-----------------------------------------
> 20 = CONTENT
> 20 {
>    table = tx_news_domain_model_news
>      select {
>      pidInList {
>        stdWrap {
>          cObject = RECORDS
>          cObject {
>            tables = tx_news_domain_model_news
>            source.data = GP:tx_news_pi1|news
>            source.intval = 1
>            conf.tx_news_domain_model_news = TEXT
>            conf.tx_news_domain_model_news {
>              field = pid
>            }
>            wrap = |
>          }
>        }
>      }
>
>      selectFields = tx_news_domain_model_news.title,
> tx_news_domain_model_news.datetime
>      join  {
>        cObject = COA
>        cObject {
>          10 = TEXT
>          10.value = tx_news_domain_model_news t1 ON (t1.datetime <=
> tx_news_domain_model_news.datetime)
>          10.noTrimWrap = || |
>
>          20 = TEXT
>          20.value = JOIN tx_news_domain_model_news_category_mm c1 ON
> (t1.uid = c1.uid_local)
>          20.noTrimWrap = || |
>
>          30 = TEXT
>          30.value = JOIN tx_news_domain_model_news_category_mm c2 ON
> (tx_news_domain_model_news.uid = c2.uid_local)
>        }
>      }
>
>
>      where.data = GP:tx_news_pi1|news
>      where.noTrimWrap = |t1.uid = | AND c1.uid_foreign = c2.uid_foreign|
>      where.intval = 1
>
>      andWhere.data = GP:L
>      andWhere.wrap = tx_news_domain_model_news.sys_language_uid = |
>      andWhere.intval = 1
>      andWhere.if.isTrue.data = GP:L
>
>      orderBy = tx_news_domain_model_news.datetime ASC
>      max = 1
>
>
>      }
>
>      renderObj = COA
>      renderObj {
>      10 = TEXT
>      10.value = nächster Artikel
>      10.wrap = |
>
>      10.typolink {
>        useCacheHash = 1
>        parameter.data = TSFE:id
>        ATagParams = title="{field:title}"
>        ATagParams.insertData = 1
>        additionalParams {
>        cObject = COA
>          cObject {
>            10 = TEXT
>            10.value = &tx_news_pi1[news]={field:uid}
>            10.insertData = 1
>
>            20 = TEXT
>            20.value = &tx_news_pi1[controller]=News
>
>            30 = TEXT
>            30.value = &tx_news_pi1[action]=detail
>          }
>        }
>      }
>    }
> }
>
>
> #------------------------------------------
>
>
> Schöne Grüße,
> Gerd



More information about the TYPO3-german mailing list