We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 9080
    • 3 Posts
    Quote from: AKots at Apr 30, 2011, 07:20 AM

    Quote from: esal at Apr 30, 2011, 06:58 AM

    Как убрать из списка названия разделов, оставить только названия подразделов.
    Лично я бы написал свой сниппет, делающий все, что требуется, хотя, наверное, можно и с помощью Wayfinder (конкретно как – не могу сказать).


    Можете подсказать как его реализовать?
      • 9080
      • 3 Posts
      Quote from: antey at Apr 30, 2011, 10:54 AM

      Quote from: AKots at Apr 30, 2011, 10:30 AM

      Quote from: antey at Apr 30, 2011, 09:30 AM

      Самый простой вариант, убрать галочку "Показывать в меню".
      Вроде бы дочерние страницы в этом случае не попадают в список (могу и ощибаться).
      Ах. Да. Можно и дитто задействовать.

      Дочерние страницы не попадут в этом случае. Это мне не подходит.
      А дитто как использовать ? Есть пример, подходящий для моего случая?
        • 785
        • 2,113 Posts
        Quote from: esal at May 02, 2011, 12:28 AM

        Можете подсказать как его реализовать?
        Если разбираетесь в php, очень просто – парой запросов к базе получить все необходимое, а потом вывести в нужном виде. Ditto, на мой взгляд, потребует больше усилий, но, если проблемы с программированием на php, придется использовать Ditto.
          Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
          Статьи о MODx, регулярно новые публикации
          • 785
          • 2,113 Posts
          Вот примерно такой скрипт можно использовать (запускать не пробовал, возможно потребуются доработки):
          <?php
          $startId=3;
          $ids=array();
          foreach ($modx->documentMap as $numb => $document) {
          	foreach ($document as $parent => $id) {
          		if ($parent == $startId)
          			$ids[] = $id;
          	}
          }
          $result = $modx->db->query("SELECT id, pagetitle FROM " . $modx->getFullTableName("site_content") . " WHERE parent IN (".implode(',', $ids).") ORDER BY parent ASC, menuindex ASC");
          $output = '<select>';
          while ($row = $modx->db->getRow($result)) {
          	$output .= '<option value="'.$row['id'].'">'.$row['pagetitle'].'</option>';
          }
          $output .= '</select>';
          return ($output);
          ?>
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 9080
            • 3 Posts
            Спасибо, скрипт работает )
            Тогда такой вопрос, как исключить из списка не опубликованные документы(они еще курсивом напечатаны в левом меню). На сайте их нет, но в меню они показываются, так как запрос к БД не учитывает этого?

              • 9080
              • 3 Posts
              А можно сделать еще группировку такого вида в одном цикле из предыдущего вашего примера:

                • 785
                • 2,113 Posts
                Quote from: esal at May 02, 2011, 12:15 PM

                как исключить из списка не опубликованные документы
                добавить в середину:
                WHERE parent IN (".implode(’,’, $ids).") AND published = ’1’ AND type = ’document’ AND deleted = ’0’ ORDER BY

                Quote from: esal at May 02, 2011, 12:29 PM

                А можно сделать еще группировку
                Можно, но это уж сами делайте.
                  Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                  Статьи о MODx, регулярно новые публикации
                  • 9080
                  • 3 Posts
                  Решил сейчас сделать группировку
                  Вот этот код получился, но не работает, к сожалению:
                  <?php
                  $startId=3;
                  $ids=array();
                  foreach ($modx->documentMap as $numb => $document) {
                     foreach ($document as $parent => $id) {
                        if ($parent == $startId) {
                           
                           $res = $modx->db->query("SELECT pagetitle FROM " . $modx->getFullTableName("site_content") . " WHERE id IN (".implode(',', $id).")");
                           $row = $modx->db->getRow($res)
                           $ou = '<optgroup label="'.$row['pagetitle'].'">';
                           
                           $result = $modx->db->query("SELECT pagetitle FROM " . $modx->getFullTableName("site_content") . " WHERE parent IN (".implode(',', $id).")");
                           while ($r = $modx->db->getRow($result)) {
                                 $ou .= '<option value="'.$r['pagetitle'].'">'.$r['pagetitle'].'</option>';
                           }
                           $ou .= '</optgroup>';
                        }   
                      }
                  }
                  
                  return ($ou);
                  ?>
                  


                  В чем проблема здесь, подскажите плиз?