We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 33694
    • 742 Posts
    Помню как-то давно, у нас тут на форуме, встал вопрос о превращении многоуровнего списка выдаваемого Wayfinder’om в красивую карту сайта — с узлами и ветвями. Задачу в ходе обсуждения сочли нетривиальной и браться никто не захотел.

    И вот буквально неделю назад, решил я на одном сайте сделать красивую, насколько это возможно, карту. Гугл в этот день оказался жадным на быстрые решения, и поэтому полчасика пришлось пофантазировать.
    В итоге, дефолтовый вывод Wayfinder’a — список любой глубины и размера, удалось стилизовать под дерево всего тремя строками стилей и тремя маленькми изображениями.
    Решение оказалось настолько простым и универсальным, что на радостях я внедрил его и на всех остальных сайтах smiley Вот живой пример: http://sudexpertiza.by/sitemap/ — не скажу, что пример этот удачный именно как карта сайта, но как демка — очень показательный.

    Однако, чудес не бывает и на деле всё оказалось не так гладко, как хотелось бы. sad
    Дело в том, что Wayfinder не считает единственный элемент на ветке дерева (один документ в папке) последним. Т.е. для него не проставляется атрибут class="last". Если документа два — второй будет помечен последним, а вот если один — последнего не будет. Не будем спорить о правильности такого подхода, а лучше обсудим как это исправить.
    Атрибут class со значеним "last" имеет ключевую роль в оформлении дерева, и без него дерево будет правильно выглядеть только если на сайте у вас нет папок со всего одним документом внутри. Для того, чтоб Wayfinder всё таки помечал такие документы последними в списке, нужно использовать небольшой хак.

    В файле wayfinder.inc.php меняем строку (93)
    if ($counter == ($numSubItems) && $numSubItems > 1) {
    на
    if ($counter == ($numSubItems) && $numSubItems >= 1) {
    Очевидно, что тут мы вместо знака ’больше’ (’>’) посто делаем ’больше либо равно’ (’>=’).


    Теперь как это использовать.
    1. На странице где будет распологаться карта, делайте вызов Wayfinder обрамляя его в контрейнер, как в следущем примере:
    <div id="#sitemap">
    [[Wayfinder? &startId=`0`]]
    </div>
    C помощью параметра &excludeDocs можно исключить из вывода [не]нужные документы.

    2. [Подправляете и] заливаете прилагаемою к стилям графику на хост.
    3. [Исправляете и ] добавлятее в свою таблицу стилей правила из файла tree.css находящегося в прилагаемом архиве.

    Вот, они, кстати, для любопытных и ленивых.
    #sitemap ul {
      margin: 0 0 0 1px;
      padding: 0 0 0 3px;
      background-image: url("t1.gif");
      background-repeat: repeat-y;
    }
    
    #sitemap ul li {
      margin: 0;
      padding: 0 0 0 14px;
      list-style: none;
      background-image: url("t2.gif");
      background-repeat: no-repeat;
      background-position: -3px 0;
    }
    
    #sitemap ul li.last {
      margin-bottom: 6px;
      background-image: url("t3.gif");
      background-repeat: no-repeat;
      background-position: -3px 9px;
    }
    
    


    Результат ниже на скриншоте.
      • 897
      • 1,620 Posts
      гуру! в ФАК!!
        "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

        Не используйте Revo для "просто сайтов". Используйте Evo

        Who can defeat the Russian bear?
        • 19164
        • 1,215 Posts
        Ай да молодца! Но вот правка wayfinder не круто, надо думать как обойти этот момент.
          DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

          Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

          [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
          • 16240
          • 64 Posts
          Quote from: [e
          Bu$ter link=topic=18411.msg115291#msg115291 date=1190382563]
          C помощью параметра &excludeDocs можно исключить из вывода [не]нужные документы.

          Ставлю &excludeDocs=`162`, в параметре сниппета, и не работает, все равно выводит содержимое папки которое в карте не нужно! Это наверное потому что стоит &ignoreHidden=`true`, чтобы выводились все папки, даже те у которых стоит "не отображается в меню", но тогда как реализовать, чтобы папки, которые относятся к каталогу и их содержимое выводится с помощью Дитто, а в главном меню не видны, тоже были видны на карте сайта, а одну папку скрыть, где админские страницы, типа страница 404 и т.д.? Или передвигать все папки внутрь, тех, что отображаются, ставить для них "отображается в меню", а в вызове основного меню сайта &level=`1` поставить? Так можно, но страниц и файлов много, долго очень, что с этим &excludeDocs может быть никто не знает? huh

          Вайфайндер 1.0.1 может в этом проблема? Кстати, в нем в 93 строке ничего такого нет и вообще не предвидется нигде, но я предложенным вариантом не пользуюсь, поэтому просто, для информации.... rolleyes
            • 33694
            • 742 Posts
            Quote from: koshara at Sep 22, 2007, 09:37 AM

            Quote from: [e
            Bu$ter link=topic=18411.msg115291#msg115291 date=1190382563]
            C помощью параметра &excludeDocs можно исключить из вывода [не]нужные документы.
            Ставлю &excludeDocs=`162`, в параметре сниппета, и не работает, все равно выводит содержимое папки которое в карте не нужно!
            ...
            Вайфайндер 1.0.1 может в этом проблема?
            ...
            Да, именно в этом. Ставьте последний.
            И подобные вопросы нужно задавать в ветке про Wayfinder, а не про стилизацию его вывода.

            Но вот правка wayfinder не круто, надо думать как обойти этот момент.
            Согласен.
            Но обойти никак, единственный вариант — давить на автора. Нужно попросит его сделать такое поведение дефолтным, или ввести допольнительную опцию, если найдутся причины по которым, так как нам нужно, по дефолту быть не должно. Я ему напишу, посмотрим, что ответит.
            В стилях изменить ничего всё равно не получится. Я уже писал выше, что на идентификации последнего элемента в каждом уровне держится вся идея.
              • 19164
              • 1,215 Posts
              Да по идее единственному документу в папке нужно одновременно присваивать класс первого и последнего элемента.
                DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

                Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

                [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
                • 16801
                • 18 Posts
                Зачет! Придется опять праставлятся, приходи пива налью
                  • 33694
                  • 742 Posts
                  Писал 22 сетнября
                  Bu$ter"]...
                  I’m have developed universal CSS rules for creating site maps in the form of a tree from default output Wayfinder. But, Wayfinder will not set class="last" for a single document in a folder. It seems unfair and compels to do "hack" (in that message it is shown - only one symbol is necessary).
                  And, please, add [+wf.docalias+] placeholder (it will be replace to document alias). I’m using him (before self made hack) for including menu images conformable to aliases.
                  ...
                  И вот, спустя почти два месяца:
                  Thanks for the notes, I will look into updating these for the next release.

                  Kyle
                  Т.ч. если он всё правильно понял, то со следующей версии Wayfinder’a ничего хакать больше не придётся.
                  Правда, фиг знает когда эта версия будет smiley
                    • 897
                    • 1,620 Posts
                    ну хоть движуха есть
                      "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

                      Не используйте Revo для "просто сайтов". Используйте Evo

                      Who can defeat the Russian bear?
                      • 19164
                      • 1,215 Posts
                      Надо б автору еще идей подкинуть. Мне пришлось тут jQuery аккордион делать, там нужно было использовать [+wf.level+] - плейсхолдер уровня вложенности в outerTpl. По умолчанию такого нет, пришлось самому делать.
                        DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

                        Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

                        [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]