Несколько вопросов про Localizator

Всем привет. Не первый год работаю с modx но, к сожалению не с fenom и вообще не хардкорный программист.
В общем просмотрел всю тему modx.pro/components/12012/ но так и не понял как создавать дополнительные поля для перевода страниц и добавление в шаблон, а так же как сделать вывод блока по условию.
Или я не правильно понимаю идеологию компонента?

1. Как куда нибудь сюда take.ms/drgEi добавить свое поле? Или например, поле контент оно ведь у нас одинаковое для всех языков, как мне вписать контент для страницы на разных языках?

2. Как в шаблоне вывести блок в зависимости от активного языка? например [если активен английский то показывать блок1 или есть активен китайский то блок2]?

3. Можно ли переключить язык не меняя url страницы? То есть мы на русской странице site.ru/about.html, переключаем язык и остаемся на этой же странице site.ru/about.html только на английском, а не на site.ru/en/about.html

Вот такие основные вопросы на которые я за два дня не нашел ответа.
Михаил
01 марта 2018, 15:39
modx.pro
2 346
0

Комментарии: 10

Михаил
01 марта 2018, 18:49
0
да и в догонку (чувствую себя совсем новичком), как вывести в шаблоне хедера, переведенный пейджтайтл? Вот отсюда например take.ms/OMtp7
    Дмитрий
    01 марта 2018, 22:44
    0
    1) Какое еще поле вы хотите вывести? Если TV — то именно туда — никак. Если вы конечно не гуру extJS. Но вы вроде как обратное и говорите. А вообще если нужны переведенные TV, то придется создавать два TV, например tvname_ru и tvname_en и далее либо придется работать с условиями if/else и выводить нужные в чанках. Ну, типа такого:
    {if ('localizator_key'|option)!='ru'}
    	{var $tv = $_modx->resource.tvname_en}
    	{else}
    	{var $tv = $_modx->resource.tvname_ru}
    {/if}
    
    <p> {$tv} </p>
    Это такой, простой и костыльный вариант.
    Если делать по-хорошему, то можно раскопать исходники Locaziator'a и там можно найти прикольную фишку в плагине с подменой плейсхолдеров.
    И можно набросать свой плагин, который будет в зависимости от языка сайта подставлять в плейсхолдер tvname значение либо русского, либо английского языка. Сложновато объяснил, но если шарить в теме, то можно понять :)
    Не понял про поле Content. Оно для каждого языка разное. Вы его заполняете как раз в этой вкладке.

    2) Изи, изи. См. код выше. Подойдет отлично.
    3) Вот это, насколько я знаю, уже нельзя. Нет, конечно, можно заморочиться с плагином маршрутизации для Localizator и отключить всю эту штуку и будет работать.
    Но если нужно менять язык страницы без изменения адреса, то можно просто писать в куки текущий язык сайта и переключать его. Я писал об этом вот здесь. То решение далеко не идеальное, но отличное направление в нужную сторону.
    4) [[+pagetitle]]. Или {$_modx->resource.pagetitle}. Ну или еще как-нибудь. Все поля в нужном языке подменяются в локализаторе, я написал об этом выше. Не подменяется только поле Content, оно выводится как localizator_content. То есть тут никакой магии. Если вы правильно установили компонент, то все должно работать.
      Михаил
      02 марта 2018, 05:57
      0
      Спасибо, Дмитрий, за подробный ответ, если есть минутка то надеюсь дополните немного

      Какое еще поле вы хотите вывести? Если TV — то именно туда — никак.
      Что то я не пойму тогда в чем преимущество перед настройки через контексты + бабель, кроме как более простой установки?

      Вот например, как быть с такой ситуацией: есть главная станица. На ней слоган, небольшой текст (который надо править в админке в визуальном редакторе) + набор характеристик типа цвет — красный, район — северный, краткое описание.
      Получается что для того же текста с визуальным редактором, мне надо ресурсу создать аж 3 тв (для трех языков) и потом разруливать уже не средствами не средствами локализатора а кодом if который вы привели? Для для характеристик тоже по 3 тв на каждое поле? Тогда через контексты все же удобней, по крайней мере не нужно валить все в кучу на одну страницу доп полей, открыл ресурс по нужному языку и все заполнил.
      Я просто пытаюсь понять почему локализатор так хвалят в комментариях, и думаю что я просто не умея с ним работать, не понимаю преимуществ.

      [[+pagetitle]]. Или {$_modx->resource.pagetitle}. Ну или еще как-нибудь. Все поля в нужном языке подменяются в локализаторе, я написал об этом выше.
      Подскажите еще пожалуйста, а как если мне в шаблоне надо вывести [[+pagetitle]] на выбранном языке не текущего ресурса, а другого, как getfield?
        Михаил
        02 марта 2018, 07:09
        0
        [[+pagetitle]]. Или {$_modx->resource.pagetitle}. Ну или еще как-нибудь. Все поля в нужном языке подменяются в локализаторе, я написал об этом выше.
        Подскажите еще пожалуйста, а как если мне в шаблоне надо вывести [[+pagetitle]] на выбранном языке не текущего ресурса, а другого, как getfield?
        Вот тут нашел ответ modx.pro/components/12012/#comment-86575 работает :)
      Дмитрий
      02 марта 2018, 10:12
      0
      Ну, знаете, бывают случаи, когда ТВ на сайтах вообще не используются. Я собрал с пяток магазинов, где у меня нет ни одного ТВ. На двух из них стоит Localizator и все всем довольны.
        Михаил
        02 марта 2018, 15:19
        0
        Если не минишоп, то там понято как без полей, а если нет, то как вы характеристики товара тогда храните?
          Дмитрий
          02 марта 2018, 15:34
          0
          а зачем интернет-магазин без минишопа? :)
            Михаил
            02 марта 2018, 16:17
            0
            ))) ну мало ли… может это какой нибудь очень маленький интернет магазин на 5 товаров. В общем других вариантов как куча тв для всех языков получается нет?
        Дмитрий
        02 марта 2018, 10:31
        0
        Подскажите еще пожалуйста, а как если мне в шаблоне надо вывести [[+pagetitle]] на выбранном языке не текущего ресурса, а другого, как getfield?
        Ну тут только сниппет писать. Где-то там же в комментах в основной теме что-то было похожее.
          Тодор
          08 мая 2018, 13:18
          -1
          3. Якщо ти хочеш не міняючи ULR сторінки переключити мову, то тобі краще використовувати компонент Xlexicon
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            10