We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 25192
    • 18 Posts
    А можно поподробнее что за сниппет, который определяет где находится посетитель, и кнопки с сохранением позиции на сайте..

    в каждом шаблоне где есть кнопки рус и укр визываю чанк {{lng}}, код чанка:
    <a href="[(site_url)]ua/[b][[lng_link]][/b]"><img src="assets/images/ua.gif" height="20px" width="26px" border=0></a>
    <a href="[(site_url)]ru/[b][[lng_link]][/b]"><img src="assets/images/ru.gif" height="20px" width="26px" border=0></a>
    


    с чанка визиваю снипет [[lng_link]] который возвращает часть урл, код снипета:
    <?php
    $p=$modx->documentObject['id'];
    $r=$modx->documentObject['alias'];
    while($p>0)
    {
    $parent=$modx->getParent($p,1);
    if($parent['alias']=='ua' || $parent['alias']=='ru') break;
    $p=$parent['id'];
    $r=$parent['alias'].'/'.$r;
    }
    return $r;
    ?>

    ЗЫ: писал спешно, но суть: получить ту часть урл, которая после ru/ или ua/

    Далее в чанках есть статичные елементи - это елементы меню, кое какие ключевые слова, для этого был написан снипет lng_lib для вставки нужного слова на нужном языке, вот код:

    <?php
    $leng=array();
    $leng['ru']=array();
    $leng['ua']=array();
    
    $leng['ru']['null']['pagetitle']='not fond in ru library';
    $leng['ru']['about']['pagetitle']='О компании';
    $leng['ru']['about']['id']=687;
    $leng['ru']['service']['pagetitle']='Услуги';
    $leng['ru']['service']['id']=689;
    
    $leng['ua']['null']['pagetitle']='not fond in ua library';
    $leng['ua']['about']['pagetitle']='Про компанію';
    $leng['ua']['about']['id']=49;
    $leng['ua']['service']['pagetitle']='Послуги';
    $leng['ua']['service']['id']=51;
    
    $leng_mui['ua']['address']='Адреса';
    $leng_mui['ru']['address']='Адрес';
    $leng_mui['ua']['tel']='Телефони';
    $leng_mui['ru']['tel']='Телефоны';
    
    $p=$modx->documentObject['id'];
    while($p>0)
    {
    $l=$parent['alias'];
    if($l=='ua' || $l=='ru') break;
    $parent=$modx->getParent($p,1);
    $p=$parent['id'];
    }
    $l=isset($l)?$l:'ua';
    
    if(isset($word))
    {
    $word=isset($word)?$word:'null';
    return $leng[$l][$word]['pagetitle'];
    }
    
    if(isset($link))
    {
    if(!isset($leng[$l][$link]['id']))return 'Not Fond '.$leng[$l][$link];
    $p=$leng[$l][$link]['id'];
    $result=$modx->db->select("alias","bioclimat_modx_site_content","id=$p");
    $row = mysql_fetch_assoc($result);
    $r=$row["alias"];
    while($p>0)
    {
    $parent=$modx->getParent($p,1);
    $p=$parent['id'];
    $r=$parent['alias'].'/'.$r;
    }
    return $r;
    }
    
    if(isset($mui))
    {
    $mui=isset($mui)?$mui:'null';
    return $leng_mui[$l][$mui];
    }
    ?>


    масив $leng содержит перевод названия документов, а масив $leng_mui - перевод всех других слов.

    при визове снипета с параметром [[lng_lib? &mui=`oxolodj`]] в зависимости где мы находимся, в ветке рус или укр получаем слово на нужном языке.

    ЗЫ: спешу, извините код не чистил и не коментировал. grin
      • 4356
      • 3 Posts
      С деревом документов и переключением все ясно. А как заставить Wayfinder формировать меню на разных языках? Кто-нибудь решал такую проблему?
        • 785
        • 2,113 Posts
        Quote from: BusyBee at Nov 06, 2008, 08:21 AM

        А как заставить Wayfinder формировать меню на разных языках?
        А в чем проблема? Если в каждой ветке свой шаблон и свой вызов Wayfinder со своим &startId, меню и получатся разные.
          Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
          Статьи о MODx, регулярно новые публикации
        • А никто не пробовал через TV сделать smiley
          продублировать все поля smiley и потом в зависимости языка выводить нужные поля ? таким образом не нужно будет дублировать дерево
            http://modx.im - Russian community
            http://extras.evolution-cms.com - Repository for Evolution
            • 785
            • 2,113 Posts
            Quote from: dmi3y at Mar 02, 2009, 08:27 AM

            продублировать все поля
            И в чем преимущество? Огромное количество дополнительных полей только для того, чтобы не делать новый документ – а чем мешает создание дополнительного документа? Тем более, что некоторые стандартные сниппеты будут работать с основными полями документа, а не разбираться, какие дополнительные параметры следует использовать вместо стандартных в каждом конкретном случае.
              Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
              Статьи о MODx, регулярно новые публикации
            • Quote from: dmi3y at Mar 02, 2009, 08:27 AM

              А никто не пробовал через TV сделать smiley
              Даже не стоит пытаться. Это не имеет смысла.

              Вот вообще-бы придумать саму идею работы с несколькими языками в MODx - можно будет реализовать силами комьюнити.
              Готов быть локомотивом этой разработки, ибо самому нужна очень smiley Но пока, к сожалению, не удалось придумать даже нормальной идеи.
                Разработка сайтов и программных модулей на MODX.
                Опыт работы на MODx с 2005 года. Высокое качество.
                Компания Baltic Design Colors: http://www.bdcolors.ru.
                • 16545
                • 358 Posts
                Почему никто не обсуждает такой метод http://modxcms.com/forums/index.php/topic,32807.0.html
                Сам но себе поверял, работает как часы:))
                • Quote from: labasus at Mar 02, 2009, 09:25 AM

                  Почему никто не обсуждает такой метод http://modxcms.com/forums/index.php/topic,32807.0.html
                  Ну это уже что-то, но тоже не супер, хотя бы по следующим пунктам:
                  EasyLingual gets a ISO(2char) language code via "&lang" GET query and save it as a MODx cookie ({&dollarfix;} _SESSION).
                  Ай-ай, оно работает с дополнительным параметром lang в URL.. и оно еще в куки его засовывает. Мама дорогая.
                  MODx caches only one language data of page. so multilingual pages MUST be uncachable!
                  Ну тут можно и закончить. Таким образом мы вообще отказываемся от кеширования страниц. А это значит, что каждый посетитель будет постоянно в больших количествах дергать БД (а если, не приведи господь, в большом количестве использовался Ditto, - сайт быстро забьется в конвульсиях).

                  [offtop]labasus, твой ник мне кое-что напоминает, случаем не из Прибалтики тоже? smiley[/offtop]
                    Разработка сайтов и программных модулей на MODX.
                    Опыт работы на MODx с 2005 года. Высокое качество.
                    Компания Baltic Design Colors: http://www.bdcolors.ru.
                    • 16545
                    • 358 Posts
                    Как бы там ни было - это, пока что, единственная реализация мультиязычного контента без использования дублирования структуры документов, чего собственно я искал очень давно. А на счет "конвульсий", то все решается качественным хостингом.

                    Quote from: Fuzzy at Mar 02, 2009, 09:44 AM

                    Ну это уже что-то, но тоже не супер, хотя бы по следующим пунктам:
                    EasyLingual gets a ISO(2char) language code via "&lang" GET query and save it as a MODx cookie ({&dollarfix;} _SESSION).
                    Ай-ай, оно работает с дополнительным параметром lang в URL.. и оно еще в куки его засовывает. Мама дорогая.
                    MODx caches only one language data of page. so multilingual pages MUST be uncachable!
                    Ну тут можно и закончить. Таким образом мы вообще отказываемся от кеширования страниц. А это значит, что каждый посетитель будет постоянно в больших количествах дергать БД (а если, не приведи господь, в большом количестве использовался Ditto, - сайт быстро забьется в конвульсиях).

                    [offtop]labasus, твой ник мне кое-что напоминает, случаем не из Прибалтики тоже? smiley[/offtop]
                    Литва, Вильнюс
                    • Quote from: labasus at Mar 02, 2009, 11:36 AM

                      Как бы там ни было - это, пока что, единственная реализация мультиязычного контента
                      К сожалению, да. Но хочется иметь не костыли, а нормальную проверенную систему работы с множеством языков.
                      Кстати, кто-нибудь может привести примеры (например, в других системах управления) с удобной мультиязычностью? Можно было бы взять саму идею и попробовать портировать на MODx.
                      Quote from: labasus at Mar 02, 2009, 11:36 AM

                      А на счет "конвульсий", то все решается качественным хостингом.
                      Таки хочется, чтобы решалось не увеличением серверных мощностей (которые всегда ограничены), а логичным программингом. Ибо в противном случае MODx так и останется уделом мелких, не слишком посещаемых сайтов.

                      Quote from: labasus at Mar 02, 2009, 11:36 AM
                      Литва, Вильнюс
                      Ну понятно smiley Корень "lab", как в латышском, так, наверное, и в литовском имеет значение - хороший smiley
                        Разработка сайтов и программных модулей на MODX.
                        Опыт работы на MODx с 2005 года. Высокое качество.
                        Компания Baltic Design Colors: http://www.bdcolors.ru.