We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 24644
    • 6 Posts
    Решил сделать свой проект. Самому писать не было времени. Долго выбирал между прочими CMS и остановился на MODx.
    Выбор обусловлен возможностью многоуровневой структуры.
    Возник ряд вопросов на которые ответа найти не удалось:
    1. Как получить id текущего документа?
    У меня есть документ "папка". Т.е. контейнер для ряда документов низшего уровня. Не понимаю как вывести содержимое раздела. В смысле только содержимое раздела, а не все меню.
    2. Как можно организовать "глоссарий" - аналог Энциклопедии на PHP-Nuke?
    Необходимо создать словарь терминов с возможностью выбора литеры. Тоже не понял как сие соорудить.
    3. Опять же о меню. Как сделать отступ для вложенных подменю?
    Воспользовался готовым решением для замены конструкции UL-LI (http://modxcms.com/forums/index.php/topic,12948.0.html & http://www.muddydogpaws.com/development/wayfinder/parameters.html) все бы хорошо, но теперь меню выводится "плоское".

    Буду благодарен за любые подсказки, тем более с примерами
    Спасибо!
    huh
      • 24644
      • 6 Posts
      Первый вопрос снят. Просто [*id*] grin

      Для вывода содержимого раздела достаточно использовать конструкцию:
      [!DropMenu? &startDoc=`[*id*]` &limitLevel=`1` !]

      А вот с остальным пока по-прежнему undecided.
        • 33694
        • 742 Posts
        Отступ для вложенных меню лучше всего делать с помощью CSS:
        ul li ul {margin-left: 15px;}
        * я даже другого способа и не представляю... пробелами что ли?


        А для вывода содержимого раздела достаточно использовать конструкцию:
        [!wayfinder? &level=`1`!] wink
          • 24644
          • 6 Posts
          Признаю неправильность своего вопроса.

          Имеем меню:
          item1_level1
          .item7_level2
          ..item10_level3
          ..item11_level3
          ..item12_level3
          .item8_level2
          .item9_level2
          item2_level1
          item3_level1
          .item13_level2
          ..item14_level3
          ..item15_level3
          item4_level1
          item5_level1
          etc

          Хотелось бы не общего отступа для всех пунктов, а древовидности. Конструкцию UL-LI я заменил на div
          Т.е. если есть возможность получить значение уровня документа, то можно хоть пробелами. Вопрос в том как его получить.
          ЗЫ Форум перечитал. Не нашел.
            • 5675
            • 120 Posts
            Сделать такую фишку очень сложно, реально
            Нужно несколько картинок, из которых будет склеиваться та самая древовидная структура с помощью CSS и unordered lists, туториалы есть в сети
              Автор благодарит алфавит за любезно предоставленные буквы
              • 33694
              • 742 Posts
              > Т.е. если есть возможность получить значение уровня документа,
              > то можно хоть пробелами. Вопрос в том как его получить.

              Да уровень вложенности получить не так уж и сложно — есть наработки. Только как ты дальше, что будешь выравнивать, интересно. Это всё перемут, т.к.:


              > Сделать такую фишку очень сложно, реально
              > Нужно несколько картинок, из которых будет склеиваться...

              Ничего там сложного! Всё легко делается с помщью CSS, и без всяки туториалов понятно как.
              Но с картинками придётся повозиться, тут ты прав grin


              UPD
              Я тут подумал, и кажется внатуре, определённые сложности могут возникнуть. Но в общем случае, дерево (без вертикальных продлевающих) нарисовать не сложно.
                • 24644
                • 6 Posts
                Нда. Может какое другое решение подскажете?
                Сам по себе ресурс достаточно объемный планируется. Около 2000 страниц...
                В трех основных частях. Все это безобразие делать плоским меню? Мне кажется это несколько неправильно. wink
                С выпадающими меню тоже не хотелось бы связываться - для поисковиков не хорошо, да и просто отрисовывать все это...
                Вот и хотелось менюшку, в которой список дочерних документов отображается только для активного раздела.

                И по поводу "глосария" - никто не сталкивался?
                  • 24644
                  • 6 Posts
                  Quote from: [e
                  Bu$ter link=topic=13420.msg88312#msg88312 date=1174895350]
                  Да уровень вложенности получить не так уж и сложно — есть наработки. Только как ты дальше, что будешь выравнивать, интересно. Это всё перемут, т.к.:

                  Ну это не вопрос. Сделаю отступ в цикле:
                  For level>0 to level--{
                  print " ";}

                    • 33694
                    • 742 Posts
                    Ну как хочешь, дело твоё, пробуй.

                    Вот кусок из самопального снипета управляющего навигацей у меня на сайте. Только я из него выкинул всё лишее, и заодно подпилил немного под твои нужды, но т.к. проверять некогда было, то могут быть ошибки.

                    /* getInLevel возвращает уроверь вложенности документа $kid в папке $fid
                    если уровень "замерять" не получается, то возвращяет ноль */
                    function getInLevel($fid, $kid) {
                      global $modx;
                    
                      $childs = $modx->getChildIds($fid);
                      $level = 0;
                    
                      if ( in_array($kid, $childs) ) {
                    
                    	while( $kid != $fid ) {
                    		$father = $modx->getParent($kid,0,'id');
                    		$kid = $father['id'];
                    
                    /* этот кусок можно убрать, т.к. проверку я добавил сверху */
                    		if( $kid == 0 || $kid == null ) {  
                    			$level = 0;	// фиг знает что там произошло, но скорее всего
                    			break;		// kid находится не в папке fid
                    		}
                    /* конец куска который наверное можно убрать */
                    
                    		$level++; // увеличиваем значение уровня вложенности
                    	}
                      }
                      return $level;
                    }
                    * если обрамить код в теги <?php ?> (чтоб раскрасился) то русский текст внутри него крякозяблируется

                      • 24644
                      • 6 Posts
                      Спасибо.
                      Посчитать рекурсией ... просто и со вкусом.
                      Само по себе стало понятно, что действительно проще переделать сниппет.
                      Низкий поклон.