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.
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.




