[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