We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 23637
    • 43 Posts
    Привет!

    Сделал я template, и в правой колонке сайта показываю 3 последнии добавленные фотогалереи
    [!MaxiGallery? &childgalleries_ids=`6` &display=`childgalleries` &childgalleries_order_by=`createdon` &childgalleries_limit=`3` !]

    Но когда пользователь идет в саму фотогалерею (id = 6), то необходимо показывать в этой колонке список последных новостей, к примеру.

    Вопрос к знатокам, как мне менять содержимой колонки, в зависимости на какой странице нахожусь или какой родитель у этой странице, без создания нового template, потому что разница будет только в правой колонке.

    Спасибо за ответ!  smiley
      • 33694
      • 742 Posts
      Привет.
      Самый интересный вопрос, кстати. К единому мнению так и не пришли, мне кажется, не только из-за разных задач, а потому ещё, что представление о правильности у всех разное. Лично я писал (и пищу — подправляю при каких-то изменениях) снипет, который анализирует кучу параметров и вызывает другие сниппеты передавая им параметры прямым или косвенным образом зависящие от id текущего документа и других параметров. Такой подход к решению почти и не пахнет универсальностью, но система получается очень гибкой.

      В вашем случае проще всего будет заюзать PHx (плагин такой).
        • 2500
        • 2 Posts
        Quote from: podeig at Dec 05, 2007, 01:41 PM

        Привет!

        Сделал я template, и в правой колонке сайта показываю 3 последнии добавленные фотогалереи
        [!MaxiGallery? &childgalleries_ids=`6` &display=`childgalleries` &childgalleries_order_by=`createdon` &childgalleries_limit=`3` !]

        Но когда пользователь идет в саму фотогалерею (id = 6), то необходимо показывать в этой колонке список последных новостей, к примеру.

        Ну можно сделать такойже template для фотогалереи, но чуток его изменить вместо вызова MaxiGallery в правой колонке, вызывать новости через Ditto
          • 23637
          • 43 Posts
          Спасибо за советы.

          Продублировать темплэйт это самое простое. Хотелось бы поставить в колонки условие, которое в зависимости от родительского документа будет вставлять то что надо в колонку.

          Как можно узнать ид корневого родительского документа?
            • 33694
            • 742 Posts
            Как можно узнать ид корневого родительского документа?
            Самый простой вариант — [[UltimateParеnt]]
              • 28814 ☆ A M B ☆
              • 1,086 Posts
              Quote from: podeig at Dec 06, 2007, 03:34 AM

              Спасибо за советы.
              Продублировать темплэйт это самое простое. Хотелось бы поставить в колонки условие, которое в зависимости от родительского документа будет вставлять то что надо в колонку.
              Как можно узнать ид корневого родительского документа?
              Можно попробовать такой сниппет:
              $id = $modx->documentIdentifier;
              $parent = $modx->getParent($id,1,'id'); //получаем ID родительского документа
              
              //Самое примитивное - перечислить в сниппете массив ID родительских документов и соответствующие им чанки.
              $array = array (
                  10 => "{{CHUNK1}}", //ID родительского документа 10 и соответствующий ему чанк CHUNK1
                  20 => "{{CHUNK2}}", //ID родительского документа 20 и соответствующий ему чанк CHUNK2
                  30 => "{{CHUNK3}}"  //ID родительского документа 30 и соответствующий ему чанк CHUNK3
              );
              
              foreach ($array as $key => $value) {
                  if ($key == $parent["id"]) {
                      return  $value;
                  }
              }
              

              И также нужно будет создать чанки CHUNK1 - CHUNK3 с необходимым наполнением: просто HTML код или вызов специальных сниппетов.
                Разработка сайтов и программных модулей на MODX.
                Опыт работы на MODx с 2005 года. Высокое качество.
                Компания Baltic Design Colors: http://www.bdcolors.ru.
                • 23637
                • 43 Posts
                Большое спасибо за советы!

                На этих примерах начну разбираться с програмированием на модексе. smiley

                $modx->getParent возвращает только ближайшего родителя? или можно получить самого верхнего (корневого) предка?
                  • 33694
                  • 742 Posts
                  Используя getParent() в цикле (или рекурсивно) можно получить родителя любого уровня.