Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] tree menu without JS, tree menu, menu drzewko, php, bez JS
sekwenser
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.08.2009

Ostrzeżenie: (0%)
-----


Witam, proszę o uważne zapoznanie się z problemem i konstruktywną pomoc..

konstruktywna pomoc - schemat kodu, zarys kodu, pseudokod itp
niekonstruktywna pomoc - posty w stylu "spróbuj może tego, może tamtego, sprawdź ten link" - nie wiesz jak lub nie chce Ci się pomóc to nie pisz..

Problem:

jeden plik zawierający drzewiaste menu, includowany na podstrony, menu na podstronach z rozwiniętymi tylko tymi gałęziami które prowadzą do aktualnej podstrony..
Wchodzisz na stronę, masz menu z trzema pozycjami np: bramy garażowe, bramy segmentowe, bramy przemysłowe, klikasz na garażowe, przechodzisz na podstronę na której masz to samo menu z tym że pomiędzy pozycją pierwszą i drugą pojawia się submenu, to submenu może mieć kolejne podmena, ale są one zwinięte dopóki użytkownik nie rozwinie go.. jeżeli użytkownik będąc w jakimś submenu, kliknie na link należący do wyższego menu to aktualne menu jest zwijane a rozwijane to wybrane.. przykład: www.normstahl.pl, menu pionowe z lewej strony.. moje menu ma być bardziej rozbudowane.. będzie więcej zagnieżdżeń.. samo menu napisałem już w xhtml z wykorzystaniem listy dl, teraz muszę dorobić mechanizm generujący na jego podstawie odpowiednia mena na podstrony.. pewnie nie jest to dobry koncept, próbuję wymyślić coś z tablicami ale ciężko mi to idzie.. przerasta trochę mnie ten temat.. może ktoś z was spotkał się z czymś takim albo zechce trochę mi pomóc.. na forum często jest wiele niedomówień, jeśli ktoś chciałby dowiedzieć się dokładniej o co chodzi to zapraszam na gg: 1660552, podam szczegóły i się dogadamy, nie mówię że pomoc musi być bezinteresowna ;)

Efekty mojej walki:

wygooglowałem między innymi bibliotekę phplayersmenu-3.2.0, wszystko działa, problem w tym że to obszerna jak dla mnie biblioteka, której nie potrafię zmodyfikować pod moje potrzeby.. próbuję też z tablicami zawierający elementy menów dane poziomu ale idzie to jak krew z nosa.. a jucha ma buchać ;)

Pomoc niekoniecznie bezinteresowna ale nie chcę też pisać tego jako zlecenie ponieważ pewnie nie stać mnie na taką usługę, niemniej możemy się jakoś dogadać, moje gg: 1660552, email: sekwenser@o2.pl, oczywiście filantropijna pomoc na forum bardzo mile widziana :)

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Cytat(pablo89pl @ 1.12.2009, 16:10:33 ) *
SPróbuj może tak:
To jest "niekonstruktywna pomoc"! Co Ty wyprawiasz pablo89pl(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/biggrin.gif)

Jeśli plik z menu nie generuje go automatycznie, tylko jest zrobiony raz, na stałe to niestety każde zagłębienie musi być ukryte, a dla każdego zagłębienia w adresie musi odpowiadać jakaś zmienna.

Czyli jeśli masz adres:
Kod
http://TwojaStrona.pl/index.php?menu=1&submenu=2&subsubmenu=4
W takim wypadku, w tym includowanym pliku odbierasz zmienne $_GET i w zależności od ich ilości, i wartości ukrywasz lub pokazujesz określone części menu (tak jak nakreślił to kolega wyżej). Poszczególne zmienne z adresu będą odpowiadały za kolejny poziom zagłębienia.

Szybciej, i wygodniej będzie napisanie skryptu, który stworzy te menu dynamicznie. Jeśli menu jest stałe i nie zależy od niczego najszybciej będzie poprzez utworzenie tablicy ze strukturą menu, następnie pobranie menu i pokazanie tylko tych dla których id elementu w tablicy odpowiada temu z adresu. Przykładowo:

  1. $menu = array(
  2. 'Bramy garażowe' => array(
  3. 'Bramy uchylne' => array(
  4. 'PROMINENT' => array('Bezpieczeństwo','Szczegóły techniczne','Kolory','Wyposażenie dodatkowe','Drzwi w bramie'),
  5. 'ELEGANT' => array(),
  6. 'STYLE' => array()
  7. ),
  8. 'Bramy sekcyjne górne g60' => array(
  9. 'g60 LINE' => array(),
  10. 'g60 TREND' => array(),
  11. 'g60 CLASSIC' => array()
  12. ),
  13. 'Bramy sekcyjne górne Euro' => array(),
  14. 'Bramy sekcyjne boczne' => array()
  15. ) ,
  16. 'Bramy przemysłowe' => array(),
  17. 'Automaty' => array(),
  18. 'Drzwi garażowe' => array(),
  19. );

Generowanie menu polega na pobraniu wszystkich poziomów z adresu
  1. $p1 = $_GET['menu'];
  2. $p2 = $_GET['submenu'];
  3. $p3 = $_GET['subsubmenu'];
  4.  
  5. //tworzenie
  6. foreach ($menu as $p1_id => $p1_value){
  7. echo '-'.$p1_id."<br />\n";
  8. if ($p1_id==$p1){
  9. foreach ($p1_value as $p2_id => $p2_value){
  10. echo '--'.$p2_id."<br />\n";
  11. if ($p2_id==$p2){
  12. foreach ($p2_value as $p3_id => $p3_value){
  13. echo '---'.$p3_id."<br />\n";
  14. }
  15. }
  16. }
  17. }
  18. }


Może być jakaś pomyłka w kodzie powyżej, bo nie sprawdzałem, pisałem z głowy (czyli z niczego (IMG:style_emoticons/default/biggrin.gif) ).
Pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 08:47