Supporto volontario e collaborativo per Joomla!® in italiano

Guide Joomla! 3

Impara ad utilizzare Joomla come un professionista

I Template / Layout alternativi

Traduzione della pagina https://docs.joomla.org/Layout_Overrides_in_Joomla

Esistono 4 tipi di layout alternativi:

   - Modulo
   - Componente
   - Categoria
   - Voce di menu

I Layout alternativi funzionano in modo simile all'override del template, ma consentono un maggiore controllo.

Layout alternativi dei Moduli


Creare un layout alternativo per un modulo è simile all'override del modulo. In entrambi i casi, devi creare una cartella chiamata "templates/<tuo template>/html/<nome modulo>". Ad esempio, la cartella per l'override del template o per il layout alternativo del "mod_login" per il template beez3 sarebbe "templates/beez3/html/mod_login/".

Ci sono due importanti differenze tra l'override del template e il layout alternativo:

    - La prima è il nome del file. Per l'override del template, chiameresti il file "default.php" come il file del core di Joomla. Per il layout alternativo utilizzerai invece un nome diverso. L'unica regola è che il nome del file non deve contenere underscores (_). Questo ti consentirà di avere dei layout complessi che includono file multipli. Il file iniziale da chiamare è senza underscores e qualsiasi file che verrà chiamato da questo file iniziale invece avrà degli underscores nel nome. Ad es. potresti creare un file inziale chiamato "mynewlogin.php" che chiama "mynewlogin_1.php".

    - La seconda importante differenza è che, a differenza dei file dell'override del template che vengono chiamati automaticamente ogni volta che viene visualizzato il modulo utilizzando il template che ha l'override, il file di un layout alternativo viene chiamato solo se lo selezioni come parametro. C'è un parametro in Avanzate chiamato Layout alternativo (Figura 1).




Questo parametro farà vedere la lista di tutti i file (senza underscores) che hai messo nella cartella del template per questo modulo. Puoi anche tradurre il nome del file utilizzando il file lingua del template. Ad esempio, se aggiungi la linea

TPL_BEEZ3_MOD_LOGIN_LAYOUT_NOLOGIN="Alt Login Layout"

al file "en-GB.tpl_beez3.sys.ini", questa tradurrà il nome del file name "nologin.php" in "Alt Login Layout".

E' importante capire che se ne modulo viene specificato un layout alternativo, questo verrà utilizzato per quel modulo indipendentemente da quale template si utilizzi per visualizzare la pagina dove viene visualizzato il modulo. E' perciò responsabilità dell'amministratore assicurarsi che il file di layout lavori come desiderato su tutti i templates dove il modulo viene mostrato.

Layout alternativi dei Plugin (Override dei Plugin)


Sì, è possibile fare l'override dei plugin. E' molto utile, soprattutto per i content plugins. Tuttavia lo puoi fare solo se il plugin consente gli overrides.

Un suggerimento! Joomla fornisce un meccanismo di override dei plugin ma questa funzionalità non è supportata da tutti i plugins

Ora come ora, l'unico plugin del core di Joomla 3.x che consente gli override è il plugin Pagenavigation Content che mostra i link agli articoli precedenti e successivi nella vista articolo del componente content. Ci possono essere plugin di sviluppatori di terze parti che lo consentono e altri plugin del core in futuro saranno sovrascrivibili.

Puoi capire se si può fare l'override di un plugin se in esso c'è la cartella /tmpl/. Vedi: https://github.com/joomla/joomla-cms/tree/staging/plugins/content/pagenavigation  (nota per gli sviluppatori: il plugin utilizza JPluginHelper::getLayoutPath() ) Esempio di override di un plugin

Per fare l'override del plugin content Pagenavigation nel template "beez3", crea una cartella nominata "templates/beez3/html/plg_content_pagenavigation/" e copia il file di layout originale (plugins/content/pagenavigation/tmpl/default.php) in questa nuova cartella.

Ora puoi cambiare questo file di layout per fare l'override dell'output del plugin.

E' importante notare che per fare il layout di override devi crearlo in questo percorso:

templates/TEMPLATE-NAME/html/plg_PLUGIN-GROUP_PLUGIN-NAME/

esempio: templates/beez3/html/plg_content_pagenavigation/

Dove PLUGIN-GROUP è il gruppo al quale appartiene il plugin. (E' il nome della prima cartella dove è posizionato il plugin. Vedi: https://github.com/joomla/joomla-cms/tree/staging/plugins .)

Layout alternativi dei Componenti



I layout alternativi dei componenti funzionano in modo simile ai layout dei moduli di cui abbiamo parlato sopra. Si deve mettere un file nella stessa cartella dove metti i file di override del template. Ad es. per creare un layout alternativo per un articolo per il template "beez3", devi mettere un file nella cartella "templates/beez3/html/com_content/article/". Come per i layout dei moduli, il file non deve essere nominato come il file del core e non deve avere underscores nel nome. Inoltre non ci dev'essere un file XML con lo stesso nome in questa cartella. (Ne discuteremo nel paragrafo Layout Alternativi delle Voci di Menu.)

Puoi impostare un valore globale per i layout del componente nelle Opzioni del componente. Ad es. in Contenuti > Articoli > Opzioni, c'è un parametro per i Layout Alternativi.


Questo creerà un valore globale che i singoli componenti (articoli, contatti, news feeds e link web) possono ereditare.

Come con il layout dei moduli, i layout dei componenti vengono mostrati come opzioni nel parametro nella schermata del componente. Ad es. per un articolo. il parametro Layout alternativo è presente nelle Opzioni dell'articolo.

Come per gli altri parametri, l'impostazione Usa globali utilizzerà le impostazioni del parametro nelle Opzioni. L'impostazione Dal componente > Predefinito utilizzerà il layout predefinito del componente. I layout alternativi che hai creato per i diversi template verranno mostrati nell'elenco sotto a ciascun template.

I nomi dei file possono essere tradotti. La linea sottostante:

TPL_BEEZ3_COM_CONTENT_ARTICLE_LAYOUT_MYLAYOUT="Title Only No XML"

tradurrà un file chiamato "mylayout.php" in "Title Only No XML".

Puoi avere più di un file per un layout. Il file iniziale dev'essere nominato senza underscores e gli altri file aggiuntivi devono avere underscores.

I layout alternativi dei componenti possono essere utilizzati con gli articoli, i contatti o i news feeds. Web links non hanno un layout da singolo componente, perciò non sono disponibili layout alternativi per i Web links.

I layout alternativi dei componenti vengono utilizzati solo quando sussistono due condizioni: (1) quando vengono specificati nei parametri del componente; e (2) non c'è una voce di menu per questo specifico componente. Ad esempio, se hai uno o più voci di menu del tipo "Singolo articolo" impostate per un dato articolo, allora il layout alternativo per quell'articolo non verrà utilizzato. Invece, verrà utilizzato il layout specificato nella voce di menu. Questo è coerente con il modo generale in cui lavorano i parametri dei componenti, dove il più specifico (in questo caso una voce di menu singolo articolo) sostituisce il meno specifico (in questo caso, i parametri articolo).

Layout alternativi delle Categorie

I layout alternativi delle categorie lavorano come quelli dei componenti. Le regole per specificare i file del layout sono le stesse. L'unica differenza è che la cartella è la cartella della categoria, non quella del componente. Ad es. il layout alternativo di una categoria di contatti per beez3 andrebbe nella cartella "templates/beez3/html/com_contact/category", inseriamo il file test.php.

Puoi impostare il layout delle categorie a livello globale, nelle Opzioni di ciascun componente. Sotto un esempio delle Opzioni dei Contatti, con la possibilità di scegliere "test" dal template beez3:


I layout alternativi delle categorie sono presenti anche nelle singole Categorie nel tab Opzioni, nel parametro "Layout alternativo".


I layout alternativi delle categorie possono essere usati per gli articoli, i contatti, i news feeds ed i Web links.

Come per i layout dei componenti, i layout delle categorie si mostreranno solo se: (1) sono specificati per la categoria nel parametri globali o della categoria (2) non c'è nessuna voce di menu specifica per questa categoria (ad es. voci di menu come Lista dei contatti di una Categoria, Lista dei News feeds di una Categoria, Lista di singola categoria, Categoria Blog).

Se c'è una voce di menu impostata per questa specifica categoria, il layout predefinito verrà utilizzato al posto dei layout alternativi delle categorie.

Blog o Lista



Per gli articoli, sono disponibili due layout del core: Blog e Lista. Entrambe queste opzioni vengono mostrate sotto all'intestazione "Dal componente" nel parametro Scegli un layout (vedi Figura 5).

Come per le altre opzioni di layout, puoi selezionare Blog o Lista per le categorie sia a livello globale (nelle Opzioni in Gestione Articoli), o quando si modifica una singola categoria di articoli.

Questo significa, come per le altre opzioni, che puoi controllare se la categoria di articoli porta ad un layout blog o lista. E' importante capire che, come per gli altri parametri del layout, questa opzione non avrà effetto quando c'è una voce di menu di tipo singola categoria per questa categoria.

Layout alternativi delle Voci di menu


Le voci di menu alternative hanno un'importante differenza rispetto alle altre. Per creare il layout alternativo di una voce di menu, devi includere un file XML il cui nome coincida con il layout iniziale del file. Ad esempio, per creare una voce di menu alternativa chiamata "mioarticolo" con il template beez3, devi creare due file nella cartella "templates/beez3/html/com_content/article" chiamati "mioarticolo.php" e "mioarticolo.xml". Se vuoi includere più file di layout, devi aggiungere i files con underscores nel nome.

I file XML utilizzano lo stesso formato dei file XML delle voci di menu del core. Questo consente non solo di creare un layout personalizzato per questa voce di menu ma anche di creare parametri personalizzati. Ad esempio, puoi nascondere alcuni parametri o aggiungerne di nuovi.

Le voci di menu alternative vengono mostrate quando bisogna selezionare il tipo di voce di menu in Gestione Menu (Figura 6).


Le voci di menu alternative vengono utilizzate e funzionano come quelle standard. Visto che sono già personalizzate, gli override del template non si applicano alle voci di menu alternative.

I layout delle voci di menu hanno priorità sui layout alternativi del componente o della categoria.

La traduzione delle voci di menu alternative viene fatta secondo i tags dei file XML. Il formato è "TPL_"<nome template>_<componente>_<view>_<nome voce di menu>_<tipo di tag>. Ad esempio, queste linee sotto tradurranno il titolo, l'opzione, e la descrizione di una voce di menu alternativa chiamata "catmenuitem".

Queste stringhe devono essere aggiunte al file language/it-IT/it-IT.tpl_beez3.sys.ini

TPL_BEEZ3_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_TITLE="Layout articolo personalizzato per Beez3"
TPL_BEEZ3_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_OPTION="Beez3 Personalizzato"
TPL_BEEZ3_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_DESC="Descrizione del layout articolo per beez3."



Il catmenuitem.xml dovrà iniziare con:

<?xml version="1.0" encoding="utf-8"?>
<metadata>
   <layout title="TPL_BEEZ3_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_TITLE" option="TPL_BEEZ3_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_OPTION">
      <help
         key = "JHELP_MENUS_MENU_ITEM_ARTICLE_SINGLE_ARTICLE"
      />
      <message>
         <![CDATA[TPL_BEEZ3_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_DESC]]>
      </message>
   </layout>
</metadata>

Controllo del Template per voci di menu alternative

Come detto sopra, la presenza di un file XML crea un layout alternativo per una voce di menu. Il formato del file XML è lo stesso dei file XML delle voci di menu del core. Con questo file XML, puoi aggiungere i parametri che desideri includere in questa voce di menu. Possono essere gli stessi di quelle del core, o puoi ometterne alcuni e aggiungerne di nuovi. Nota che se aggiungi nuovi parametri, questi verranno utilizzati nel file di layout ma non nei model o view file del core.

E' anche possibile fare l'override dei parametri del core. Un esempio è controllare con quale template una voce di menu alternativa può essere visualizzata. In alcuni casi, potresti voler consentire di visualizzare una voce di menu personalizzata con qualsiasi template. In altri casi, potresti voler limitare il di quella voce di menu ad uno specifico template. In questo caso, devi solo aggiungere il seguente parametro al file XML della voce di menu:

 
<fields>
  <field
    name=''"template_style_id"''
    type=''"templatestyle"''
    label=''"COM_MENUS_ITEM_FIELD_TEMPLATE_LABEL"''
    description=''"COM_MENUS_ITEM_FIELD_TEMPLATE_DESC"''
    filter=''"int"''
    template=''"beez3"''
    class=''"inputbox"''>
  </field>
 </fields>


Questo farà un override al parametro "template_style_id" del core. Impostando il template su "beez3" in questo caso limiterà l'utente a selezionare solo gli stili del template "beez3".

Leggi anche:
- Layout alternativi di Joomla: oltre l'override
- Layout alternativi di Joomla: voci di menu e moduli

CommentaCommenta questa guida sul forum