Problema: pubblicare un blocco in base alla data.
(per i nodi possiamo utilizzare il modulo scheduler)
Durante la creazione di un nuovo blocco possiamo utilizzare la sezione "Page specific visibility settings" 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.
Possiamo usare un piccolo segmento di codice PHP:
<?php
$today = time();//data corrente
$date_start=strtotime("2010-06-05");//esempio data inizio pubblicazione
$date_end=strtotime("2010-06-09");//esempio data fine pubblicazione
function 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 (ma al di fuori di drupal). Inserito nel blocco sembra non fare niente.
Inserendo invece il controllo direttamente
<?php
$today = time();
$date_start=strtotime("2010-06-05");
$date_end=strtotime("2010-06-20");
if($today >= ($date_start) && $today <= ($date_end)) {
return true;
}
return false;
?>
allora il blocco viene visualizzato nelle date previste. Ovvio..(delle volte mi lascio travolgere)..
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("2010-06-07");
if($today >= ($date_start)) {
return true;
}
return false;
?>
<?php
$today = time();
$date_end=strtotime("2010-06-08");
if($today <= ($date_end)) {
return true;
}
return false;
?>
Adesso iniziamo i test...
Comments
Post new comment