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

_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an