Tutorial: creare un componente per Joomla 1.5

Questo post è un tutorial scritto per introdurre allo sviluppo di componenti per Joomla 1.5.

Il componente creato per l'esempio si chiama com_allarmi, e permette agli utenti registrati al sito di inserire da frontend un allarme nel sistema, memorizzato in una apposita tabella del DB MySQL.

Un allarme è composto da un'ora e da un giorno. Ogni utente inserisce allarmi in modo indipendente dagli altri utenti del sito, e attraverso il componente può vedere tutti gli allarmi che ha impostato.

Il backend mostra tutti gli allarmi impostati, classificati per utente.

Notare che allo scoccare degli allarmi non succede niente, è solo un esempio di applicazione :)

Essendo un tutorial introduttivo non ho preso in considerazione l'architettura MVC.

Prima di partire, potete scaricare il codice del componente finito.

Iniziamo

Creare un'installazione di Joomla in locale e testare che funzioni correttamente.

Se non avete un editor di codice preferito, prendete in considerazione EasyEclipse, una versione di Eclipse preconfigurato per lo sviluppo di Web Application in PHP, quindi perfetto per Joomla.

Aprire EasyEclipse e creare due progetti PHP: uno chiamato com_allarmi con location Joomla/components/com_allarmi (frontend), l'altro com_allarmi_admin con location Joomla/administrator/components/com_allarmi (backend).

All'interno della cartella frontend creare un file allarmi.php e una cartella di nome 'views'. Al suo interno creare una cartella chiamata 'all'.
All'interno della cartella backend creare un file admin.allami.php

FRONTEND

Aprire il file allarmi.php ed inserire le seguenti linee di codice

< ?php
//no direct access
defined('_JEXEC') or die('Restricted access');
echo '
<div class="componentheading">Allarmi'
?>

La riga

defined('_JEXEC') or die('Restricted access');

indica che il codice deve essere eseguito all'interno di Joomla e non può essere richiamato dall'esterno.

echo '
<div class="componentheading">Allarmi</div>
 
'

inserisce il div nella pagina HTML.

Puntare ora il browser all'indirizzo joomla/index.php?option=com_allarmi.

Verrà visualizzata una pagina riportante il titolo del componente, così come lo abbiamo dichiarato usando la classe CSS componentheading.

/FRONTEND

BACKEND

In admin.allarmi.php inseriamo il codice

< ?php
//no direct access
defined('_JEXEC') or die('Restricted access');
echo 'Allarmi';
?>

Apriamo la pagina joomla/administrator/index.php?option=com_allarmi, dove vedremo la scritta 'Allarmi' che campeggia all'interno di una pagina vuota.

/BACKEND

Come abbiamo potuto notare Joomla divide nettamente il codice inerente la parte di amministrazione (backend) e la parte visualizzata all'interno del sito (frontend).

Per poter inserire il componente all'interno del workflow di Joomla è necessario registrarlo nel database, nella tabella jos_components.

Aprite il vostro tool preferito per accedere al database (CocoaMySQL o phpMyAdmin sono perfetti, oppure direttamente la console di MySQL) e create una nuova voce nella tabella usando il codice

INSERT INTO `jos_components` VALUES (42, 'Allarmi', 'option=com_allarmi', 0, 0, 'option=com_allarmi', 'Allarmi', 'com_allarmi', 0, '', 0, '', 1);

Se viene generato un errore, cambiare il primo valore per modificare il numero univoco che identifica il componente (l'ID).

A questo punto accedendo al backend selezionare il menu Components: dovrebbe essere visibile la voce 'Allarmi', e selezionandola dovrebbe aprirsi la pagina che abbiamo visto poco fa.

Possiamo anche aggiungere un collegamento al frontend inserendo una voce nel main menu: selezionare Menus, Main Menu, premere il pulsante New, selezionare la voce Internal Link -> Allarmi. Selezionare All e dare un titolo alla voce di menu: "Allarmi", quindi premere Save.

In frontend sarà visibile la voce "Allarmi" nel menu principale, e premendola verrà visualizzata la pagina vista in precedenza.

Bene! Lo scheletro base del componente è stato creato. Ma da bravo scheletro, questo componente non fa ancora nulla.

Costuiamo intorno allo scheletro

Creiamo una tabella nel DB per memorizzare gli allarmi che gli utenti inseriscono.

CREATE TABLE `jos_allarmi` (
`id` int(11) DEFAULT NULL auto_increment,
`user` int(11) DEFAULT NULL,
`orario` time DEFAULT NULL,
`giorno` date DEFAULT NULL,
primary key(id)
);

FRONTEND

Creiamo la cartella tables ed un file chiamato allarme.php.

< ?php
//no direct access
defined('_JEXEC') or die('Restricted access');
 
class TableAllarme extends JTable {
	var $id = null;
	var $user = null;
	var $orario = null;
	var $giorno = null;
 
	function __construct(&$db) {
		parent::__construct( '#__allarmi', 'id', $db);
	}
}
?>

Questo file viene creato per gestire la tabella del database in modo che non dobbiamo scrivere il codice per interagire direttamente con l'SQL, ma astraiamo il concetto, usando la classe JTable - da cui tra l'altro ereditiamo i metodi bind(), store(), load() e delete(), che useremo più tardi.

Torniamo ad agire sul file allarmi.php, inserendo il codice

< ?php
//no direct access
defined('_JEXEC') or die('Restricted access');
 
echo '
<div class="componentheading">Allarmi';
 
jimport('joomla.application.helper');
require_once(JApplicationHelper::getPath('html'));
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.$option.DS.'tables');
 
switch($task) {
  default:
  	showAllarmi($option);
	break;
}
 
function showAllarmi($option) {
	$user =& JFactory::getUser();
	$db =& JFactory::getDBO();
	$query = "SELECT * FROM #__allarmi WHERE user=".$user->id." ORDER BY giorno DESC";
	$db->setQuery($query);
	$rows = $db->loadObjectList();
	if ($db->getErrorNum()) {
		echo $db->stderr();
		return false;
	}
	HTML_allarmi::showAllarmi($rows, $option);
}
?>

Questo codice importa la classe helper che ci servirà per includere il file allarmi.html.php e la classe che abbiamo definito per usare la tabella jos_allarme.

Il codice è molto semplice e in ogni caso viene lanciata la funzione showAllarmi, che si collega al database e recupera tutte le voci presenti nella tabella jos_allarmi, quindi passa il comando ad allarmi.html.php.

Provando a ricaricare nel browser la pagina joomla/index.php?option=com_allarmi verrà mostrato un messaggio di errore: Joomla non trova il file che abbiamo indicato di includere. Lo creiamo ora, allarmi.html.php.

< ?php
//no direct access
defined('_JEXEC') or die('Restricted access');
 
class HTML_allarmi {
	function showAllarmi($rows, $option) {
		?>
<table>< ?php
		echo "
<tr>
<th>ID</th>
<th>Utente</th>
<th>Ora</th>
<th>Giorno</th>
 
";
		foreach ($rows as $row) {
			echo '
<tr>
<td>'.$row->id.'</td>
<td>'.$row->user.'</td>
<td>'.$row->orario.'</td>
<td>'.$row->giorno.'</td>
</tr>
 
';
		}
		?></table>
 
< ?php
	}
}
?>

Questo file organizza una semplice tabella mostrando i valori degli allarmi.

Inseriamo un valore di esempio nel database

INSERT INTO `jos_allarmi`
VALUES (
'1', '62', NOW( ) , '2008-08-21'
);

Dove 62 è l'id dell'utente amministratore.

Se apriamo la pagina di frontend come utente non registrato, non vedremo nessun allarme. Facendo il login come amministratore vedremo invece una riga con i valori appena inseriti nel database.

In effetti è più indicato aggiungere la voce che componente nel menu User, che compare soltanto quando un utente effettua il login.

/FRONTEND

BACKEND

Apriamo l'interfaccia di amministrazione ed eliminiamo la voce Allarmi nel Main Menu, ed inseriamola nello User Menu.

Il backend per ora non svolge alcuna operazione. Vediamo di elencare tutti gli allarmi impostati.

In admin.allarmi.php inseriamo

< ?php
//no direct access
defined('_JEXEC') or die('Restricted access');
 
jimport('joomla.application.helper');
require_once(JApplicationHelper::getPath('admin_html'));
JTable::addIncludePath(JPATH_COMPONENT.DS.'tables');
 
switch($task) {
  default:
  	showAllarmi($option);
	break;
}
 
function showAllarmi($option) {
	$db =& JFactory::getDBO();
	$query = "SELECT * FROM #__allarmi ORDER BY giorno DESC";
	$db->setQuery($query);
	$rows = $db->loadObjectList();
	if ($db->getErrorNum()) {
		echo $db->stderr();
		return false;
	}
	HTML_allarmi::showAllarmi($rows, $option);
}
?>

Ed in admin.allarmi.html.php

< ?php
//no direct access
defined('_JEXEC') or die('Restricted access');
 
class HTML_allarmi {
	function showAllarmi($rows, $option) {
		?>
<table>< ?php
		echo "
<tr>
<th>ID</th>
<th>Utente</th>
<th>Ora</th>
<th>Giorno</th>
 
";
		foreach ($rows as $row) {
			echo '
<tr>
<td>'.$row->id.'</td>
<td>'.$row->user.'</td>
<td>'.$row->orario.'</td>
<td>'.$row->giorno.'</td>
</tr>
 
';
		}
		?></table>
 
< ?php
	}
}
?>

Questo codice ricalca quasi fedelmente quello usato per il frontend, le differenze risiedono nel file admin.allarmi.php, dove il path per la cartella tables è diverso e non ci interessano le informazioni sull'utente, in quanto carichiamo tutti gli allarmi inseriti.

/BACKEND

Creiamo una form per inserire nuovi allarmi

Non vi è ancora modo di inserire un nuovo allarme, per cui ora modifichiamo il frontend.

FRONTEND

Prendiamo il file allarmi.html.php e modifichiamo la funzione showAllarmi, in modo che inserisca un link alla fine della tabella, che rimandi al componente, con task newAlarm. Inoltre aggiungiamo la funzione newAlarm, che ha il compito di mostrare la form per l'inserimento di un nuovo allarme.

	function showAllarmi($rows, $option) {
		?>
<table>< ?php
		echo "
<tr>
<th>ID</th>
<th>Utente</th>
<th>Ora</th>
<th>Giorno</th>
 
";
		foreach ($rows as $row) {
			echo '
<tr>
<td>'.$row->id.'</td>
<td>'.$row->user.'</td>
<td>'.$row->orario.'</td>
<td>'.$row->giorno.'</td>
</tr>
 
';
		}
		?></table>
 
< ?php
		echo '<a href="index.php?option=com_allarmi&task=newAlarm">Crea nuovo allarme';
	}
 
	function newAlarm($id, $option) {
		JHTML::_('behavior.calendar');
		?>
<form action="index.php?option=com_allarmi&task=salvaAllarme" method="post" name="formNuovoAllarme" id="formNuovoAllarme">
<table>
<tr>
<td>
			   Orario:
<input type="text" name="orario" id="orario" />
			  </td>
</tr>
<tr>
<td>
			   Giorno:
<input type="text" name="giorno" id="giorno" />
<input type="reset" class="button" value="..." onclick="return showCalendar('giorno', 'yy-mm-dd');" />
			  </td>
</tr>
<tr>
			 </tr>
</table>
<input type="hidden" name="user" value="<?php echo $id; ?/>" />
<input type="submit" class="button" value="crea" />
		</form>
 
 < ?
	}

Inseriamo il task newAlarm in allarmi.php

switch($task) {
  case newAlarm:
  	newAlarm($option);
  	break;
  default:
  	showAllarmi($option);
	break;
}

Quindi, sempre in allarmi.php, creiamo la funzione newAlarm.

function newAlarm($option) {
	$id = null;
	$user =& JFactory::getUser();
 
	if($user->id) {
		$id = $user->id;
	}
 
	$row =& JTable::getInstance('allarme', 'Table');
 
	if (!$row->bind(JRequest::get('post'))) {
		echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
		exit();
	}
 
	HTML_allarmi::newAlarm($id, $option);
}

Infine creiamo la funzione salvaAllarme, chiamata dalla form.

function salvaAllarme ($option) {
	global $mainframe;
	$row =& JTable::getInstance('allarme', 'Table');
	if (!$row->bind(JRequest::get('post'))) {
		echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
		exit();
	}
	if (!$row->store()) {
		echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
		exit();
	}
	$mainframe->redirect('index.php?option='.$option, 'Allarme salvato');
}

Dobbiamo ulteriormente modificare lo switch

switch($task) {
  case newAlarm:
  	newAlarm($option);
  	break;
  case salvaAllarme:
  	salvaAllarme($option);
  	break;
  default:
  	showAllarmi($option);
	break;
}

Facciamo una nuova modifica a showAllarmi, in modo che non sia visibile agli utenti non registrati.

function showAllarmi($option) {
	$user =& JFactory::getUser();
 
	if($user->id == 0) {
		echo "Occorre il login per visualizzare questa pagina";
	}
	else {
		$db =& JFactory::getDBO();
		$query = "SELECT * FROM #__allarmi WHERE user=".$user->id." ORDER BY giorno DESC";
		$db->setQuery($query);
		$rows = $db->loadObjectList();
		if ($db->getErrorNum()) {
			echo $db->stderr();
			return false;
		}
		HTML_allarmi::showAllarmi($rows, $option);
	}
}

Siamo a buon punto

A questo punto il componente funziona come dovrebbe: provate ad effettuare il login come utente e premete il pulsante "Crea nuovo allarme".

Inserite l'ora nel formato di MySQL, ovvero 17:34:37 e selezionate una data dal calendario premendo il pulsante "...".

Cliccando 'Crea' verrà inserito l'allarme nel database, e mostrato insieme agli altri che avete creato.

Effettuando il logout e collegandosi come un altro utente, non verranno visualizzati gli allarmi degli altri utenti, mentre da admin sarà possibile vedere tutto.

Conclusioni

Questo componente è un primo esempio di sviluppo per Joomla 1.5. Prima di poter usare un componente di questo tipo occorre come minimo introdurre una protezione contro SQL injection, andando a controllare bene i valori che vengono digitati nella form.

In caso contrario il componente potrebbe essere soggetto a problemi di sicurezza.

E' possibile scaricare il codice del componente.

Tags: , , ,

32 Commenti al post “Tutorial: creare un componente per Joomla 1.5”

  1. odino Says:

    Bravo Flavio ma…

    eheh un paio di critiche non te le risparmio! >D

    1° - sarebbe stato più scorrevole suddividere il post in più pagine

    2° - dato che credo che questa guida vada incontro a neofiti della creazione estensioni in Joomla!, secondo me l’hai fatta poco basilare, de tipo frasi come:
    “Inseriamo un valore di esempio nel database

    INSERT INTO `jos_allarmi`
    VALUES (
    ‘1′, ‘62′, NOW( ) , ‘2008-08-21′
    );

    Dove 62 è l’id dell’utente amministratore.”

    …un utente medio non saprebbe nemmeno COME inserire tale dato XD

    Ciò non toglie che come al solito ti vengono le idee prima di me! Bravo!

  2. Copes Flavio Says:

    Grazie Odino, in effetti ho dato per scontate alcune cose.. come hai fatto notare tu, l’uso di un database e la conoscenza di PHP.

    Se uno decide di avventurarsi nella realizzazione di estensioni per Joomla.. credo che queste cose siano da conoscere ;) Però hai fatto bene a farmelo notare!

    Hai ragione riguardo alla paginazione, probabilmente sarebbe stato meglio scrivere due post diversi, parte 1 e parte 2.

    Mi sono accorto di quant’era lunga soltanto dopo averla pubblicata :o

    Non vorrei iniziare a prendere il brutto vizio di scrivere post-papiri :lol:

  3. odino Says:

    Bah, non prendertela eh, anzi se scrivi papiri li leggo comunque! :D
    Il fatto era che più dai per scontato delle cose meno gente avrai qui a leggere, e siccome per me tante delle cose che scrivi sono risorse che MOLTI dovrebbero apprendere…tutto qui.

    P.S. Hai 2 mail :)

  4. smokingOro Says:

    ciao
    complimenti per il tuo tutorial davvero chiaro..ma se avessi voluto avere una pagina in cui da normale utente potevo vedere tutti gli allarmi inseriti dagli altri utenti come avrei dovuto fare??
    ciao e grazie :)

  5. Copes Flavio Says:

    Ciao smokingOro :)

    Innanzitutto bisognerebbe creare una nuova View ed associarla al Main menu, accessibile a tutti, con il compito di mostrare

    index.php?option=’.$option.’&task=showTuttiAllarmi

    Quindi nel file allarmi.php avresti un nuovo case nello switch($task), chiamato ad esempio showTuttiAllarmi, con relativa funzione.

    Nel file allarmi.html.php ci sarebbe la rispettiva funzione usata per generare effettivamente l’elenco degli allarmi.

    Spero di essere stato (un po’) chiaro :)

    Ciao

  6. cristian Says:

    ciao, anche io trovo molto utile questo tutorial.. è esattamente quello che cercavo!
    Purtroppo però sono fermo di fronte ad un ostacolo che da solo non riesco a superare:
    Nel FrontEnd e nel BackEnd creo i file e le cartelle necessarie, li compilo con il codice descritto nella procedura. Ho anche aggiunto la riga di dati nella tabella jos_components.. fin quì tutto ok credo.

    Il risultato è che se faccio puntare il browser sul componente mi da errore 404 ‘componente non trovato’.
    Nel BackEnd trovo la voce relativa al componente nell’apposito menu di amministrazione, ma l’errore è lo stesso.

    Dove sbaglio? Grazie in anticipo.

  7. cosb2002 Says:

    Grande, veramnte interessante.
    Ma visto la tua competenza, perchè non crei un tutorial
    dove viene illustrata l’architettura di Joomla, per intenderci
    il progetto Joomla rapresentato tramite il suo diagramma di classi,sarebbe interessante riuscire a capire le vaire funzionalità
    delle classi.
    Sai indicarmi qualcorsa che si trovi in rete?
    Coplimenti per l’articolo su Html.it
    Buon lavoro.

  8. Copes Flavio Says:

    @cristian: Ciao, forse hai gli URL SEF abilitati? Altrimenti non saprei dirti. Ho pubblicato il codice del componente finito, così puoi confrontarlo e vedere se c’è qualcosa di sbagliato. http://www.copesflavio.com/download/com_allarmi.zip

    @cosb2002: Grazie per i complimenti, quello che suggerisci sarebbe davvero una cosa interessante.. magari un’esplorazione di Joomla a puntate ;)

    Oltre al Development Wiki http://dev.joomla.org/component/option,com_jd-wiki/Itemid,32/ non saprei cosa suggerirti :)

  9. cristian Says:

    ciao flavio.. gli URL SEF sono disabilitati. E anche caricando il tuo componente mi da lo stesso errore. Ho confrontato i codici, sono uguali.
    Avrò qualche magagna nella struttura delle directory! E’ un peccato, mi piaceva l’idea di imparare a sviluppare un po’. Va beh.. mi darò ai contenuti nel frattempo.

  10. Odino Says:

    @cristian: il nome del componente della view non è lo stesso riportato in altri file, vero?

    L’errore in questione è una cavolata, vai nella view di default e trova dove il nominativo non corrisponde.

    Se invece l’errore si presenta con altri componenti: “ahi, ahi…”

  11. Copes Flavio Says:

    @Odino: grazie per l’intervento :)

  12. cristian Says:

    @odiono: i componenti hanno nomi univoci. Fortunatamente l’errore mi si presenta solo con quello che ho creato io e quello che ha postato flavio. I nativi e quelli che installo e disinstallo regolarmente vanno benissimo! Non so che dire…. non può essere un problema di directory anzichè di nome? Il mio sito sta sotto root/Joomla/

  13. Odino Says:

    @cristian:nono allora il problema è proprio l’architettura del tuo componente, o meglio, il nome che la view interpreta.
    Come si chiama la view di default del back-end?
    E qual’è l’URL che ti restituisce l’errore 400 ( scrivi pure l’URL )?

    @flavio: figurati, i’m waiting for your mail. Intanto sto scrivendo la mia :D

  14. wdanaw Says:

    Ciao!!grazie veramente per la guida!!
    Volevo chiederti un grosso favore!!mi potresti aiutare con il mio componente mi serve per il mio tirocinio e non so piu che fare!!non riesco ad andare avanti!!

    Fammi saxe grazie mille

  15. Copes Flavio Says:

    @wdanaw: che problema hai, di preciso?

  16. wdanaw Says:

    Allora io ho cominciato a sviluppare il componente che consiste della gestione del prestito di risorse del nostro centro di calcolo!!
    FRONTEND:
    l’utente del componente deve poter chiedere in prestito un risorsa di quelle inserite dall’amministratore e se la risorsa non e’ libera mettersi in lista di attesa, in piu deve poter fare l’upload di un file associata a una precisa risorsa e prima della scadenza della risorsa di 2 giorni il sistema dovrebbe mandare un email di avviso all’utente ricordandogli di restituirla in tempo. L’amministratore cmq deve poter richiedere un risorsa che gli interessa anche prima della scadenza sempre mandando un email all’utente che l’aveva presa in prestito.

    BACKEND:
    l’amministratore dovrebbe poter
    - visualizzare le info sugli utenti
    - aggiungere, visualizzare e modificare un risorsa
    - fare l’upload dei file e associarli ad una determinata risorsa
    - poter effettuare una ricerca di risorse (vale anche per l’utente nel front end) e di un utente con determinati criteri
    - visualizzare le scadenze dei prestiti
    - mandare un email di comunicazione agli utente

    io ho fatto i vari form per inserire..e veramente non riesco ad organizzare le mie idee e come sviluppare le cose!! … in poche parole mi serve una guida che mi illumini la strada! ;p

    se per te non e’ un problema ti mando quello che ho fatto per email!

  17. Antonio Grazioli Says:

    Ottima guida, Direi “complicata” al punto giusto…se uno è arrivato qui e vuole sviluppare un componente per Joomla si suppone che abbia come minimo un po’ di familiarità con MySql, php, phMyAdmin ;-)…(magari un po’ meno con le classi, concetti di astrazione ed ereditarietà)
    Non ho porvato il componente che hai scritto tu ma mi è abbastanza chiaro cosa fa e quali sono i passi per arrivarci. Adesso allo studio dell’architettura MVC!!! (hint: dai, scrivi qualcosa anche su quella)

  18. Filippo Lottici Says:

    Comlimenti per il tutorial!Davvero utile.
    Ho però una domanda…dopo essere arrivati a questo punto (che è già una grande soddisfazione per un neofita) come posso inserire nuovamente le icone di creazione pdf e stampa?
    è obbligatorio usare l’architettura MVC?

    Grazie e ancora complimenti!

  19. bigham Says:

    Grande Flavio!!!! :-D
    Mi viene in mente la pubblicità del caffè… non ricordo quale
    “Se me lo dicevi prima!… Ormai!”

    Ci ho messo un sacco di tempo a capire come funzionavano i componenti di Joomla. Se avessi letto prima la tua guida avrei risparmiato metà del tempo ;-D
    Ormai!

    Quoto le osservazioni di Odino ma forse potrebbe bastare anche una postilla nell’introduzione del tipo: per comprendere questo tutorial bisogna avere nozioni minime di…
    Ottimo tutorial comunque. Ben fatto! :-D

    Ciao

  20. Copes Flavio Says:

    Ciao bigham, ti ringrazio per i complimenti! Per il discorso del caffè.. diciamo meglio tardi che mai ;)

  21. Claudio Says:

    Ciao, grazie per il tutorial!
    Ho visto che hai usato un’unica tabella.
    Dovendone usare invece di piu, ad esempio 3, cosa dovrei fare? Dovrei creare dentro la dir “tables” altrettanti file con le classi per gestire le tabelle? Oppure una sola?

  22. Copes Flavio Says:

    Ciao Claudio, si dovresti creare un file per ogni tabella che usi.

    Es.

    file tables/elementi.php class TableElementi -> jos_elementi
    file tables/categorie.php class TableCategorie -> jos_categorie_elementi

  23. Claudio Says:

    Ciao Flavio,
    ho fatto anche questo ed è tutto ok! Grazie mille!
    Una sola cosa non ho capito: su molte pagine di Joomla vedo le classiche iconcine di intestazione contenuto (stampa, esporta pdf ecc).
    Per metterle nelle pagine dei nostri moduli basta richiamare una funzione di Joomla o bisogna sviluppare qualcosa nel nostro codice?

  24. Copes Flavio Says:

    Ciao Claudio, bene sono contento che tu abbia risolto!

    Per quanto riguarda le icone di intestazione, vengono visualizzate dal componente com_content.. e sono specifiche per quel componente. Certo puoi modificare i file per realizzare questa funzione anche nella tua estensione, prova a guardare il file

    components/com_content/views/article/tmpl/default.php, linee 25-41

    e

    components/com_content/helpers/icon.php

  25. lorenzo Says:

    Ciao,
    complimenti per la guida!!!
    avrei la necessita di cambiare il nome dei componenti sul menu del back-end, mi potresti spiegare come dovrei fare???
    esempio vorrei che il componente joomlapack nel menu di amministrazione si chiamasse BACKUP
    grazie anticipatamente

  26. Copes Flavio Says:

    Ciao Lorenzo, devi agire sul database.

    Usando phpMyAdmin o un programma per accedere al database, apri la tabella jos_components e modifichi il valore della colonna admin_menu_alt corrispondente alla linea del componente joomlapack.

  27. odino Says:

    Ciao Flavio ti chiedo di controllare che per modificare il nome di un componente in backend bisogni modificare “admin_menu_alt” e non direttamente “name”

    ;)

    @lorenzo: prova o altrimenti aspetta il fine settimana che esce il componente COMNAME, realizzato appositamente per questo :)

  28. Copes Flavio Says:

    Aaah grande Odino, hai proprio ragione :) grazie per la correzione! ..ma a che serve allora admin_menu_alt? :D

  29. odino Says:

    Allora seguendo la logica dell’aternative text si può pensare che sia un testo che vada ad ampliare la descrizione del mero nome del componente.

    Occhio a una cosa: i componenti di default, quelli con iscore = 1 sul DB, anche agendo su “name”, “admin_menu_alt” o altri campi sembrano non ricevere cambiamenti :|

  30. odino Says:

    Ecco la DOC:

    http://api.joomla.org/svn/Joomla-Framework/Table/JTableComponent.html

  31. Alberto Says:

    Ciao, complimenti per la guida.
    Volevo chiederti una cosa. Sto modificando il componente, cioè sto aggiungendo dei dati, però vorrei anche creare la possibilità dal lato amministrativo di cancellare gli allarmi scaduti, oppure cambiare lo stato di esso, cioè da stato in attesa a stato scaduto. Come posso inserire in alto la barra per cancellare o cambiare lo stato?

  32. Giovanni Buccoliero Says:

    il formato del parametro &format della funzione showCalendar per funzionare deve essere questo:

    showCalendar(’giorno’, ‘%d-%m-%Y’)

Lascia un commento

Nome (obbligatorio)

Mail (non sarà pubblicata) (obbligatoria)

Sito web