Joomla.it Forum
Non solo Joomla... => Sviluppo => : otto9due 29 Jan 2014, 22:17:28
-
Ragazzi vorrei creare una condizione per mostrare una parte del template solo se la data odierna è compresa tra quelle contenute in un range di date e l'id della pagina corrisponde ad uno dato.. Avrei pensato a qualcosa del genere..
Qualcuno ha qualche idea.. può funzionare?? Ancora non ho fatto test..
435 è un esempio di Itemid da sostituire con quello di prorpio interesse
<?php
$pageitemid = JRequest::getVar('Itemid','');
$dataoggi = date("Y-m-d H:i:s");
if (
$dataoggi > new DateTime("2014-01-01 00:00:00") &&
$dataoggi < new DateTime("2014-01-30 23:59:59") &&
($pageitemid != '435')) : ?>
CONTENUTO DA MOSTRARE es: un div
<?php endif; ?>
-
di direi di cominciare a fare un po' di test ;D
comunque dato che $dataoggi è una stringa e le altre date sono oggetti datetime qualche dubbio sul funzionamento potrebbe venire; magari l'interprete applica un cast a stringa e il codice funziona, ma non mi pare per niente elegante. usa sempre datetime e i metodi di comparazione della classe
io utilizzerei la classe aggiuntiva della voce di menù per determinare la pagina da visualizzare e passare le date range. non mi piacciono i valori hard coded nel mezzo del codice (i così detti magic numbers: pessima abitudine)
ciao,
marco
-
Anzitutto un grazie per aver risposto.. Sono alle prima armi con php e mysql ( sopratutto ad oggetti :P )
Questo dubbio "$dataoggi è una stringa e le altre date sono oggetti " era venuto anche a me..
Quindi diresti di fare una cosa del genere, sempre che abbia capito bene??
In questo modo sarebbero tutto oggetti.. ma la mia domanda è: in questo modo $dataoggi prende il valore della data di oggi con il formato indicato?
I metodi di comparazione della classe dove posso trovarli, così da impararli??
"la classe aggiuntiva della voce di menù per determinare la pagina da visualizzare e passare le date range" cos'è? intendi coi this => e una funzione che confronta i singoli valori giorno mese anno ecc...?
valori hard coded ?? Cosa sono??
Grazie ancora..
<?php
$pageitemid = JRequest::getVar('Itemid','');
$dataoggi = new DateTime("Y-m-d H:i:s");
if (
$dataoggi > new DateTime("2014-01-01 00:00:00") &&
$dataoggi < new DateTime("2014-01-30 23:59:59") &&
($pageitemid != '435')) : ?>
CONTENUTO DA MOSTRARE es: un div
<?php endif; ?>
Mi sa che non funge.. sta roba qui..$dataoggi = new DateTime("Y-m-d H:i:s"); non è conteplata mi sa..
-
Ecco qui.. così funziona.. è un pò grezza ma funge!!
<?php
//data oggi
$dataoggi = date("Y-m-d H:i");
// prima data
$datainizio = '2014-01-01 13:34';
// seconda data
$datafine = '2014-02-14 15:23';
if(strtotime($datainizio) < strtotime($dataoggi) && strtotime($datafine) > strtotime($dataoggi)): ?>
<div> mi vedo!! <>
<?php endif; ?>
Ovviamente a questa poi va aggiunta la condizione dell'id
-
mi sembra che vada bene.
tutto ciò è ottimo per imparare, comunque mi permetto di ricordare a tutti che in J2.5+ il modulo custom html supporta pubblicazione a tempo ed ovviamente l'assegnazione a pagine specifiche.
ciao,
marco
-
Certo certo, ma spiego a cosa mi serve.. In pratica ho alcuni clienti che posseggono una certa considerevole quantitá di siti, e durante le varie festivitá, avendo questi siti tutti lo stesso template, vorrebbe far apparire decorazioni natalizie e/o s.valentino eccc. come div con posizione assoluta es sul footer o su uno dei lati dello schermo, che scrollano con la pagina. Avevo pensato ad un metodo del genere, implementato con degli if, che in base alla festivitá mi mostrasse il div corretto.
Con i moduli avrei dovuto fare es: 2 moduli, crearmi le classi che sovrascrivessero quelle predefinite del template e poi nn so se l'anno successivo sarei dovuto rientrare nel sito per reimpostare la data di pubblicazione e di scomparsa.. O sbaglio? Non ricordo se joomla prevede anche la pubblicazione in determinati mesi dell'anno di un modulo..
Ora vorrei riuscire ad impostare nello script, l'incremento automatico del solo anno delle due date, così da non dover entrare più nel sito a modificare nulla..
-
Ora vorrei riuscire ad impostare nello script, l'incremento automatico del solo anno delle due date, così da non dover entrare più nel sito a modificare nulla..
Così ti fai male a tua insaputa. ;D
-
Ecco come ho risolto..
In questo modo, l'anno segue quello attuale e tutto diverrà completamente autonomo ed automatico..
<?php
//data oggi
$dataoggi = date("Y-m-d H:i");
// prima data
$datainizio = date("Y") . '-01-01 13:34';
// seconda data
$datafine = date("Y") . '-02-01 15:23';
if(strtotime($datainizio) < strtotime($dataoggi) && strtotime($datafine) > strtotime($dataoggi)): ?>
<div> mi vedo!! <>
<?php endif; ?>
Perchè mi farei del male? C'è qualcosa che non ho calcolato?
-
Scherzavo, mi riferivo al fatto che mettersi in condizioni di non intervenire più in un sito ti preclude pissibilità di lavoro come aggiornamenti e manutenzione
-
Scherzavo, mi riferivo al fatto che mettersi in condizioni di non intervenire più in un sito ti preclude pissibilità di lavoro come aggiornamenti e manutenzione
Vero, ma nessuno gli andrà a dire che è uno script che manovra il tutto.. ;D