tt_news e ordinamento

tt_news e ordinamento

Il parametro plugin.tt_news.listOrderBy permette di impostare da typoscript l'ordinamento delle news da visualizzare. E' possibile indicare esattamente la porzione di query da inserire dopo ORDER BY in sql. Per questo motivo, oltre ai classici ordinamenti per titolo, data, ..., gestibili anche da interfaccia grafica, è possibile creare ordinamenti "più fantasiosi".

Ad esempio: dobbiamo ordinare le news per ordine di data, prima tutti gli eventi futuri e poi tutti gli eventi passati.

Queste le nostre date di 5 news:

  • news 1: 01 gennaio 2012
  • news 2: 01 febbraio 2012
  • news 3: 01 marzo 2012
  • news 4: 01 aprile 2012
  • news 5: 01 maggio 2012

Alla data del 15 marzo dovranno essere visualizzate nel seguente ordine:

  • news 4: 01 aprile 2012
  • news 5: 01 maggio 2012
  • news 1: 01 gennaio 2012
  • news 2: 01 febbraio 2012
  • news 3: 01 marzo 2012

Alla data del 15 aprile:

  • news 5: 01 maggio 2012
  • news 1: 01 gennaio 2012
  • news 2: 01 febbraio 2012
  • news 3: 01 marzo 2012
  • news 4: 01 aprile 2012

Per avere questo risultato è possibile utilizzare il seguente codice:

plugin.tt_news.listOrderBy (
  case
    when datetime >= UNIX_TIMESTAMP(now()) then datetime 
    when datetime < UNIX_TIMESTAMP(now()) then datetime+1000000000
    else datetime 
  end
)

plugin.tt_news.displayList.listOrderBy < plugin.tt_news.listOrderBy

Si crea un CASE nella query sul campo datetime, salvato in formato timestamp. Nel caso la data sia futura è mantenuto lo stesso valore, nel caso la data sia antecedente alla visualizzazione, il valore è "spostato" avanti nel tempo.