Joomla.it Forum
Joomla! 1.5.x (versione con supporto terminato) => Joomla! 1.5 => : zack509 21 Sep 2011, 17:16:12
-
Modificate articles creation date in front end - Joomla 1.5
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Avendo pubblicato questo post da poco tempo mi permetto di modificarlo aggiungendo una soluzione che mi è stata chiesta per limitare solo a certi utenti la presenza del campo per la modifica della data di creazione.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Cercando in giro su internet non ho trovato un guida in italiano o una guida completa che illustrasse come aggiungere la possibilità di modificare la data di creazione agli utenti del front end.
Prendendo spunto da questo articolo provo a fare un breve riassunto di come ho risolto io
http://www.blogging-it.com/override-created-date-im-frontend-eingeben-joomla-1-5/cms/joomla-1-5.html (http://www.blogging-it.com/override-created-date-im-frontend-eingeben-joomla-1-5/cms/joomla-1-5.html)
Innanzi tutto premetto che, ove possibile, verrà fatto un override in modo da non modificare i files originali di Joomla.
1)
Cominciamo subito dal file del quale non possiamo fare l'override e che dovremo modificare in modo definitivo finché non verrà sovrascritto da un aggiornamento di Joomla.
Il file, per la lingua italiana, è:
/language/it-IT/it-IT.com_content.ini
In questo file bisogna aggiungere queste due righe
# Segue una riga aggiunta
CREATED DATE=Data di creazione
Preferibilmente in ordine alfabetico, quindi probabilmente lo inserirete dopo la riga già esistente
CREATED=Creato
2)
Questa è la fase di override, che permette di no alterare il file originale.
2.1)
Copiate il file form.php che trovate qui
/components/com_content/views/article/tmpl/form.php
in questa posizione
/templates/MIO-TEMPLATE/html/com_content/article/form.php
MIO-TEMPLATE è il nome del template che state utilizzando come default.
Create le altre cartelle se non esistono.
Fate queste modifiche al fiale appena copiato.
2.2)
Dopo la riga
$publish_up = $publish_up->toFormat();
che è circa la settima del codice
aggiungete
// righe aggiunte - fase 1 di 2 - v 1.1
$created =& JFactory::getDate($this->article->created);
$created->setOffset($config->getValue('config.offset'));
$created = $created->toFormat();
// 2 righe seguenti - visualizzazione solo per utenti
$user =& JFactory::getUser();
if ($user->id != 0000) {echo "<style type=\"text/css\"> .created-date {display:none;} </style>";}
// fine righe aggiunte
In questo codice vedete 0000 che va sostituito con l'ID dell'utente al quale volete dare la possibilità di vedere il suddetto campo modificabile. Se gli utenti ai quali volete dare questa possibilità sono più di uno potete aggiungere dopo l'ID (quindi dopo il primo 0000) uno spazio e poi il codice che segue, ripetendolo una volta per ogni diverso utente, sostituendo poi 0000 con gli ID specifici.
&& $user->id != 0000
La logica sposata è quella di elencare gli ID degli utenti che potranno vedere e modificare il campo.
E' possibile riscrivere il codice per elencare gli utenti che NON devono vedere o modificare il campo, ma non è questo l'esempio.
2.3)
Poi, a seguire, dopo le righe
<tr>
<td class="key">
<label for="created_by_alias">
<?php echo JText::_( 'Author Alias' ); ?>:
</label>
</td>
<td>
<input type="text" id="created_by_alias" name="created_by_alias" size="50" maxlength="100" value="<?php echo $this->escape($this->article->created_by_alias); ?>" class="inputbox" />
</td>
</tr>
che finiscono circa alla riga 159, tenendo conto anche delle aggiunte precedenti
aggiungete queste righe
<!-- righe aggiunte - fase 2 di 2 - v 1.1 -->
<tr class="created-date">
<td class="key">
<label for="created">
<?php echo JText::_( 'CREATED DATE' ); ?>:
</label>
</td>
<td>
<?php echo JHTML::_('calendar', $created, 'created', 'created', '%Y-%m-%d %H:%M:%S', array('class'=>'inputbox', 'size'=>'25', 'maxlength'=>'19')); ?>
</td>
</tr>
<!-- fine righe aggiunte -->
FINE
L'articolo tedesco (santo google translate) dal quale ho preso spunto spiega anche come pubblicare la data di creazione, ma a me non serviva quindi non mi sono cimentato nell'operazione e non ne descrivo i passaggi.
Spero questo sia utile a chi ne ha bisogno.
Ciao
-
Esemplare il titolo, chiarissima la guida, molto utili il tutto. :)
Compliments :D
-
Spiegato benissimo
l'unica cosa che non riesco a capire è questo punto
in questa posizione
/templates/MIO-TEMPLATE/html/com_content/article/form.php
MIO-TEMPLATE è il nome del template che state utilizzando come default.
Create le altre cartelle se non esistono.
non riesco a capire quali sono le cartelle da creare e in che punto crearle
-
Nel backand, menu "Estensioni/Gestione template", vedi una stellina di fianco al template che stai utilizzando come predefinito.
A questo punto, con un programma tipo FTP o con un estensione come eXtplorer, devi raggiungere la cartella "templates", che è nella cartella principale del sito, individuare ed entrare nella cartella con il nome del template che stai usando come default (vedi sopra - nel mio esempio è MIO-TEMPLATE) e creare le cartelle del percorso che ho indicato, nel caso non ci fossero già (html, com_content, article).
Ora copi il file form.php, o lo crei come file vuoto e ci incolli dentro il contenuto del file /components/com_content/views/article/tmpl/form.php
Se non puoi creare cartelle c'è un problema di permessi. Devi rivolgerti a chi amministra il server nel quale c'è il tuo sito.
-
Il problema e che qualsiasi data inserisco in Data di creazione: il sistema non la carica.
Difatti pubblico un articolo inserendo un'ora diversa alla voca Data di creazione: però quando salvo l'articolo mi viene pubblicato con la Data di creazione: effettiva ossia la data in cui ho creato l'articolo.
Insomma la Data di creazione: front-end non si comporta come quella back-end
-
Mi dispiace, se hai seguito gli stessi passaggi che ho fato io e non funziona, le mie limitate competenze non mi permettono di aiutarti :-[
-
Ok grazie lo stesso
se funziona a te adesso rifaccio i passagi e vediamo dove sbaglio
Grazie e ciao
-
Il problema e che qualsiasi data inserisco in Data di creazione: il sistema non la carica.
Difatti pubblico un articolo inserendo un'ora diversa alla voca Data di creazione: però quando salvo l'articolo mi viene pubblicato con la Data di creazione: effettiva ossia la data in cui ho creato l'articolo.
Insomma la Data di creazione: front-end non si comporta come quella back-end
Anche a me dava lo stesso problema. Cercando in giro ho trovato la soluzione (o almeno per me funziona utilizzando Joomla 1.5.25):
Aprire il file components/com_content/models/article.php e alla riga 282 sostituire:
$article->created = gmdate('Y-m-d H:i:s');
con
if (!($article->created)) {
$article->created = gmdate('Y-m-d H:i:s');
}
questo inserirà la data corrente se il campo "data di creazione" viene lasciato vuoto.
-
Grande Zak ! Ho risolto subito la faccenda, avevo lo stesso problema. Ed avevo anche lo stesso problema di secoz, quindi grazie anche a lui :)
-
Ciao ragazzi,
ottime spiegazione che ho utilizzato per joomla 1.5.
Una domanda, sapete come si fa per joomla 1.7?
Grazie e buona giornata,
Daniele