На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
    > скрипт для многоуровнего меню , вставка тегов рекурсией
      здравствуйте, скачал скрипт для многоуровневого меню
      вот вывод самого меню используются листы
      ExpandedWrap disabled
        <div id="nav">
            <ul>
                <li><a href="#"><b>Web Design</b></a>
                    <ul class="submenu">
                        <li><a href="http://woork.blogspot.com">Woork</a></li>
                        <li><a href="http://www.dzone.com">DZone</a></li>
                    </ul>
                </li>
                <li><a href="#"><b>Tech News</b></a>
                    <ul class="submenu">
                        <li><a href="http://www.mashable.com">Mashable</a></li>
                        <li><a href="http://www.cnet.com">CNET</a></li>
                    </ul>
                </li>
            <ul>
        <div>

      подскажите, а как эти самые ul и li вставлять рукерсией, так как количество подменю я не знаю, берутся из БД
        прекрасный вопрос, я считаю
        я бы, например, использовал циклы. да что "например", а даже именно так и делаю
        а вот как "рекурсией" даже не придумать сходу
          Цитата zera @
          я бы, например, использовал циклы

          можете подсказать как, у меня и так не идет
            подскажу, надо использовать какие-либо серверные языки
            кроме того скриптом рекомендую называть скрипты :)
            html это не скрипты
              Gwt, при чем тут раздел JavaScript Frameworks? Что используется на твоем сервере?
                Цитата gruy @
                Gwt, при чем тут раздел JavaScript Frameworks? Что используется на твоем сервере?

                Да может ошибся, может просто в javascript надобыло!!
                или я вообще путаю, что это решается javascript-ом

                Добавлено
                Цитата zera @
                подскажу, надо использовать какие-либо серверные языки
                кроме того скриптом рекомендую называть скрипты :)
                html это не скрипты

                я пишу на RoR!впринципе данные из БД получаю, а вот сделать меню с ними уже нет
                  Цитата Gwt @
                  данные из БД получаю, а вот сделать меню с ними уже нет

                  Как уже было сказано, пройдись циклом по полученным данным и построй html код для меню.
                    Цитата gruy @
                    Как уже было сказано, пройдись циклом по полученным данным и построй html код для меню.

                    так вот и не получается это
                      Показывай как делаешь. Или даже не пытался?
                        А как они в базе хранятся?
                          Цитата Мохнатый @
                          А как они в базе хранятся?

                          да там довольно все просто.
                          id, name, parent_id и все
                            Может попробовать nested_set?
                            Сообщение отредактировано: Мохнатый -
                              вот написал все-же вариант, но он очень очень кривой, но хоть что то!
                              ExpandedWrap disabled
                                <div id="myslidemenu" class="jqueryslidemenu">
                                    <%def recurs(id)%>
                                      <%@cat =Category.find_all_by_parent_id(id) %>
                                      <%if @cat.size!=nil%>
                                        <ul>
                                          <%@cat.each do |cat|%>
                                            <li><%=link_to cat.name%>
                                              <%@cat = Category.find_all_by_parent_id(cat.id)%>
                                              <%recurs(cat.id)%>
                                            <%end%>
                                          <%end%>
                                        </li>
                                      </ul>
                                    <%end%>
                                 
                                    <%get_category_parent.each do |parent|%>
                                      <ul>
                                        <li> <%=link_to parent.name%>
                                          <%recurs(parent.id)%>
                                        </li>  
                                      </ul>
                                    <%end%>
                                    <br style="clear: left" />
                                  </div>
                                Так у тебя рекурсии конечно нет никакой здесь. (аа, поправил уже =))
                                Я все-таки уверен, что проблема решается построением дерева при помощи nested_set.

                                Если не брать nested_set, то:
                                Суть в чем - есть парент, для каждого парента есть чайлд, этот чайлд в свою очередь может быть парентом.
                                Парент - это <ul>, чайлд - <li>.
                                Условие выхода из рекурсии - отсутствие чайлдов.
                                Получается что-то типа:

                                Метод должен быть реализован в модели:
                                До выполнения метода нужно найти самого верхнего парента.

                                ExpandedWrap disabled
                                  @@html = ""
                                   
                                  def build_menu parent_id
                                    parent = Menu.find parent_id
                                    @@html += "<ul>#{parent.name}"
                                    unless (childs = parent.childs?).nil?
                                      childs.each do |child|
                                        @@html += "<li>#{build_menu child.id}</li>"
                                      end
                                    else
                                    @@html += "</ul>"
                                    return @@html    
                                  end


                                Не уверен, что нет ошибок. Сейчас у себя реализую подобное.
                                Сообщение отредактировано: Мохнатый -
                                  нет не работает этот код, пытаюсь его заставить работать)))
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0764 ]   [ 15 queries used ]   [ Generated: 10.07.25, 02:12 GMT ]