Museo&Web

Kit di progettazione di un sito di qualità per un museo medio-piccolo

wp5 logo
vai al contenuto
Ti trovi in: Home - CMS - Tutorial

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.

© Progetto Minerva 2006-05, ultima revisione 2006-05-25, a cura del WP5, Commissione di studio per la creazione di un prototipo di sito web culturale pubblico.
URL: www.minervaeurope/structure/workinggroups/userneeds/prototipo/cms/pagpersonalizzate.html