Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: astrazione di un menu

  1. #1

    astrazione di un menu

    ciao belli
    sto cercando di astrarre un menu ad infiniti livelli e mi chiedevo come fareste voi geniacci

    array n-dimensionale ok

    Codice PHP:
    $ar=array('Home'=>'index.php','Section1'=>'Section1.php'
    ma il rapporto pagina genitore - pagina figlio come lo implementereste?

    poi mi toccherà scrivere la funzione iterativa per creare quello che mi serve, ma vabbè

    ha senso fare una cosa così?

    Codice PHP:
    array('Home'=>'index.php','Section1'=>'section1.php','Section2'=>array('Page1'=>'page1.php','Page2'=>'page2.php')) 
    e se volessi avere una pagina anche per Section2?

    mi piacerebbe avere una struttura flessibile dove sia possibile avere sia una sezione che corrisponde ad una pagina che una che invece ha solo figli ( nel caso vado al primo figlio )

  2. #2
    Perchè non usi un database invece che un array ed implmenenti una cosa tipo:

    http://dev.mysql.com/tech-resources/...ical-data.html

    Oppure, ancora meglio, ti installi WordPress che implementa già la gestione gerarchica di pagine e menù?

  3. #3
    Originariamente inviato da filippo.toso
    Perchè non usi un database invece che un array ed implmenenti una cosa tipo:

    http://dev.mysql.com/tech-resources/...ical-data.html
    perchè lo trovo un inutile spreco di risorse del sistema... non vedo i benefici di usare un db
    cioè può essere una delle opzioni recuperare la struttura dal db, ma di base PHP deve avere i dati puri in un bell'array

    Originariamente inviato da filippo.toso Oppure, ancora meglio, ti installi WordPress che implementa già la gestione gerarchica di pagine e menù?
    sto scrivendo il mio framework

    ora mi sfugge comunque come sia organizzato Wordpress... mi sembra che comunque devi avere una pagina per poter metterci un figlio

    tra l'altro in output avrà XML, per poter essere templatizzato ( uso XSL )

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Io fare una cosa tipo questa

    Codice PHP:

    class ItemMenu {
         public 
    $linkValue null;
         public 
    $linkName null;
         private 
    $subMenu = array();

         
         public function 
    __construct($link null $name null) {
            
    $this->linkValue $link;
            
    $this->linkName $name;
         }

         public function 
    addSubItem (ItemMenu $item) {
                
    $this->subMenu[] = $item;
         }


         public function 
    getMenu() {
                if (
    is_null($this->link)) {
                     echo 
    "<div>menu</div>";
                } else {
                    echo 
    "<a href ....  ";
                }
                foreach (
    $this->subMenu as $cItem) {
                        
    $cItem->getMenu();
                }
         }
         
    }

    $home = new ItemMenu("index.php","home");
    $item2 = new ItemMenu("item2.php","item2");
    $item3 = new ItemMenu("item3.php","item2");
    $item4 = new ItemMenu("item4.php","item2");

    $subItem1 = new ItemMenu("subItem1.php","subItem1");
    $subItem2 = new ItemMenu("subItem2.php","subItem2");

    $mainMenu = new ItemMenu();
    $mainMenu.addSubItem($home);
    $mainMenu.addSubItem($item2);
    $mainMenu.addSubItem($item3);
    $mainMenu.addSubItem($item4);

    $item3.addSubItem($subItem1);
    $item3.addSubItem($subItem2);

    $home.getMenu(); 

    Andrea
    p.s. e' scritto a mano non funzionerà mai volevo solo rendere l'idea

  5. #5
    Andrea mi scriveresti perfavore un esempio di array?
    giusto per capire come intendi strutturarlo... grazie

  6. #6
    tempo fa avevo fatto un menu generato al volo da xml
    http://www.andreapaiola.it/provaxmlmenu/prova.php

    l'xml di partenza è questo
    codice:
    <?xml version="1.0" encoding="iso-8859-1"?>
    <menu>
    	<voce testo="Prima sezione" url="http://www.andreapaiola.it/provaxmlmenu/sez1.php" descrizione="sezione del sito in cui si parla di questo e di quest'altro.">
    		<sottovoce testo="Prima pagina" url="http://www.andreapaiola.it/provaxmlmenu/sez1pag1.php" descrizione="prima pagina della prima sezione del sito." />
    		<sottovoce testo="Seconda pagina" url="http://www.andreapaiola.it/provaxmlmenu/sez1pag2.php" descrizione="seconda pagina della prima sezione del sito" />
    	</voce>
    	<voce testo="Seconda sezione" url="http://www.andreapaiola.it/provaxmlmenu/sez2.php" descrizione="seconda sezione del sito">
    		<sottovoce testo="pagina1" url="http://www.andreapaiola.it/provaxmlmenu/sez2pag1.php" descrizione="prima pagina della seconda sezione del sito" />
    		<sottovoce testo="pagina 2" url="http://www.andreapaiola.it/provaxmlmenu/sez2pag2.php" descrizione="seconda pagina sezione 2" />
    	</voce>
    	<voce testo="Terza sezione" url="http://www.andreapaiola.it/provaxmlmenu/sez3.php" descrizione="Sezione n° 3 del sito">
    		<sottovoce testo="pagina 1" url="http://www.andreapaiola.it/provaxmlmenu/sez3pag1.php" descrizione="prima pagina della 3° sezione del sito" />
    		<sottovoce testo="pag2" url="http://www.andreapaiola.it/provaxmlmenu/sez3pag2.php" descrizione="pagina 2 sez 3" />
    		<sottovoce testo="pag3" url="http://www.andreapaiola.it/provaxmlmenu/sez3pag3.php" descrizione="pagina 3 sez 3" />
    	</voce>
    </menu>
    facile da capire e modificare

    purtroppo funzionava solo fino al terzo livello ( per carità son pochi i siti che vanno oltre il terzo... )

  7. #7
    in un altro forum mi han consigliato di appiattire su un'unica dimensione

    Codice PHP:
    <?php 
    $i 
    0
    $menu[$i++] = array("Madre" => """Nome" => "HomePage""Link" => "?c=home");
    $menu[$i++] = array("Madre" => """Nome" => "Info""Link" => ""); 
    $menu[$i++] = array("Madre" => "Info""Nome" => "Contatti""Link" => "?c=contatti"); 
    $menu[$i++] = array("Madre" => "SubInfo""Nome" => "Submenu""Link" => ""); 
    $menu[$i++] = array("Madre" => "Submenu""Nome" => "Subelem""Link" => "?c=Subelem");
    così però non è più difficile da trasformare in xml?

  8. #8

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Guarda alla fine xml e' una sol ottima per gestire questi casi.

    Dal canto mio farei una cosa del genere visto che lo devi inserire nel tuo framework.

    Pagina creazione menu :
    step1 - crei l'xml -> salva xml

    step2 - tasto genera menu -> chiama uno script che legge l'xml e lo converte in un file menu.php/html (come preferisci, usa un nome std, mettilo su db/file di configurazione fai come piu' ti piace)

    step3 - includi il menu nelle pagine.

    Ovviamente il fatto che i dati possono essere anche fortemente annidati richiede che lo script di conversione sia fatto diciamo bene puoi farlo ricorsivo o iterativo stara' a te scegliere.

    Questa sol ti permette di mettere su un foglio xml i menu e averli sempre a disposizione. Qundi con una semplice invocazione dello script potresti rigenerare tutto quello che ti serve.

    Ovviamente e' un'idea come un'altra. Vedi te.

  10. #10
    vabbè al di la del come lo metto nel framework, vorrei capire come rappresentare con primitive php una struttura di un sito... vad o di xml a sto punto

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.