Localizator - поддержка TV параметров

1. Изменены окна редактирования локализаций, добавлена возможность редактирования TV-параметров

Для вывода на редактирование определенных TV-параметров добавлена настройка локализатора localizator_tv_fields

2. Сделан сниппет Localizator
{'Localizator' | snippet : [
    'snippet' => 'pdoMenu',
    'includeTVs' => 'img',
    'processTVs' => 'img',
    'parents' => 0,
    'level' => 1,
]}
TV-параметры будут заменяться на параметры из локализации.
Для этого нужно изменить настройку pdoFetch.class на pdotools.pdofetchlocalizator


Компонент по прежнему бесплатный и доступен на modstore.pro

Исходники на https://github.com/but1head/localizator

Отправить спасибо можете на Яндекс-кошелек 410015133943061
Артем
23 октября 2018, 18:51
12
1 691
+18
Поблагодарить автора Отправить деньги

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

Aleksandr Huz
23 октября 2018, 19:15
0
Вот это работа! Очень круто!
Hiddenski
23 октября 2018, 20:35
0
На первом скриншоте: что это за вкладки с «добавить элемент»?
    Артем
    23 октября 2018, 20:39
    +2
    Это TV-параметр migx.
    Стрелками отмечены категории, доп.параметры распределены по категориям — вкладкам, как и при редактировании самого ресурса.
      Hiddenski
      23 октября 2018, 20:47
      0
      Получается можно использовать не просто TV, а сразу MIGX?

      Извините за немного глупые вопросы :)
        Артем
        23 октября 2018, 20:49
        0
        Да, можно)
      Hiddenski
      24 октября 2018, 15:14
      0
      Поля доступны только для редактирования но не автоперевода?
        Артем
        24 октября 2018, 15:20
        0
        укажи в настройке localizator_translate_fields tv параметры без префикса
        должно перевести, если это не migx
        для перевода migx допилить еще надо
          Hiddenski
          24 октября 2018, 15:24
          0
          В том то и дело — MIGX :/

          Сколько возьмете за допил? Штука must have, очень круто дополнила localizator. Буквально автоперевода для MIGX не хватает.
            Артем
            24 октября 2018, 15:27
            0
            На рабочем проекте возможно допилю
              Hiddenski
              24 октября 2018, 15:31
              0
              Как будете выкладывать решение, прикрепите к посту кошелек для «спасибо/на кофе»
                Артем
                01 ноября 2018, 15:12
                0
                Сделал PR на реп Локализатора, Никита думаю скоро выложит новую версию на модстор.
                Либо пока что можете скачать из моего репозитория.
                Баг поправил. Для перевода тв параметров (в том числе и migx) -их нужно также внести в системную настройку.
                  Антон
                  01 декабря 2018, 19:41
                  0
                  А та версия, которая сейчас в модсторе уже поддерживает перевод migx?
                  И если нет, то как обновить то, что сейчас установлено на сайте на версию из репозитория?
                    Артем
                    01 декабря 2018, 21:46
                    0
                    На модсторе актуальная версия. В системных настройках нужно указать поля для перевода.
                      Антон
                      02 декабря 2018, 00:05
                      0
                      Всё равно не переводит. Там, вроде, написано, что можно пустую строку оставить, тогда переведёт все, но хоть пустая, хоть с указанием полей — никакой разницы, при нажатии на автоперевод переводится только пейджтайтл и контент, а тв — нет.
    Рамис Хамидуллин
    24 октября 2018, 00:25
    0
    Отлично. Теперь можно работать с migx без костылей!
    Hiddenski
    29 октября 2018, 07:51
    0
    Обнаружил 2 бага.
    1. Через раз срабатывает визуальный редактор во вкладках (Firefox точно)
    2. При выводе pdoCrumbs не показывает родителя. Только Главная и Текущая страница
      Артем
      29 октября 2018, 10:10
      0
      1. какой редактор используете?
      2. а родительские переведены? у меня нормально выводится
        Hiddenski
        29 октября 2018, 10:17
        0
        1. TinyMCE Rich Text Editor (название пакета)
        2. Да. Причем в одном месте всё ок, в другом нет. На днях попробую повторить баг пошагово, или отпишусь в чем было дело.
          Артем
          29 октября 2018, 11:47
          +2
          по первому пункту нашел ошибку
          также автоперевод migx допилил
          позже выложу
            MrKarandash
            30 октября 2018, 20:10
            0
            del
            Hiddenski
            31 октября 2018, 20:26
            0
            Бага нет, всё таки я заработался.

            Забыл добавить перевод родителю, отсюда и пустота.
            Виталий
            16 января 2019, 17:48
            0
            В чем ошибка была? Аналогичная проблема Визуальный редактор TinyMCE Rich Text Editor грузиться через, стоит актуальная последняя версия.

            А также никак не могу понять, как можно удалять записи из словаря? На данный момент можно только добавить запись и все…
    MrKarandash
    30 октября 2018, 20:03
    0
    Все очень круто! Но возник вопрос, почему не брать поля для перевода из вкладки Документ? Или есть какие то трудности с такой реализацией?

    Кстати, так же если изменить текст в полях главной локализации и нажать на Автоматический перевод, то в тех локах, которые являются сторонними переводами, ничего не меняется. То есть по нажатии на кнопку они не обновляются. Нужно сперва удалять их после этого нажимать. Это так задумано или баг?
      Артем
      30 октября 2018, 20:10
      +1
      Не понял про поля из вкладки документ.
      Ещё в первой версии нужно было указать в системных настройках какие поля переводить.
      По второму вопросу — также, в системных настройках есть параметр, переводить уже переведенные языки.
        MrKarandash
        30 октября 2018, 20:13
        0
        Ну вот у меня основная версия — русская и я заполнял поля стандартные при редактировании ресурса на вкладке Докумен. А, как я понял, для работы дополнения нужно заполнять русскую локаль во вкладке Локализация, которая и будет потом переводиться на все остальные языки
          Артем
          30 октября 2018, 20:15
          +1
          Если указать язык по умолчанию, то при сохранении нового ресурса создаётся запись в локализаторе. Но это только для новых ресурсов.
    Андрей Розум
    01 ноября 2018, 15:38
    0
    Есть вывод новостей:
    [[!pdoPage? 
      &parents=`29` 
      &limit=`6` 
      &depth=`0` 
      &tpl=`News.main.ru` 
    ]]
    [[!+page.nav]]
    в tpl выводятся [[+longtitle]] и [[+introtext]], но они подхватываются из свойств документа. Каким должен быть вызов, чтобы они были из локализатора?
      Артем
      01 ноября 2018, 16:18
      0
      обновите модуль
      [[!Localizator? 
        &snippet=`pdoPage`
        &parents=`29` 
        &limit=`6` 
        &depth=`0` 
        &tpl=`News.main.ru` 
      ]]
      [[!+page.nav]]
        Андрей Розум
        01 ноября 2018, 16:58
        0
        Обновил, но вызов в таком виде ничего не выводит.
        И среди сниппетов не вижу чтобы появился сниппет Localizator.
          Андрей Розум
          01 ноября 2018, 17:05
          0
          Похоже что после обновления модуля у меня в локализаторе вообще пропал блок «содержимое», а вызов шел из него. Сейчас попробую переустановить модуль.
            Андрей Розум
            01 ноября 2018, 17:10
            0

            Вот так теперь выглядит.
              Артем
              01 ноября 2018, 18:06
              0
              Отправьте доступы на почту
              nizart91@mail.ru
                Андрей Розум
                01 ноября 2018, 20:55
                0
                Сайт не мой, владелец слегка параноик, без его согласия не могу. ((

                С содержимым сам разобрался. На сайте не было визуального редактора. Поставил TinyMCE, содержимое в локализаторе появилось.

                Но вот вызов сниппета !Localizator все равно не отрабатывает. Сейчас попробую на другом сайте.
      Артем
      01 ноября 2018, 22:45
      0
      немного по-другому
      [[!pdoPage?
      &element=`Localizator`
      &parents=`1` 
      &limit=`2` 
      &depth=`1` 
      &tpl=`News.main.ru`  ]] 
      [[!+page.nav]]
        Андрей Розум
        02 ноября 2018, 11:28
        0
        Спасибо!
        В таком виде и после того как скопировал сниппет Localizator все заработало.
    Hiddenski
    05 ноября 2018, 00:31
    0
    Поставил 1.0.2-beta1 из modstore.

    При установке почему-то обязательно тянется MIGX
      Артем
      05 ноября 2018, 07:24
      0
      Да, я за основу брал migx. Нужен как раз для рендеринга редактора текста. Зачем копировать тоже самое, если можно просто его установить)
        Hiddenski
        06 ноября 2018, 14:56
        0
        То ли я дурак, то ли лыжи не едут. MIGX-поля не переводятся.

        И поля отключал, и настройки форм, и переустановку локализатора делал. Можете помочь?
          Артем
          06 ноября 2018, 14:58
          0
          напишите доступ на nizart91@mail.ru
            Илья Александрович
            18 марта 2019, 16:34
            0
            Подскажите как решили проблему с переводом migx полей?
              Артем
              18 марта 2019, 16:39
              0
              в чем проблема?
                Илья Александрович
                18 марта 2019, 16:42
                0
                не переводятся поля, вообще пусто в англ.версии
                в русской заполнил
                  Артем
                  18 марта 2019, 16:49
                  0
                  что в настройке localizator_translate_fields?
                    Илья Александрович
                    18 марта 2019, 16:50
                    0
                    1. пустое оставлял
                    2. тв вставил slidermain
                      Артем
                      18 марта 2019, 16:54
                      0
                      внутри migx переводит только поля типа text, textarea, richtext
                        Илья Александрович
                        18 марта 2019, 16:57
                        0
                        там 3 поля text и картинка
                        Илья Александрович
                        18 марта 2019, 17:43
                        0
                        создал новое тв мигс с двумя полями text и textarea — не перевелось тоже.
                        и ещё такой вопрос: вот создаём тв мигс оно отображается в Дополнительных полях — если там заполняешь, должно дублироваться в Локализацию или там нужно повторно всё заполнять? или заполнять только в Локализации нужно?
                        я сейчас заполняю в Дополнительных полях, потом в Локализации РУ версию.
                        Артем
                        18 марта 2019, 19:14
                        +1
                        Нужно заполнять только в локализациях.
                        В настройку localizator_translate_fields вставлять все переводимые поля, в том числе и тв
                        Илья Александрович
                        18 марта 2019, 19:55
                        0
                        Супер, спасибо.
      MrKarandash
      13 ноября 2018, 16:44
      0
      Прикрутил MIGX к документу, добавил в настройках локализатора это поле. При нажатии поляи из MIGX успешно переводятся. А вот как вывести их в документе?

      [[!Localizator? 
          &snippet=`getImageList`
          &tvname=`blocks`
      	&tpl=`blocks_tpl`
      	&docid=`[[*id]]`
      	&limit=`999`
      ]]
      отдает 500 ошибку
        MrKarandash
        13 ноября 2018, 18:14
        0
        Вообще я так понял какая то неполадка с 1.0.2
        Следующий код из примера тоже не работает и крашит все после себя
        {'!Localizator' | snippet : [
                'snippet' => 'pdoMenu',
                'parents' => 0,
                'includeTVs'     => 'img',
                'processTVs' => 'img',
                'parents' => 0,
                'level' => 1,
        ]}
        Так же ошибка в консоли
        [2018-11-13 18:00:46] (ERROR @ /public_html/core/xpdo/om/xpdoquery.class.php : 764) Encountered empty IN condition with key contentid
        [2018-11-13 18:00:46] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 988) xPDO->removeCollection - Error deleting modTemplateVarResource instances using query DELETE FROM `modx_site_tmplvar_contentvalues` WHERE `modx_site_tmplvar_contentvalues`.`contentid` IN () 
        [2018-11-13 18:15:33] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
        [2018-11-13 18:15:37] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
        [2018-11-13 18:15:37] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
        [2018-11-13 18:15:37] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
        [2018-11-13 18:15:38] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
        [2018-11-13 18:15:38] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
        [2018-11-13 18:15:38] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
        [2018-11-13 18:15:38] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
          Артем
          13 ноября 2018, 21:00
          +1
          обновите компонент, нашел там ошибки и поправил
        Артем
        13 ноября 2018, 21:03
        +1
        вроде так должно работать, но не тестил
        {'getImageList' | snippet : [
            'input' => $_modx->resource.blocks
        ]}
          MrKarandash
          14 ноября 2018, 12:09
          0
          За оперативное исправление спасибо!
          Теперь получается вот как, конструкция вида
          $_modx->resource.blocks
          выводит JSON в зависимости от переключения языка правильно, но как это скормить getImageList не понятно, потому что
          {'getImageList' | snippet : [
              'input' => $_modx->resource.blocks
          ]}

          ничего не выводит. Буду пробовать разоборать массив через феном, если что то удасться — выложу решение
            Артем
            14 ноября 2018, 12:18
            +1
            попробуйте не input, а value
              MrKarandash
              14 ноября 2018, 12:23
              0
              О, так сработало, Большое спасибо )
              Антон
              01 декабря 2018, 17:00
              0
              Добрый день. С value работает, но такая штука, если в мигх есть изображение с нестандартным источником файлов, то отдаётся только относительный путь, без базового пути источника. Это как-то можно поправить, или только в чанках оформления самому префиксы писать для картинок?
              A ещё, если надо отобразить твшку другого ресурса (dockid=`1`), то такая конструкция не прокатит. Как быть в таком случае?
      Eiry
      05 декабря 2018, 19:52
      0
      C pdoField этот компонент работает?
      Вызываю так:
      {$_modx->runSnippet('!Localizator',[
          'parents'=>0,
          'snippet'=>'pdoField',
          'id'=>'1',
          'field'=>'sometv'
      ])}
      а выводится только обычная твшка, а не локализованная. С pdoMenu всё работает как надо, да и вообще всё с остальным работает правильно.
        Артем
        06 декабря 2018, 15:06
        0
        pdoField работает немного по другому
        можно сделать так
        {'pdoResources' | snippet : [
            'tpl' => '@INLINE {$value}',
            'class' => 'locTemplateVarResource',
            'sortby' => 'id',
            'limit' => 1,
            'where' => [
                'key' => ('localizator_key' | option),
                'tmplvarid' => 1,
                'contentid' => 2,
            ],
        ]}
          Eiry
          06 декабря 2018, 15:22
          0
          Спасибо! Как раз думал, что можно и через pdoResources сделать.
          tmplvarid — это id твшки в БД, а contentid — это что? У меня он пока для всех твшек и всех языков равен 1.
            Артем
            06 декабря 2018, 15:23
            0
            id ресурса
      Rootiys
      16 декабря 2018, 18:24
      0
      Tv через Fenom не выводятся?
      {1 | resource : 'address'}
        Артем
        16 декабря 2018, 20:42
        0
        выше ведь есть комментарий как tv выводить
          Rootiys
          16 декабря 2018, 20:45
          0
          Через pdoField видел как.
          Интересует именно такая конструкция.
            Василий Столейков
            05 июля 2019, 17:50
            1
            +1
            Оставлю тут комментарий, может кому пригодится.
            Можно сделать свой модификатор, которым будет удобно пользоваться:

            1. Создаём сниппет под названием tv
            2. Вставляем в него следующий код:
              <?php
              $output = '';
              
              if(!empty($options)) {
                  $lang = $modx->getOption('localizator_key');
                  if(empty($input)) $input = 1;
                  
                  if($res = $modx->getObject('locTemplateVarResource', array(
                      'contentid' => $input, 
                      'tmplvarid' => $options, 
                      'key' => $lang
                  ))) {
                      $output = $res->get('value');
                  }
              }
              
              return $output;
            3. Используем на сайте везде где нужно в виде модификатора:
              // устанавливаем в переменную {$tv_name} локализованное значение тв-параметра.
              {set $tv_name = 1|tv:3} // где 1 это ресурс, а 3 это id тв параметра.

            Возможно и мне пригодится на будущее скопипастить, чтобы не писать заново, хотя времени на написание ушло 2 минуты.
      Vladislav
      28 декабря 2018, 12:05
      0
      Будьте добры, подскажите, как вывести tv-поле через Localizator, используя pdoPage?
      В данной Fenom-конструкции заданные tv-поля через вкладку Локализация — игнорируются.
      Для более быстрого восприятия: tv-поля имеют названия sortDate и moreButtonText.
      Исходный код вызова сниппета:
      {'!Localizator' | snippet : [
          'snippet' => 'pdoPage',
          'ajaxMode' => 'default',
          'tpl' => '@INLINE
                          <div class=" col-md-6 col-lg-3">
                      <div class="card-wrapper ">
                          <div class="card-img">
                              <div class="mbr-overlay"></div>
                              <div class="mbr-section-btn text-center"><a href="{$uri}" class="btn btn-primary display-4">[[+moreButtonText]]</a></div>
                              <img class="media-object" src="{$img | phpthumbon : "w=246&h=184&zc=1"}" alt="{$pagetitle}">                
                          </div>
                          <div class="card-box">
                              <h4 class="card-title mbr-fonts-style display-7">
                                  {$pagetitle}
                              </h4>
                              <p class="mbr-text mbr-fonts-style align-left display-7">
                                  [[+sortDate:date=`%d.%m.%y`]]</p>
                          </div>
                      </div>
              </div> 
          ',
          'limit' => 4,
          'includeTVs' => 'img, sortDate, moreButtonText',
          'prepareTVs' => 1,
          'processTVs' => 'img, sortDate, moreButtonText',
          'tvPrefix' => '',
          'includeContent' => 0,
          
          'tplPageWrapper' => '@INLINE <div class="pagination"><ul class="pagination pagination-lg">{$prev}{$pages}{$next}</ul></div>',
          'tplPage' => '@INLINE <li><a href="{$href}">{$pageNo}</a></li>',
          'tplPageActive' => '@INLINE <li class="active"><a href="{$href}">{$pageNo}</a></li>',
          'tplPagePrev' => '@INLINE <li rel="prev"><a href="{$href}">« Назад</a></li>',
          'tplPageNext' => '@INLINE <li rel="next"><a href="{$href}">Дальше »</a></li>',
          'tplPagePrevEmpty' => '@INLINE ',
          'tplPageNextEmpty' => '@INLINE ',
          'ajaxElemWrapper' => '#child_list',
          'ajaxElemRows' => '#child_list .rows',
          'ajaxElemPagination' => '#child_list .pagination',
          'ajaxElemLink' => '#child_list .pagination a',
          'parents' => '15',
          'sortdir' => 'desc'
        ]}

      Несмотря на возможно некорректное использование конструкций вида [[+placeholder]] для вызова tv-полей, это работает – для случая задания параметров традиционным способом, заложенным в MODx.
      Перевод для pagetitle здесь применяется успешно.
      Собственно, требуется заменить текст на кнопке на соответствующий перевод в зависимости от выбранного языка отображения сайта.
        Артем
        28 декабря 2018, 12:24
        0
        Документация
        есть пример для pdoPage
          Vladislav
          28 декабря 2018, 12:41
          0
          И такое пробовал, даже ещё раз. Нужно найти, где собака зарыта. Почему же название нормально выводится, a tv-поля — нет?
          В системных настройках localizator_tv_fields ="". Согласно описанию, если нужны все tv-поля для редактирования, то нужно оставить пустым. Установлено, что так и есть — все tv-поля доступы во вкладке Локализация.
          Даже решил попробовать добавить tv-поле для автоперевода в строку localizator_translate_fields. Ничего не меняется.
            Артем
            28 декабря 2018, 12:48
            0
            отправьте доступ на nizart91@mail.ru
            или найдите в телеграм
      Александр Мельник
      05 февраля 2019, 13:39
      0
      Господа, а я установил Localizator и он выглядит совершенно не так, как указано в документации и тут.
      Никаких вкладок нет в окне редактирования локализации для ресурса.
      Выглядит вот так

      Устанавливал, подключив поставщика modstore.
        Артем
        05 февраля 2019, 13:56
        0
        TV параметров нет — нет и вкладок
          Александр Мельник
          05 февраля 2019, 14:03
          0
          ааа, Семен Семеныч…
          То есть эти вкладки — это названия категорий. И если в этих категориях есть созданные TV, то они отобразятся.
          Спасибо.
      Александр Мельник
      06 февраля 2019, 15:08
      0
      Господа, а как при помощи локализатора вывести список товаров минишопа с пагинацией?
      Ну то есть в чем сложность.
      Сниипет Localizator имеет параметр snippet куда можно передать имя сниппета.
      И если мы передадим туда msProducts то наверное все сработает.
      Но нам нужно передать туда pdoPage. А pdoPage по умолчанию если не указано другое, работает со сниппетом pdoResources. А нужно msProducts, но указать это никак невозможно?
      Или я торможу?

      Пока что все что приходит в голову, это сделать копию pdoPage, поправить в коде сниппет по умолчанию, но наверняка ведь умные люди уже придумали лучший способ?
      Спасибо.
      Александр Мельник
      06 февраля 2019, 16:09
      0
      Уважаемый автор компонента, просьба.
      Я так понимаю, что компонент перешел к другому разработчику и вы его значительно улучшили.
      Но при написании документации, Вы описали исключительно свои доработки, но потерялась информация о многом другом.
      К примеру локализатор имеет вкладку Словарь, где можно задавать слова и фразы для разных языков.
      Но нигде в документации не упоминается об этом, а так же о том, как их вывести на сайте, а в прошлой документации это было.
      Пришлось лезть на старый сайт свой и там в коде искать, что вывести их можно так —
      {'more'|lexicon}
      Как будет время, добавьте это пожалуйста в документацию на docs.modx.pro/komponentyi/localizator/
      Дмитрий
      07 февраля 2019, 18:01
      0
      Добрый день! Подскажите пожалуйста! есть дерево ресурсов. Стандартная версия сайта украинская. В каждом ресурсе во вкладке локализация я вношу значения для русской версии. Потом в шаблоне вывожу меню таки образом:
      [[!Localizator? 
            &snippet=`pdoMenu`
            &parents=`0` 
          ]]
      И на основной версии сайта оно не выводится а на русской выводится.
        Игорь
        07 февраля 2019, 18:22
        0
        У меня работает в таком варианте
        {'!pdoMenu' | snippet : [
        	'parents' => 0,
        	'context' => 'web'
        	'showLog' => 0,
        	'level' => 1,
        	'startId' => 0,
        	'firstClass'=> 0,
        	'lastClass'=> 0,
        	'leftJoin' => '{
        		"localizator" : {
        		"class" : "localizatorContent",
        		"alias" : "localizator",
        		"on" : "localizator.resource_id = modResource.id"
        		}
        	 }',
        	'select' => '{ "localizator" : "modResource.*, localizator.*, modResource.id" }',
        	'where' => '{ "localizator.key" : "' ~ ('localizator_key' | option) ~ '"}',
        	'outerClass'=> 'main-nav-menu',
        'tpl' => '@INLINE <li class="{$classes}"><a class="default" href="{$link}"><i class="icon others"></i>{$menutitle}</a></li>'
        ]}
          Дмитрий
          07 февраля 2019, 18:32
          0
          Ваш Вариант у меня работает так же. Отображаются только те ресурсы которые переведены в локализаторе. На основной версии не выводятся
        Артем
        07 февраля 2019, 18:39
        0
        В локализаторе нужно вносить как доп.языки, так и основной — в вашем случае украинский
          Игорь
          07 февраля 2019, 18:45
          0
          100% верное уточнение! Проверьте добавлена ли у вас в локализатор украинская версия и заполнено ли там поле «Заголовок меню»
            Дмитрий
            07 февраля 2019, 18:52
            0
            Полня. Думал что за основную оно берет основные ресурсы. Как быть тогда с импортом товаров через msImportExport если это магазин?
              Александр Мельник
              07 февраля 2019, 20:40
              0
              Дмитрий, простите) Но я уже полчаса сижу ломаю голову. Полня это что? Хуйня? Херня? Фигня? Полдня?
      Виталий
      11 февраля 2019, 10:12
      0
      Последняя обнова поломала сайт! Проблема в том, что теперь ссылки которые выдают TV параметры содержат ключ локализации. А теперь к сути, получается все TV параметры (которые картинки) получают адрес /en/assets/images и тд… что приводит к ошибке и тд!
        Артем
        11 февраля 2019, 10:18
        0
        для этого существуют правил для htaccess, которые нужны также как и при работе через babel
        RewriteRule ^(ru|en|de)/assets(.*)$ assets$2 [L,QSA]
          Виталий
          11 февраля 2019, 10:22
          0
          ну это все прекрасно, но это не будет работать с тем же phpThumbOn, думаю почему объяснять не стоит… я конечно написал фикс сниппет, но это костыль получается…
            Артем
            11 февраля 2019, 10:26
            0
            В само значение tv параметра en/ не пишется. Только что сам проверил.
            Соответственно и phpthumbon должен работать, т.к. берется путь без en.
            Можете скинуть доступы, посмотрю что у вас
              Виталий
              11 февраля 2019, 10:37
              0
              Подозреваю проблема в том, что на вывод попадают относительные урлы…
              Адрес сайта: site.ru/en Ссылка: assets/images/
              На выходе site.ru/en/assets/images/
                Артем
                11 февраля 2019, 10:40
                0
                выше я привел правило htaccess, которое решает эту проблему
      Илья Александрович
      17 марта 2019, 10:42
      0
      Добрый день!
      А как компонент работает с ClientConfig?
        Артем
        18 марта 2019, 08:11
        0
        как настроите — так и будет работать
          Илья Александрович
          18 марта 2019, 12:11
          0
          хммм…
          например в данный момент я сделал так:
          [[++address_[[++localizator_key]]]]
          в клиент конфиге имеется переменная address_ru и address_en
          не уверен что это правильно решение. может ещё есть варианты? лучше через Fenom.
      Илья Александрович
      19 марта 2019, 11:16
      0
      Добрый день! Кто нибудь разобрался как вывести migx поля?
      у меня получилось вот что, но этот вариант выводит только данные на той странице где они созданы, в моём случае это id=1, только там и работает.
      {'!pdoResources' | snippet : [
                      'element' => 'getImageList',
                      'tvname' => 'slidermain',
                      'docid' => 1,
                      'parents' => 0,
                  	'resources' => 1,
                  	'includeTVs' => 'slidermain',
                  	'prepareTVs' => 1,
                  	'processTVs' => 1,
                      'tpl' => 'tpl.slidermain'
                  	'leftJoin' => '{
                  		"localizator" : {
                  			"class" : "localizatorContent",
                  			"alias" : "localizator",
                  			"on" : "localizator.resource_id = modResource.id"
                  		}
                  	}',
                  	'select' => '{ "localizator" : "modResource.*, localizator.*, modResource.id" }',
                      'where' => '{ "localizator.key" : "' ~ ('localizator_key' | option) ~ '"}',
              ]}
        Артем
        19 марта 2019, 11:20
        0
        чем вам не нравится конструкция такого типа и вывод через fenom
        {$_modx->resource.slidermain}
          Илья Александрович
          19 марта 2019, 11:24
          0
          я пробовал, не рабоатет
          {'getImageList' | snippet : [
              'input' => $_modx->resource.slidermain
          ]}
          {'getImageList' | snippet : [
              'value' => $_modx->resource.slidermain
          ]}
          добавлял разные параметры, ничего не помогло
            Артем
            19 марта 2019, 11:33
            0
            используйте foreach
          Илья Александрович
          19 марта 2019, 11:34
          0
          шаблон вывода у меня такой
          {foreach $_modx->resource['slidermain'] | fromJSON as $item}
          	<li>
          <img src="{$item.image}"  />
          {$item.title}
          {$item.text_3}
          {$item.text_2}
          {$item.text_1}
          	</li>
          {/foreach}
            Илья Александрович
            19 марта 2019, 16:30
            0
            варианты есть какие нибудь?
            так тоже писал
            {foreach $_modx->resource.slidermain | fromJSON as $item}
            	<li>
            <img src="{$item.image}"  />
            {$item.title}
            {$item.text_3}
            {$item.text_2}
            {$item.text_1}
            	</li>
              Артем
              19 марта 2019, 16:53
              0
              ну а что не так то?
                Илья Александрович
                19 марта 2019, 16:58
                0
                вот эти параметры не отрабатывают
                'docid' => 1,
                       'resources' => 1,
                мигс заполняется у ресурса с id = 1, а вывести нужно у ресурса с id = 7
                  Артем
                  19 марта 2019, 17:04
                  0
                  комментарии то читайте
                  вот пример даже есть
                    Илья Александрович
                    19 марта 2019, 17:47
                    0
                    прочитал, и перепрочитал 100 раз.
                    'tmplvarid' => 1,
                            'contentid' => 1,
                    прописывал эти параметры 0 результата
                      Артем
                      19 марта 2019, 19:54
                      0
                      Если вы не видите очевидной разницы между моим примером и вашим вызовом сниппета, то ничем не могу помочь.
                        Илья Александрович
                        19 марта 2019, 22:07
                        0
                        Да оказывается работало всё, просто при подстановке моего шаблона на выводе было пусто. Поэтому задал пустой TPL, получил результат.
                        Подскажите как это преобразовать…
                        Запрос:
                        {'pdoResources' | snippet : [
                            'tpl' => '',
                            'class' => 'locTemplateVarResource',
                            'sortby' => 'id',
                            'limit' => 1,
                            'where' => [
                                'key' => ('localizator_key' | option),
                                'tmplvarid' => 1,
                                'contentid' => 1,
                            ],
                        ]}
                        вывел:
                        Array
                        (
                            [class] => locTemplateVarResource
                            [id] => 1
                            [key] => ru
                            [tmplvarid] => 1
                            [contentid] => 1
                            [value] => Array
                                (
                                    [0] => Array
                                        (
                                            [MIGX_id] => 1
                                            [title] => Заголовок
                                            [text_1] => текст 1
                                            [text_2] => Текст 2
                                            [text_3] => Текст 3
                                            [image] => /assets/images/slider/slide-14-1.jpg
                                        )
                        
                                )
                        
                            [idx] => 1
                            [link] => 
                        )
                          Артем
                          20 марта 2019, 10:22
                          0
                          'tpl' => '@INLINE {"getImageList" | snippet : ["value" => $value]}',
                          Илья Александрович
                          20 марта 2019, 10:58
                          0
                          пустота в итоге
                          Артем
                          20 марта 2019, 11:02
                          0
                          значит делайте отдельный чанк, можете использовать foreach — ,tp getimagelist
                          Илья Александрович
                          20 марта 2019, 11:15
                          0
                          1) так
                          'tpl' => '@INLINE {"getImageList" | snippet : ["value" => $value]}',
                          выводит
                          {"getImageList" | snippet : ["value" => $value]}
                          2)
                          если так то выводит пустоту
                          'tpl' => 'tpl.chank',
                          tpl.chank
                          {'getImageList' | snippet : ['value' => $value]}
                          можете использовать foreach — ,tp getimagelist
                          — это не понял
                          Артем
                          20 марта 2019, 11:26
                          0
                          foreach вместо getImageList
                          Илья Александрович
                          20 марта 2019, 11:28
                          0
                          а как тогда перевод цеплять?
                          Илья Александрович
                          20 марта 2019, 11:52
                          0
                          перевод цепляется всё норм на странице там где мигс создан
                          но как вывести опять же на другой странице
                          {foreach $_modx->resource['about_page'] | fromJSON as $item}
                          	<div class="col-xs-12 col-sm-6 col-md-4">
                          		<div class="icon-box left media p-0 mb-40">
                          			<div class="media-left pull-left"><i class="{$item['icon']} text-theme-colored"></i></div>
                          			<div class="media-body">
                          				<p class="media-heading heading h5">{$item['title']}</p>
                          				<p>{$item['desc']}</p>
                          			</div>
                          		</div>
                          	</div>
                          {/foreach}
                          так пробовал, не помогло
                          {set $item = json_decode(7 | resource : 'about_page', true)}
                          {set $item = 7 | resource : 'about_page' | fromJSON}
                          Артем
                          20 марта 2019, 11:55
                          0
                          Илья Александрович
                          20 марта 2019, 12:05
                          0
                          {'pdoResources' | snippet : [
                              'tpl' => 'tpl.about_page',
                              'class' => 'locTemplateVarResource',
                              'sortby' => 'id',
                              'limit' => 0,
                              'where' => [
                                  'key' => ('localizator_key' | option),
                                  'tmplvarid' => 12,
                                  'contentid' => 7,
                              ]
                          ]}
                          tpl.about_page
                          {foreach $_modx->resource['about_page'] | fromJSON as $item}
                          	<div class="col-xs-12 col-sm-6 col-md-4">
                          		<div class="icon-box left media p-0 mb-40">
                          			<div class="media-left pull-left"><i class="{$item['icon']} text-theme-colored"></i></div>
                          			<div class="media-body">
                          				<p class="media-heading heading h5">{$item['title']}</p>
                          				<p>{$item['desc']}</p>
                          			</div>
                          		</div>
                          	</div>
                          {/foreach}
                          ничего не выводит
                          Артем
                          20 марта 2019, 12:29
                          0
                          читайте документацию, делаете элементарные ошибки
                          Илья Александрович
                          20 марта 2019, 13:11
                          0
                          документацию прочитаю, но сейчас нет времени. помогите пожалуйста…
        Сергей
        01 апреля 2019, 11:20
        0
        Скажите работает ли полноценно этот компонент с minishop2? Тоесть получится ли закрыть все потребности по смене языка интернет-магазина этим компонентом?
          Артем
          01 апреля 2019, 11:39
          0
          Да, сможет.
          Но все конечно зависит от прямоты рук разработчика)
          Иван Бочкарев
          28 апреля 2019, 12:39
          0
          Разобрались?
        Виталий
        11 мая 2019, 00:13
        0
        Компонент то что нужно!
        Добавил два перевода (ru,en)
        Если в ресурсе для языка «en» переключаю параметр «активно» => «нет», то страница всё равно доступна на 2 языках.
        Доступны так же на 2 языках те страницы, которые вообще не переводились на второй язык.

        MODX Revolution 2.7.1-pl
        Localizator 1.0.4-beta1
        php7.2

        Это только у меня так? Подскажите как исправить?
          Artur Plugin
          12 мая 2019, 12:04
          0
          так то «что нужно» или исправить? :)
          ======================
          была у меня как-то задача сделать нес-ко страниц на 2х языках и фраз/слов там было меньше 300.
          я написал файл js
          api_rez=`
          word1|перевод_рус|перевод_др
          word2|перевод_рус|перевод_др
          `;
          и на всех страницах подключил свой фреймворк на js. Он добавил кнопку переключения языков на все станицы и при нажатии — страница переводится скриптом по этому словарику на 2+ языка. без обращения к серверу и перезагрузки. Удобней это чем встроенные средства модх и пр? Наверно, но с откл скриптами это не работает и если слов/фраз много, то будет тормозить. Eще надо дополнительно в теги с этими словами добавлять класс multiLang.
          на зато работает везде, даже на статичных сайтах без php+mysql
          Артем
          13 мая 2019, 14:13
          0
          языки настроены на домены? или как подпапки?
            Виталий
            13 мая 2019, 20:16
            0
            Как подпапки. Но вроде особо ничего не настраивал… то есть как по умолчанию установил так и есть… может что то проморгал в настройках?
              Артем
              14 мая 2019, 09:14
              0
              так не могу сказать, надо смотреть
        Василий Столейков
        05 июля 2019, 14:44
        0
        А по какому принципу сортируются вкладки ТВ-параметров?

        У меня на сайте, для сортировки, названия папок обычно пронумерованы, и в вкладке TV они сортируются правильно. В локализаторе же они каким-то непонятным образом выводятся:
          Василий Столейков
          08 июля 2019, 11:20
          0
          Было бы неплохо сортировать вкладки по полю сортировки, и/или по названию:
            Артем
            08 июля 2019, 22:06
            +1
            в следующую версию добавлю
        Василий Столейков
        05 июля 2019, 17:00
        0
        Кстати, ТВ-поля в локализаторе не авто-переводит никак, без разницы указывать их в системной настройке или нет. Пока используем ручной перевод…

        SEO-поля из локализатора, которые не используются, типа SEO keywords можно спрятать через стили.

        А родную вкладку TV-полей можно спрятать через Настройку форм самого MODX. Как в принципе и родные поля content, longtitle, description, introtext и т.д. Иначе они постоянно путаются и заполняются лишний раз — при локализаторе они бесполезный мусор, который постоянно мешает.
          Артем
          08 июля 2019, 22:15
          +1
          Все нормально переводит, надо указывать в localizator_translate_fields.
          По поводу TV и полей, как и заметил — можешь сам все скрыть, если это нужно.
          Однако же есть TV, которые нет смысла заполнять в нескольких языковых версиях, а проще заполнить основное поле — такие как изображение или дата.
          Также есть ресурсы-ссылки, в которых ссылка заполняется в content, соответственно и скрывать незачем.
            Василий Столейков
            08 июля 2019, 22:20
            0
            Все нормально переводит, надо указывать в localizator_translate_fields.
            Как ни пробовал, не получается. Каким образом указывать поля, ID тв-шек или их названия? Через запятую?

            Однако же есть TV, которые нет смысла заполнять в нескольких языковых версиях, а проще заполнить основное поле — такие как изображение или дата.
            Но тогда и ТВ с переводом будут болтаться рядом, а если ТВ-шек много, то путаница, что где заполнять. Для себя я решил лучше уже все заполнять там, в одном месте, в том числе и даты. Даже для разных языков — один же раз заполняешь.
              Артем
              08 июля 2019, 22:34
              0
              Названия — как pagetitle, longtitle и т.д.
                Василий Столейков
                10 июля 2019, 10:21
                0
                Всё нормально переводится, извини что задавал глупые вопросы.

                Это всё моя невнимательность. Я почему-то зациклился что TV параметры нужно вписывать в localizator_TV_fields а надо было в localizator_translate_fields наряду с полями ресурса.

                Дошел до этого только когда заглянул в код процессора… )))

                Спасибо!
        Василий Столейков
        09 июля 2019, 16:22
        0
        Заметил ещё один момент: при удалении локализации страницы (для последующего автоперевода например), заполненные тв-шки локализации не удаляются, и после создания локализации по-новой подтягиваются старые уже заполненные. Это может мешать например автопереводу ТВ-шек (у кого он работает).
        Правда не знаю, это баг или фича такая…
        Константин Ильин
        15 июля 2019, 13:08
        0
        Артем подскажите пожалуйста по переводу Migx

        — Создал tv joxi.ru/zANvYJoiv0dypA
        — Вписал в настройках(сразу в две чуть позже для уверенности) joxi.ru/v29VPa8tZwnOjA
        — создал ресурс и одну запись в русской локализации joxi.ru/zANvYJoiv0dVpA
        — нажал автоматический перевод, но в англ версии не перевелось joxi.ru/n2YjabotbB9npA
        Что еще надо сделать чтобы автоматом переводило? Думаю надо как то по пунктам написать по поводу migx, тут часто вопросы по нему возникают.

        Также подскажите пожалуйста, в другой теме писал по поводу вызовов ms2GalleryResources
        modx.pro/components/12012#comment-111846
          Артем
          16 июля 2019, 13:27
          0
          по первому — так не скажу, надо смотреть
          по второму — ответил под комментарием
          Василий Столейков
          17 июля 2019, 07:06
          0
          Может быть ты API ключ для Яндекс не вписал в настройку localizator_key_yandex?
            Константин Ильин
            17 июля 2019, 09:15
            0
            Вписал, остальное то переводит
            joxi.ru/p27V9KytKYlWwm

            Но вот migx поле не переводит…
            Может в разметке migx чет не то писал, добавил inputTVtype всем полям
            joxi.ru/4Akjo5RtonP0N2
            так же менял inputTVtype на textarea
            Уже на модхосте тестил…
            joxi.ru/brRv5Joi7EaBKr
              Константин Ильин
              17 июля 2019, 10:56
              0
              Оказалось все банально…
              Полез в процессор, выводил в журнал и выяснил, что в конце, после project_years пробел стоял, он считал это символом и частью названия ключа.
              pagetitle,longtitle,menutitle,seotitle,keywords,introtext,description,content,project_years
              проверки пробела нет или str_replace пробелов
              Все переводит, только вот цифры переводит в текст, например 1990 переводит в «One thousand nine hundred ninety». У меня это отдельное поле просто поставил inputTVtype = number.

              Осталось разобраться с вызовами ms2GalleryResources.

              joxi.ru/823Vx6Xt9loaQm
                Василий Столейков
                18 июля 2019, 08:36
                0
                Извини, не заметил этот коммент.

                С цифрами беда, это да… Приходилось вручную исправлять. На китайском я исправлял наугад, на китайский он и названия тегов типа span перевёл…
              Василий Столейков
              18 июля 2019, 08:33
              0
              ТВ поле для перевода называется у тебя "-coorYa"? Прямо начиная с минуса?

              Название поля должно быть и в настройке localizator_tv_fields и в localizator_translate_fields
                Константин Ильин
                18 июля 2019, 08:47
                0
                Из документации:
                Укажите поля со знаком минус в начале чтобы исключить доп.поля ('-image')
                  Василий Столейков
                  18 июля 2019, 08:50
                  0
                  Но тогда прийдётся включить и все остальные, нужные.

                  Как я понял: либо пустая настройка для всех (кстати, image-поля он просто копирует в новый язык, что для меня очень удобно), либо если указал что-то, даже с минусом, то прийдётся перечислять все нужные поля после этого.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.