Witam, mam problem z tworzeniem dynamicznego menu. Moja tablica menu wygląda tak:


  1. (
  2. [0] => stdClass Object
  3. (
  4. [id] => 11
  5. [nazwa] => test
  6. [glebokosc] => 0
  7. [sciezka] => test
  8. [podmenu] => Array
  9. (
  10. [0] => stdClass Object
  11. (
  12. [id] => 123
  13. [nazwa] => test1
  14. [glebokosc] => 1
  15. [sciezka] => test/test1
  16. [podmenu] => Array
  17. (
  18. [0] => stdClass Object
  19. (
  20. [id] => 234
  21. [nazwa] => test2
  22. [glebokosc] => 2
  23. [sciezka] => test/test1/test2
  24. [podmenu] => Array
  25. (
  26. [0] => stdClass Object
  27. (
  28. [id] => 34534
  29. [nazwa] => test3
  30. [glebokosc] => 3
  31. [sciezka] => test/test1/test2/test3
  32. [podmenu] => Array
  33. (
  34. )
  35.  
  36. )
  37. [... itd.]
  38.  


Chciałabym zrobić takie menu http://geedmo.github.io/yamm3/
Do budowy strony używam bootstrapa + powyższy skrypt.
Staram się stworzyć dynamicznie drzewo w formie megamenu yamm, ale mam kłopot z napisaniem skryptu tworzącego odpowiednie zagnieżdzenia html listy zgodnie z tym co jest na stronie Yamm. Na razie mam takie coś:

  1. function megamenu( $array ) {
  2. echo '<ul>';
  3. foreach( $array as $k ) {
  4. echo '<li>';
  5. echo '<a href="/'.$k->sciezka.'.html" title="'.$k->nazwa.'">'.$k->nazwa.'</a>';
  6. if ( empty( $k->podmenu ) == false ) {
  7. megamenu( $k->podmenu );
  8. }
  9. echo '</li>';
  10. }
  11. echo '</ul>';
  12. }


Ten skrypt przerabiałam 1000 razy, żeby pasowało do tego z przykładu na stronie yamm3 ale nie dałam rady.

Menu powinno wygladac tak:


  1. <div class="navbar yamm navbar-default navbar-fixed-top">
  2. <div class="container">
  3. <div class="navbar-header">
  4. <button type="button" data-toggle="collapse" data-target="#navbar-collapse-1" class="navbar-toggle"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="#" class="navbar-brand">Yamm Megamenu</a>
  5. </div>
  6. <div id="navbar-collapse-1" class="navbar-collapse collapse">
  7. <ul class="nav navbar-nav">
  8. <!-- Classic list -->
  9. <li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">List<b class="caret"></b></a>
  10. <ul class="dropdown-menu">
  11. <li>
  12. <!-- Content container to add padding -->
  13. <div class="yamm-content">
  14. <div class="row">
  15. <ul class="col-sm-2 list-unstyled">
  16. <li>
  17. <p><strong>Section Title</strong></p>
  18. </li>
  19. <li>List Item</li>
  20. <li>List Item</li>
  21. <li>List Item</li>
  22. <li>List Item</li>
  23. <li>List Item</li>
  24. <li>List Item</li>
  25. </ul>
  26. <ul class="col-sm-2 list-unstyled">
  27. <li>
  28. <p><strong>Links Title</strong></p>
  29. </li>
  30. <li><a href="#"> Link Item </a></li>
  31. <li><a href="#"> Link Item </a></li>
  32. <li><a href="#"> Link Item </a></li>
  33. <li><a href="#"> Link Item </a></li>
  34. <li><a href="#"> Link Item </a></li>
  35. <li><a href="#"> Link Item </a></li>
  36. </ul>
  37. <ul class="col-sm-2 list-unstyled">
  38. <li>
  39. <p><strong>Section Title</strong></p>
  40. </li>
  41. <li>List Item</li>
  42. <li>List Item</li>
  43. <li>List Item</li>
  44. <li>List Item</li>
  45. <li>List Item</li>
  46. <li>List Item</li>
  47. </ul>
  48. <ul class="col-sm-2 list-unstyled">
  49. <li>
  50. <p><strong>Section Title</strong></p>
  51. </li>
  52. <li>List Item</li>
  53. <li>List Item</li>
  54. <li>
  55. <ul>
  56. <li><a href="#"> Link Item </a></li>
  57. <li><a href="#"> Link Item </a></li>
  58. <li><a href="#"> Link Item </a></li>
  59. </ul>
  60. </li>
  61. </ul>
  62. </div>
  63. </div>
  64. </li>
  65. </ul>
  66. </li>
  67. </ul>
  68. </div>
  69. </div>
  70. </div>



Czy ktoś może spotkał się z takim problemem i ma jakiś gotowy skrypt albo może pomóc jak w zależności od zagłębienia menu zrobić inny kod html i przy okazji odpowiednio podomykać </li> i </ul>? No chyba, że są inne ciekawsze i prostsze do zastosowania skrypty do tworzenia takich dużych rozwijanych menu z tablicy podobnej do mojej.

Jeżeli post nie pasuje do menu to proszę o wyrozumiałość i przeniesienie posta.