migxResourceMediaPath babel
Привет всему комьюнити modx)
Есть небольшая проблема.
Есть мультиязычный сайт на Babel.
Чтобы я создал три документа ru(WEB), ua и en. Связал их менжу собою через Babel, а ID всегда был документа ru.
Как реализовать так чтобы в {id} всегда был ID главного документа, то есть web.
[[!migxResourceMediaPath? &pathTpl=`assets/images/portfolio/{id}/` &createFolder=`1`]]
Чтобы не приходилось грузить заново изображение для другой языковой версии документа.
Есть небольшая проблема.
Есть мультиязычный сайт на Babel.
Чтобы я создал три документа ru(WEB), ua и en. Связал их менжу собою через Babel, а ID всегда был документа ru.
Как реализовать так чтобы в {id} всегда был ID главного документа, то есть web.
[[!migxResourceMediaPath? &pathTpl=`assets/images/portfolio/{id}/` &createFolder=`1`]]
Чтобы не приходилось грузить заново изображение для другой языковой версии документа.
Поблагодарить автора
Отправить деньги
Комментарии: 4
Скопируйте сниппет migxResourceMediaPath, назовите её migxBabelResourceMediaPath, добавьте после 71-ой строки:
и замените 104-ую строку:
и помните, что данный код нужно будет протестировать и усовершенствовать, что я за вас делать не буду.
Ну и укажите:
$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`]]
Вообще не работает.
Таки нет, работает. Но есть грабли: в настройках всех TV, где используется migxResourceMediaPath нужно для нового контекста выбрать Медиа-Источник, там по умолчанию почему-то выставляют FileSystem, игнорируя установки основного контекста.
А вот Collections не пашут, ибо там рендерер. Вот такие я использую:
А вот 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%">';
}
}
Если кто подскажет, как туда Бабеля внедрить, буду признателен.
И в .htassecc нужно еще вот такое прописать:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(en|it)/resourceimages(.*)$ resourceimages$2 [L,QSA]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.