view solo per un giorno

2 contenuti / 0 new
Ultimo contenuto
view solo per un giorno

Premessa.
Ho un contenuto messaggio con un campo ggmm che contiene giorno e mese nel quale quel messaggio deve essere visualizzato.

Problema.
Devo realizzare una view/blocco che mi mostri un solo elemento, in base al giorno/mese odierno, ad esempio, il 15 marzo di qualsiasi anno visualizzerà sempre lo stesso messaggio.

Soluzione piuttosto semplice.
Il campo ggmm è di tipo data formattato in modo da richiedere solo giorno e mese (anche se ovviamente nel DB viene comunque memorizzato anche l'anno); nella view creo un filtro con data relativa impostata =today.

Funziona per 365 giorni all'anno, ma non per il 29 Febbraio!
Il problema è che l'utente non riesce ad inserire un messaggio per il giorno 29 Febbraio se l'anno corrente non è bisestile (vedi immagine allegata).

Ho anche pensato di sostituire il campo data ggmm con un textfield, ma non so come poter confrontare testo e data odierna nel filtro della view.

Qualcuno ha già affrontato il problema? Altre soluzioni?
Grazie 1000

Drupal Version:

Nessuna anima pia?

In attesa di qualche vostro input, ho trovato altre due possibili strade:

  1. configuro il campo ggmm come textfield, in modo da salvare nel db il valore 0229 per il 29 Febbraio, 0502 per il 2 Maggio, ecc.
    Poi dovrei aggiungere una condizione WHERE alla query della view:
    WHERE field_ddmm = DATE_FORMAT(now(),'%m%d')
    Ho provato il modulo Views Custom Conditions, ma è non mi permette di utilizzare la funzione DATE_FORMAT()
  2. utilizzo un Contextual Filter dando come valore di default il seguente codice PHP:
    <?php
     
    return date("md");
    ?>

    ma in questo caso non so come associare il filtro con il campo in questione (la vista è in un blocco, quindi non c'è URL)

Ovviamente riesco benissimo ad estrarre il record corretto con una query diretta sul db:
SELECT  * FROM `field_data_field_mmdd` WHERE field_mmdd_value = DATE_FORMAT(now(),'%m%d')

Qualsiasi suggerimento sarebbe molto apprezzato!

EDIT: risolto con contextual filter.
Posto la soluzione nel caso dovesse servire a qualcuno:

  • creo un campo textfield e un widget tipo Elenco di selezione con coppie chiave/valore tipo 0229|29 Febbraio, 1205|5 Dicembre, ecc.
  • nella view (di tipo blocco) aggiungo un contextual filter sul campo appena creato, impostando come valore di default il codice (senza i tag PHP):
    <?php
     
    return date("md");
    ?>

Ciao