Appunti: Parametro Select nei menu di Joomla
- 11 Febbraio 2009

Riporto in questo breve articolo una traccia utile per capire come vengono renderizzati i parametri impostati nei file xml delle pagine di creazione di nuove voci di menu.
Chiaramente sono solo appunti che ho preso per la creazione di nuovi componenti per i nostri progetti.
Quando dobbiamo inserire un menu che punta ad un componente, in diversi casi ci viene data la possibilità di specificare quale “articolo/oggetto”
Facciamo un esempio: se vogliamo aggiungere un menu di Tipo Contatto, aggiungeremo un nuovo menu selezionando dall’elenco dei tipi “Contatto->Aspetto Contatto”.
Viene cosi visualizzata la pagina con le opzioni specifiche al tipo di menu scelto.
Quello di cui vi voglio parlare è di come viene inserito un parametro di tipo select. Per esempio, nel caso del contatto, la select si riferisce alla Selezione Contatto.
<h3 >Processo di rendering della pagina del menu
1) Quando clicchiamo su Contatto->Aspetto Contatto
Il controller richiamera la view Item.
La select che ci consente di specificare il contatto, (quello che verrà aggiunto all’url: ../index.php?option=com_contact&view=contact&id=1&Itemid=54) viene definita nel file xml della view: default.xml
<? xml version = "1.0" encoding = "utf-8" ?>
<!-- $Id: default.xml 8178 2007-07-23 05:39:47Z eddieajau $ -->
<metadata>
<layout title="Standard Contact Layout">
<message>
<![CDATA[STANDARD CONTACT LAYOUT DESC]]>
</message>
</layout>
<state>
<name>Standard Contact Layout</name>
<description>STANDARD CONTACT LAYOUT DESC</description>
<url addpath="/administrator/components/com_contact/elements">
< param name = "id" type = "contact" default = "" label ="Select Contact" description ="The contact to link to" />
</url>
<params>
< param name = "show_contact_list" type = "radio" default = "0" label = "Drop Down" description = "PARAMDROPDOWN" >
<option value="0">Hide</option>
<option value="1">Show</option>
</param>
<param name="show_category_crumb" type="radio" default="0" label="Show Category in Breadcrumbs" description="Show/Hide the category in the breadcrumbs">
<option value="0">Hide</option>
<option value="1">Show</option>
</param>
</params>
</state>
</metadata>
Nel file xml viene specificato il file php che si occupa di creare la select e popolarla.
In questo caso è: "/administrator/components/com_contact/elements/contact.php
Il metodo che si occupa di caricare i file xml per il rendering è
function &_getStateXML()
in item.php
$lpath = D:\0USER\LAMP\www\progetti\galmetal\components\com_contact\views\contact\tmpl\default.xml
La fase di rendering finale avviene in view.php. In particolare
Ad esempio $ulrparams viene valorizzato dal metodo:
function &getUrlParams()
{
// Get the state parameters
$item=& $this->getItem();
$params = new JParameter('');
if ($state =& $this->_getStateXML())
{
if (is_a($state, 'JSimpleXMLElement'))
$sp =& $state->getElementByPath('url');
$params->setXML($sp);
if (isset($item->linkparts) && is_array($item->linkparts)) {
$params->loadArray($item->linkparts);
}
}
}
return $params;
}
../administrator/components/com_menus/models/item.php.MenusModelItem->getUrlParams : lineno 164
La libreria che si occupa del render dei parameter è : libraries/joomla/html/parameter.php.JParameter->render : lineno 190
Finiscono cosi i miei appunti. Verranno ripresi in articoli futuri.
