Вход • Регистрация

Изменение шаблона вывода карты сайта

  • 24 апреля 2012 г.
  • Здравствуйте. В текущей версии карта сайта генерится следующим образом.
    Код
    echo '<p style="margin-left:'.$row["margin"].'px;"><a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a></p>'

    На мой взгляд это не очень наглядно.

    Помогите пожалуйста переделать эту красоту под <ul><li>

    Спасибо!
    • 24 апреля 2012 г.
    • Здравствуйте!
      Так а проблема в чем? Вы все верно указали, участок кода тот. Снаружи цикла ставите ul, а вместо p ставите li. Только отступы надо будет классами, наверное, делать, типа li class=$row["margin"]
      ну или какую-нибудь $n вне цикла завести и $n++ для каждой рекурсии делать.
      • 25 апреля 2012 г.
      • Это-то понятно. А как сделать чтобы вложенные страницы отображались как вложенные списки?

        P.S. Мне кажется, что в будущих версиях сайта это всем пригодится.
        • 25 апреля 2012 г.
        • Пригодится? А зачем? Если внешний вид одинаков, то не всегда надо искать себе проблем в виде переделки исходного кода. Оформить р круглыми точками как в списке li можно стилями, отступы есть.
          "Как сделать?" - ну надо посидеть, поковыряться, поэкспериментировать с циклами. Или Вы ждете готовый код? Не вижу загвоздки, просто время, у меня лично его нет, не поймите неправильно.
          Это задача из общего программирования на РНР, как в циклах сделать вложенный вывод li. diafan.CMS тут особо не при чем.
        • 02 октября 2012 г.
        • Реализовали ли Вы то, что хотели?
          • 02 октября 2012 г.
          • То же присоединяюсь к вопросу про вложенные списки, так и красивее и понятнее, а не просто общим "гамузом" и поди там разберись...
  • 02 октября 2012 г.
  • Ребята, в чем вопрос? Как сделать вывод вложенных списков?
    Вы не знаете как сделать вместо этого
    Код
    foreach ($result as $row)
    {
    echo '<p style="margin-left:'.$row["margin"].'px;"><a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a></p>';
    }

    это?
    Код
    echo '<ul>';
    foreach ($result as $row)
    {
    echo '<li><a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a></li>';
    }
    echo '</ul>';

    В чем Олег Александрович с медалькой веб-разработчика не может разобраться? В примитивнейшем РНР-цикле? Не стыдно?
    • 02 октября 2012 г.
    • Ого, спасибо! Надо попробовать. Все же на карте сайта визуальное выделение вложенности очень в тему будет.
    • 03 октября 2012 г.
    • Виталий, наверное уже начинаю наглеть, но либо у Вас ошибка, либо я торможу, что скорее всего.
      Вот код из карты сайта:
      Код
      if ($result)
      {
      foreach ($result as $row)
      {
      if(!empty($row['map_no_show']))
      {
      continue;
      }
      echo '<p style="margin-left:'.$row["margin"].'px;"><a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a></p>';
      }
      }

      Как эта часть должна выглядеть после вашего преобразования?
      Код
      if ($result)
      {
      echo '<ul>';

      foreach ($result as $row)
      {
      if(!empty($row['map_no_show']))
      {
      continue;
      }
      echo '<li><a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a></li>';
      echo '</ul>';
      }
      }

      Что-то у меня фигня какая-то получается. А вообще я просто хотел бы как-то визуально выделить разные уровни вложенности. Ну типа кружочки какие-то, а лучше вообще свой значок для каждого уровня вложенности.
      Помогите пожалуйста кто-нибудь.
      • 03 октября 2012 г.
      • Вообще-то у меня закрывающий ul вне цикла. Ваша же конструкция любой браузер в кондрашку вгонит
      • 03 октября 2012 г.
      • Чтобы вложенности были красиво, надо ul в ul вкладывать, согласно уровням вложенностей, она в переменной margin приходит из модели. Это надо чуть поработать, чтобы красоту правильную навести.
        Если не получится, я постараюсь завтра время найти. Там минут 15 максимум. Ну и время заполнить вложенности
        • 03 октября 2012 г.
        • Виталий, я сам постараюсь сделать. Если вот совсем никак не будет получаться, тогда напишу здесь. Не хочется наглеть.
  • 06 октября 2012 г.
  • Виталий или может кто-то еще, подскажите пожалуйста, за что в карте сайта можно зацепиться, чтобы определить есть ли у данной страницы вложенные?
    Поясню. Хочу выделить страницы которые имеют вложенные, от тех, кто нет. Но условие не знаю как написать, т.к. непонятно можно вообще это определить в файле карты сайта.
    • 06 октября 2012 г.
    • Владимир, Вы немного неверно мыслите, если Вам надо "определить вложенные".
      Смотрите, есть функция map_parent_id(), которая в map.model.php
      Она рекурсивная, т.е. вызывает сама себя, при углублении во вложенности. Для обозначения глубины вложенности там переменная $margin. По началу $margin=0. Она =0, когда у нас корневые страницы собираются из базы. Как только у какой-то страницы попадается вложенность - функция вызывает сама себя, плюсует $margin+10 и обходит вложенность. Если еще в какой-то подстранице есть вложенность, функция ныряет еще глубже и т.д. Затем возвращается обратно.
      Идеальный вариант:
      выводите ul, в ней li для нулевого уровня. Если попадается вложенность, то сразу в текущем li выводится снова конструкция ul li /ul и т.д. Будет адекватная валидная вложенность списков. Как раз с разными отступами и точками-маркерами разной жирности.
  • 06 октября 2012 г.
  • Виталий, я хочу выделить страницы у которых есть вложенные, от тех, у которых нет. За $margin не зацепиться в таком случае. Потому что вложенные могут быть при разных значениях $margin и при 0 и при 10 и т.д.
    • 08 октября 2012 г.
    • Владимир, это задача общих основ алгоритмизации. Сделайте через флаги, например, которые плюсуются если рекурсия углубляется больше чем на уровень. Или через спан какой-нибудь, который внутри списка выходит, если вложение есть, а далее уже стилями. Все зависит от задачи и того, как этого визуально можно достичь. Перед программистом, который делал модуль карты сайта стояла задача построить иерархическое дерево всех страниц сайта - он её реализовал через рекурсивную функцию с маржинами. Эту задачу можно решить еще кучей других способов.
      По сути, модуль - это простой запрос к одной таблице сайта и вывод информации. Не подходит рекурсия, переделайте алгоритм полностью. Сделайте не рекурсию, а обычные циклы. Еще можно одним запросом забрать все страницы из базы, загнать их в массив, а затем массив уже разобрать и вывести со вложенностями.
      • 09 октября 2012 г. , редакция: 09 октября 2012 г.
      • Виталий, если бы я все это умел, даже и не лез бы на форум. :) Ладно, буду в ручную карту сайта создавать. Просто думал что в движке есть какой то параметр по которому можно отделить страницы с дочерними и без.
        • 09 октября 2012 г.
        • Владимир, ну какой "параметр"? Я еще раз повторюсь: таблица в БД одна, запрос к ней один, вывести страницы можно по всякому. Работает это все на РНР - движок конкретно в этом случае не причем.
          И кстати, я до сих пор не пойму, зачем Вам выделять страницы без вложенностей. Задача-то какая? Для пользователя красиво сделать? Тогда можно флагами, как я говорил, и стилями. Для этого переписывать не надо модуль. Если списки li нужны, то это тоже несложно решается, я предлагал выше сделать, Вы не стали наглеть
          • 10 октября 2012 г.
          • Виталий, задача визуально как-то выделить страницы. Но это не просто кружочки допустим поставить для всех страницы. Вашу идею с li я просто не совсем понимаю, как это будет выглядеть.
            Я пытался одним значком отметить страницы без вложенных и другим с вложенными и третьим собственно сами вложенные. Или же хотя бы родительские и дочерние страницы как-то визуально выделить. Вот такой я геморойщик. :)
            • 10 октября 2012 г.
            • Я конечно извеняюсь, но помоему в вас недостаточное понимание CSS.
              • 10 октября 2012 г.
              • Ну так поделитесь, пониманием CSS. Причем тут это то?
            • 10 октября 2012 г.
            • То, что я предложил 03 октября, как раз и есть такие валидные вложенные списки. Они будут с отступами и разными точками в зависимости от вложенности.
              • 11 октября 2012 г.
              • Виталий, если будет желание и время, сделайте пожалуйста такой вариант. А то я в тупку жуткую впал, может то, о чем Вы писали и есть, что мне нужно. :)

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум