migxResourceMediaPath babel

Привет всему комьюнити modx)
Есть небольшая проблема.
Есть мультиязычный сайт на Babel.
Чтобы я создал три документа ru(WEB), ua и en. Связал их менжу собою через Babel, а ID всегда был документа ru.
Как реализовать так чтобы в {id} всегда был ID главного документа, то есть web.
[[!migxResourceMediaPath? &pathTpl=`assets/images/portfolio/{id}/` &createFolder=`1`]]
Чтобы не приходилось грузить заново изображение для другой языковой версии документа.
Сергій
21 января 2019, 10:06
modx.pro
1
701
0
Поблагодарить автора Отправить деньги

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

Баха Волков
21 января 2019, 14:32
1
+1
Скопируйте сниппет migxResourceMediaPath, назовите её migxBabelResourceMediaPath, добавьте после 71-ой строки:

$babel = $modx->getService('babel', 'Babel', $modx->getOption('babel.core_path', null, $modx->getOption('core_path').'components/babel/').'model/babel/', $scriptProperties);

$linkedResources = $babel->getLinkedResources($docid);
$originalResource = $linkedResources['web'];

и замените 104-ую строку:
$path = str_replace('{id}', $docid, $path);
на:
$path = str_replace('{id}', ($originalResource ?: $docid), $path);

и помните, что данный код нужно будет протестировать и усовершенствовать, что я за вас делать не буду.

Ну и укажите:
[[!migxBabelResourceMediaPath? &pathTpl=`assets/images/portfolio/{id}/` &createFolder=`1`]]
    Сергій
    22 января 2019, 02:31
    0
    Вообще не работает.
      Серый
      16 марта 2021, 13:04
      0
      Таки нет, работает. Но есть грабли: в настройках всех TV, где используется migxResourceMediaPath нужно для нового контекста выбрать Медиа-Источник, там по умолчанию почему-то выставляют FileSystem, игнорируя установки основного контекста.
      А вот Collections не пашут, ибо там рендерер. Вот такие я использую:
      collections.renderer.image_migx_path = function(value, metaData, record, rowIndex, colIndex, store) {
          if (value != '' && value != null) {
              var imgPath = MODx.config['collections.renderer_image_path'];
              return '<img src="' + MODx.config.base_url + 'resourceimages/' + record.id + '/' + imgPath + value + '" style="max-width:100%">';
          }
      };
      
      
      Collections.renderer.imageplusmigx = function(value, metaData, record, rowIndex, colIndex, store) {
          if (value != '' && value != null) {
              var data = Ext.decode(value);
              var url = MODx.config.connectors_url + 'system/phpthumb.php?imageplus=1';
              
              var params = {};
              params.src = 'resourceimages/' + record.id + '/' + data.sourceImg.src;
              params.w = 200;
              if (data.sourceImg.src.indexOf('.png') !== -1) {
                  params.f = 'png';
              }
              params.sw = data.crop.width;
              params.sh = data.crop.height;
              params.sx = data.crop.x;
              params.sy = data.crop.y;
              for (var i in params) {
                  url += '&' + i + '=' + params[i];
              }
              
              return '<img alt="" src="' + url + '" width="' + (params.w || 80) + '" style="max-width:100%">';
          }
      }
      Если кто подскажет, как туда Бабеля внедрить, буду признателен.
        Серый
        17 марта 2021, 13:24
        0
        И в .htassecc нужно еще вот такое прописать:
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(en|it)/resourceimages(.*)$ resourceimages$2 [L,QSA]
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4