"Having troubles? Ask for solutions!"
Blocchi schedulati - Drupal
Problema: pubblicare un blocco in Drupal in base alla data.
(per i nodi possiamo utilizzare il modulo scheduler)
Durante la creazione di un nuovo blocco possiamo utilizzare la sezione "Show block on specific pages" per inserire un codice PHP che dovrà restituire il valore TRUE se la data corrente è compresa tra le date di pubblicazione scelte.
Si tratta di inserire le date volute di inizio e fine e confrontarle con la data di sistema.
Potremo usare un piccolo segmento generico di codice PHP per il controllo di verità:
<?php
$today = time();//data corrente
$date_start=strtotime("2013-12-05");//esempio data inizio pubblicazione
$date_end=strtotime("2013-12-09");//esempio data fine pubblicazionefunction datepublish($dts, $dtv, $dte){
if($dtv >= ($dts) && $dtv <= ($dte)) {
return true;
}
return false;
}
datepublish($date_start, $today, $date_end) //viene effettuato il controllo e restituito il booleano TRUE o FALSE
?>
(Controllare il formato data del proprio sistema).
Se usato standalone, con degli echo qua e la per il tracing, sembra funzionare.
Prima di inserirlo nel blocco nella sezione apposita semplifichiamo e otteniamo:
<?php
$today = time();
$date_start=strtotime("2013-12-05");
$date_end=strtotime("2013-12-20");
if($today >= ($date_start) && $today <= ($date_end)) {
return true;
}
return false;
?>
il blocco viene visualizzato nelle date previste.
Possiamo anche fare in modo che il blocco resti pubblicato fino ad una certa data e a partire da una certa data, cambiando opportunamente il ciclo if.
<?php
$today = time();
$date_start=strtotime("2013-12-07");
if($today >= ($date_start)) {
return true;
}
return false;
?>
<?php
$today = time();
$date_end=strtotime("2013-12-08");
if($today <= ($date_end)) {
return true;
}
return false;
?>