Museo&Web CMS Open
Source: Tutorial
Uso delle pagine personalizzate
a cura del CMS Team (Gruppo Meta, Firenze)
Nell'aggiornamento 1.2.5 è stato
introdotto un nuovo tipo di pagine "Pagina personalizzata".
Questo tipo di pagine è stato introdotto per rispondere alle esigenze,
che alcuni hanno espresso, di personalizzazione o integrazione di moduli
esterni all'interno del CMS.
Durante la stesura del tutorial ci siamo accorti di un piccolo bug, scaricate
questa patch [.zip 91kb] che risolve il problema, installatela prima
di procedere.
Per creare una nuova pagina di questo tipo, dovete andare in "Gestione
sito > Struttura
del sito" e aggiungere una nuova pagina, nell'elenco dei tipi di pagine
disponibile compare anche "Pagina personalizzata". Inserite il titolo della
pagina e selezionate il tipo per completare la creazione.
In fase di editing viene visualizzato solo un campo di input "Pagina da includere".
In questo campo potete inserire due possibili valori:
-1. il nome di un componente.
-2. il nome di un file XML contenuto nella cartella pageTypes.
Proseguiamo facendo due esempi pratici.
Caso
1
Con questa modalità il sistema crea il componente che indicate
e lo include automaticamente nella pagina.
Per provare create all'interno della cartella MW/classes un struttura
di cartelle che rispecchia il nome del vostro dominio (vedi email
precedenti dove viene descritto il revers domain).
Nel nostro caso avremo una struttura del genere
MW/classses/
MW/classses/it/
MW/classses/it/gruppometa/
Se la struttura del revers domain può sembrarvi lunga e
prolissa, potete anche aggregare il dominio con un identificativo
unico, in questo modo:
MW/classses/it_gruppometa/
All'interno della cartella dovete creare un file MioComponente.php
che avrà il
seguente contenuto:
<?php
class it_gruppometa_MioComponente extends org_glizy_components_Component
{
function init()
{
}
function process()
{
}
function render()
{
$output = '<p>Ciao mondo</p>';
$this->addOutputCode($output);
}
}
?>
Nell'amministrazione inserire it.gruppometa.MioComponente (oppure
it_gruppometa.MioComponente a seconda del tipo di struttura che
avete creato) nel campo di input "Pagina
da includere", salvare la pagine e premete "visualizza pagina" per avere
un'anteprima.
Come potete vedere verrà visualizzato il testo "Ciao mondo" nel
contenuto della pagina.
Vi accenno velocemente come è strutturato un componente,
una descrizione più dettagliata sarà oggetto di un
successivo tutorial.
Come vedete esistono tre
metodi, questo vengono chiamati in successione dal framework:
- al momento della creazione del componente viene chiamato il metodo
init()
- quando il sistema ha creato tutti i componenti descritti nel
file XML del tipo di pagina, prosegue chiamando il metodo process()
di tutti i componenti
- al termine del metodo process() viene chiamato il metodo render()
Questo accade per tutti i tipi di pagine, ma in questo caso specifico
il workflow è leggermente
differente perché abbiamo un componente che include un altro
componente.
Quindi il workslow divente il seguente:
- init di tutti i componenti del tipo di pagina personalizzata
- process di tutti i componenti, questo tipo di pagina ha
il componente glz:EmbedPage che controlla cosa è stato
inserito dall'utente o include la pagina oppure il componente.
- se viene incluso un componente, vieni
creato e invocato il metodo init() e successivamente process()
del nuovo componente.
- al termine del process si prosegue normalmente invocando
il metodo render().
Tutto questo per indicare che nel caso specifico il metodo
init() del nostro componente non viene chiamato in successione
ma viene chiamato all'interno del metodo process del componente
che esegue l'inclusione.
Caso 2
Andate nella cartella MW/pageTypes e create un file prova.xml
con il seguente contenuto:
<?xml version="1.0" encoding="iso-8859-1"?>
<glz:Page id="Page"
xmlns:glz="http://www.glizy.org/dtd/1.0/"
xmlns:mw="org.minervaeurope.museoweb.*"
templateType="dwt"
templateFileName="page.dwt">
<glz:Text text="Ciao mondo" wrapTag="p"/>
</glz:Page>
Nell'amministrazione inserire prova.xml nel campo di
input "Pagina da includere",
salvare la pagine e premete "visualizza pagina" per avere un'anteprima.
Come potete vedere verrà visualizzato il testo "Ciao mondo" nel
contenuto della pagina.
Utilizzando questa possibilità potete creare un tipo di
pagina che contiene più componenti creati da voi, per
esempio:
<?xml version="1.0" encoding="iso-8859-1"?>
<glz:Page id="Page"
xmlns:glz="http://www.glizy.org/dtd/1.0/"
xmlns:mw="org.minervaeurope.museoweb.*"
xmlns:gm="it.gruppometa.*"
templateType="dwt"
templateFileName="page.dwt">
<gm:MioComponente />
<gm:AltroComponente />
</glz:Page>
In questo caso l'importante è la definizione del namespace xmlns:gm="it.gruppometa.*" che
indica al framework di includere tutti i file all'interno della cartella
MW/classes/it/gruppometa.
All'interno di questa cartella devono esserci i componenti MioComponente.php
e AltroComponente.php.