We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 16239
    • 49 Posts
    Quote from: [e
    Bu$ter link=topic=21754.msg147148#msg147148 date=1205770003]
    Каюсь — виноват. Не верно трактавал параметры незнакомого ранее сниппета. Стыдно.

    Однако, код получения родителя даже самого верхнего уровня (из корня) всего на две три строки больше того, что я привёл. Поэтому продолжаю настаивать, что такие мелочные вызовы лучше реализовывать самому, чем дёргать чужие сниппеты.
    Прошу прощения за отхождение от темы.
    Насчет того, что нужно мелочные вызовы реализовывать самому, даже спорить не буду - вы правы на 100%.
    Я, например, не знаю как это сделать. Если вы предложите вариант в три строки, который будет брать имя/алиас самого верхнего документа - многие скажут вам спасибо. Я буду первый. cool
      • 33694
      • 742 Posts
      Исправляюсь:
      <?php
       $docId = $modx->documentIdentifier;
       while( ($papant = $modx->getPageInfo($docId, 1, 'parent, alias')) && ($papant['parent'] != 0) ) 
       {
        $docId = $papant['parent'];
       }
       return $papant['alias'];
      ?>
      но если основная цель всё таки — получить алиас родителя, а не чистый код, то можно и так:
      <?php
       $papant['parent'] = $modx->documentIdentifier;
       while( ($papant = $modx->getPageInfo(($docId = $papant['parent']), 1, 'parent, alias')) && ($papant['parent'] != 0) ) {}
       return $alias = $papant['alias'];
      ?>
        • 33694
        • 742 Posts
        А вообще, «настоящие герои всегда идут в обход!»
        <?php
         $a = explode('/', $_GET['q']);
         return (count($a) >= 1) ? $a[0] : 'deflang';
        ?>
        cool
          • 25463
          • 61 Posts
          Я в данное время как раз разрабатываю сайт с несколькими языковыми версиями и использую следующий принцип:
          данные на других языках хранятся в доп. переменных и поля называются определенным образом (например, pagetitle_en)
          В файле htaccess я немного изменил правило
          было RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
          стало RewriteRule ^(ru|en|de)/(.*)$ index.php?q=$2&lang=$1 [L,QSA]
          Параметр lang - говорит, какой используется язык

          И адрес страницы будет иметь, к примеру, следующий вид
          http://www.site.ru/ru/contacts/contact1.htm
          http://www.site.ru/en/contacts/contact1.htm

          Также написал несколько сниппетов, которые выводят поля в зависимости от языка
          Например, если язык русский - то будет использоваться поле pagetitle, а если английский - то будет браться значение доп. переменной pagetitle_en
          например, если понадобится добавить французский язык, то правило будет таким
          стало RewriteRule ^(ru|en|de|fr)/(.*)$ index.php?q=$2&lang=$1 [L,QSA]
          Вручную надо будет создать доп. переменные с постфиксом _fr
          И может быть, кое-что поправить в сниппетах.
          Всего работы максимум минут на 15.

          Зато не будет никаких проблем с тем, что русскую версию страницы создали, а английскую - забыли и прочее.
          Некоторым неудобством данного метода можно считать, что в админке будет одновременно открываться очень много полей и расходоваться трафик, но, думаю, что те фирмы, которые создают многоязыковые сайты для своего бизнеса, вполне могут себе это позволить.
            • 16239
            • 49 Posts
            Роман, присоединяйтесь к обсуждению!
            http://modxcms.com/forums/index.php/topic,23820.0.html