We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 19959
    • 22 Posts
    Люди, не дотумкаю как можно реализовать несколько языковых версий с переключателем (Рус Eng Fran Espa) undecided
    Дублировать дерево несколько раз?
      • 28814 ☆ A M B ☆
      • 1,086 Posts
      Quote from: Modius at Jan 18, 2008, 02:26 AM

      Дублировать дерево несколько раз?
      Обычно так и поступаем. Другие варианты слишком неудобны, к сожалению.
      Возможно, в будущих версиях MODx появится нормальная поддержка многоязычности.
        Разработка сайтов и программных модулей на MODX.
        Опыт работы на MODx с 2005 года. Высокое качество.
        Компания Baltic Design Colors: http://www.bdcolors.ru.
        • 19959
        • 22 Posts
        Ок. Спасибо. smiley
          • 17459
          • 268 Posts
          Да, дублированием дерева.
          Но можно шаблоны делать одинаковые, а то, что меняется хранить в чанках, так проще chunk_ru chunk_en ...
          ну и небольшой сниппет, который я использую, чтобы получить чанки:

          то есть вместо {{chunk}} пишу [[chunk? &chunk=`chunk`]], а он уже сам определяет, какой именно чанк подгрузить...


          <?php
          $parentid = $modx->runSnippet('UltimateParent');
          switch($parentid) {
          case 1: $lang = '_ru'; break;
          case 2: $lang = '_de'; break;
          case 3: $lang = '_en'; break;
          default: $lang = '_ru';
          }
          $chunk.= $lang;
          return $modx->getChunk($chunk);
          ?>
            • 19959
            • 22 Posts
            Quote from: Lord at Jan 19, 2008, 08:04 AM

            Да, дублированием дерева.
            Но можно шаблоны делать одинаковые, а то, что меняется хранить в чанках, так проще chunk_ru chunk_en ...
            ну и небольшой сниппет, который я использую, чтобы получить чанки:

            то есть вместо {{chunk}} пишу [[chunk? &chunk=`chunk`]], а он уже сам определяет, какой именно чанк подгрузить...

            Lord Daedra, спасибо! Любопытное решение - буду пробывать.
              • 16239
              • 49 Posts
              Прикольно!
              Спасибо за наводку, мне кажется что можно пойти еще один путем.
              Он более гибкий, не нужно вносить в сниппет названия языков.
              В любом случае, дерево у нас начинается с папки с обозначением языка - ru, ua, en и еще хз что.
              Значит, для того, чтобы понять какой язык и выбрать соответствующий чанк, нужно просто выяснить название верхнего родителя.
              Для этой цели лучше чем ultimateparent подходит сниппет getfield.
              У меня чанки называются соответсвенно языкам:
              chunk.ua
              chunk.ru
              chunk.en

              А вот собсно и сам код сниппета chunkselect
              Вызывается так
              [[chunkselect? &chunk=`ваш_чанк`]]

              <?php
              $lang = $modx->runSnippet('GetField', array('parent' => 1)); 
              $chunk.= ".".$lang; 
              return $modx->getChunk($chunk); 
              ?>
              
                • 1788
                • 1,103 Posts
                Quote from: koshaque at Mar 15, 2008, 07:24 AM

                А вот собсно и сам код сниппета chunkselect
                Вызывается так
                [[chunkselect? &chunk=`ваш_чанк`]]

                <?php
                $lang = $modx->runSnippet('GetField', array('parent' => 1)); 
                $chunk.= ".".$lang; 
                return $modx->getChunk($chunk); 
                ?>
                

                Только удобнее так
                <?php
                $lang = $modx->runSnippet('GetField', array('parent' => 1, 'field' => 'alias'));
                ...
                ?>
                  • 33694
                  • 742 Posts
                  Не следил за ходом беседы и не знаю зачем это всё вам нужно, но то, что пишите неправильно - факт.
                  Зачем лишний раз дёргать бд? Получайте все нужные данные вручную, а не через вызовы левых сниппетов, которые могут быть даже не установлены. „Опускаться“ до sql запросов ради таких вещей конечно же врядли стоит, но всё необходимое API у системы есть:
                  $parent = $modx->getParent($modx->documentIdentifier, 1, 'alias');
                  $palias = $parent['alias'];
                    • 16239
                    • 49 Posts
                    Quote from: [e
                    Bu$ter link=topic=21754.msg147066#msg147066 date=1205747744]
                    Не следил за ходом беседы и не знаю зачем это всё вам нужно, но то, что пишите неправильно - факт.
                    $parent = $modx->getParent($modx->documentIdentifier, 1, 'alias');
                    $palias = $parent['alias'];

                    Этот вызов получает алиас самого верхнего родителя? Мне кажется, что нет.
                    Прежде чем писать, лучше следить за ходом беседы..
                      • 33694
                      • 742 Posts
                      Каюсь — виноват. Не верно трактавал параметры незнакомого ранее сниппета. Стыдно.

                      Однако, код получения родителя даже самого верхнего уровня (из корня) всего на две три строки больше того, что я привёл. Поэтому продолжаю настаивать, что такие мелочные вызовы лучше реализовывать самому, чем дёргать чужие сниппеты.
                      Прошу прощения за отхождение от темы.