Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    modellare la struttura di una pagina in modo dinamico

    ciao

    sto realizzando un CMS, la struttura della pagina non è definita in modo statico ma viene caricata da database e generata al volo

    qui sotto spiego come faccio

    potreste dirmi cosa ne pensate?

    ciao e grazie

    _______________________________________

    Il funzionamento dei templates

    Il template è il contenitore grafico di una determinata sezione o modulo del CMS.

    La struttura del CMS è composta da una parte fissa e una variabile, la parte variabile è gestita dal template.

    codice:
    ___________________
    
    div_home
    ___________________
    
    *******template***********
    ___________________
    
    div_bottom
    ___________________
    Le parti verdi sono fisse, quelle rosse sono variabili.

    La definizione del template sostanzialmente indica l'insieme di contenitori che creeranno la struttura della pagina visualizzata, per creare la struttura si utilizzano 3 classi:

    Divcontainer
    Box
    Boxbase

    Divcontainer
    il costruttore è formato da
    string nome del div
    array dove gli elementi dell'array possono essere diverse classi di tipo (Divcontainer,Box o Boxbase)

    ad esempio l'output di una classe generata con:
    new Divcontainer(“pippo”,Array(A,B));
    dove A e B sono 2 classi a caso prese tra le 3 disponibili sarà:

    <div class=”pippo”>
    --- OUTPUT DI A
    --- OUTPUT DI B
    </div>
    Box
    Il costruttore è formato da
    string nome del div
    string non del div che conterrà il contenuto
    string titolo del div
    string contenuto
    ad esempio l'output di una classe generata con new Box(“pippo”,”contenitore”,”titolo”,”

    testo</p>”);

    sarà
    <div class=”pippo”>
    <h1>titolo</h1>
    <div class=”contenitore”>


    testo</p>
    </div>
    </div>

    Boxbase
    Il costruttore di Boxbase è invece piu semplice e presenta solo il nome del box e il suo contenuto
    string nome del div
    string contenuto

    di conseguenza l'output della classe

    new Boxbase(“pippo”,”

    testo</p>”);

    sarà

    <div class=”pippo”>


    </p>
    </div>

    La costruzione di un template non ha limiti, perchè la classe DivContainer può contenere nel suo array un altro elemento DivContainer, e via cosi...per cui si possono generare tutte le strutture che si vogliono

    Le uniche note che si devono considerare sono evitare l'utilizzo dei nomi:
    div_head
    div_bottom
    div_module

    Perchè gia utilizzati.
    Una nota particolare va a div_module, questo div va utilizzato per dire al sistema dove “separare” l'output, spieghiamoci meglio:
    Supponiamo di creare un template per la visualizzazione delle pagine
    Il CMS risponderà all'url
    URL/pagine/dettaglio/pagina.html
    che verrà tradotto nell'url URL?modulo=pagine&operazione=dettaglio&titolo=pagi na

    1.viene stampato l'header
    2.viene caricato il template
    3.viene stampata una parte del template
    4.viene stampato il contenuto della pagina
    5.viene stampata un'altra parte del template
    6.viene stampato il bottom

    supponiamo quindi che la struttura generata sia questa:

    codice:
    ___________________
    
    div_home
    ___________________
    
    
    div_container
    ___________________
    
    div_menu sx | div_contenuto pagina | div_menu dx
    ___________________
    
    ___________________
    
    div_bottom
    ___________________

    Il template in questo caso è costituito da 4 classi

    codice:
    1.div_container
       1.menu_sx
       2.contenuto_pagina
       3.menu_dx
    mentre il contenuto di menu_sx e menu_dx è deciso nel template il contenuto di contenuto_pagina dipende dalla pagina richiesta, e quindi dall'output del CMS.

    In questo caso quindi contenuto_pagina avrà nome div_module.

    Il codice php necessario a generare un template di questo tipo sarà quindi:

    Codice PHP:
    $this->template=new Divcontainer(“div_container”,Array(
    new 
    Box(“menu_sx”,”boxcont”,”MENU SINISTRA”,$menu->getmenusinistra(),
    new 
    Boxbase(“div_module”,””),
    new 
    Box(“menu_dx”,”boxcont”,”MENU DESTA”,$menu->getmenudestra()
    )
    )); 
    prossimo step – XML

    Il prossimo step sarà quello di modellare questa struttura su un foglio xml, basterà racchiudere le varie classi in contenitori tipo:

    codice:
    <divcontainer>
    <name>div_container</name>
    <data>
    	<box>
    	<name>menu_sx</name>
    	<container>boxcont</container>
    	<title>menu sinistra</title>
    	<data>
    		<output>
    		<module>menu</module>
    		<method>getmenusinistra</method>
    		</output>
    	</data>
    	</box>
    
    	<boxbase>
    	<name>div_menu</name>
    	<data></data>
    	</boxbase>
    
    	<box>
    	<name>menu_dx</name>
    	<container>boxcont</container>
    	<title>menu destra</title>
    	<data>
    		<output>
    		<module>menu</module>
    		<method>getmenudestra</method>
    		</output>
    	</data>
    	</box>
    </data>
    </divcontainer>
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  2. #2
    quando non si riceve nessuna risposta i casi sono due:

    - o nessuno ha capito un cazzo (perchè mi sono spiegato male)
    - o ho sparato delle boiate immani

    in quale vicolo sono finito?

    ;-)
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  3. #3

    ............

    Ciao.
    Ho dato una letta e devo dire
    che non ho ben capito.
    A mio parere sarebbe utile postare
    il codice delle classi con una semplice
    implementazione.
    A parte questo sono contrario
    a mettere html dentro un Db.





    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.