Переименовать названия всех картинок в галереи
Добрый день.
Такой вопрос — есть интернет магазин на минишопе, админ клиента залил 100500 товаров на сайт, каждому в галереи указал фотографии. Но возникла проблема — заливал он фотографии с русскими именами. Отсюда 2 вопроса
1) как автоматически переименовать уже все существующие фотографии товаров на сервере?
2) как автоматически переименовать записи в галереи каждого товара?
Заранее спасибо
Такой вопрос — есть интернет магазин на минишопе, админ клиента залил 100500 товаров на сайт, каждому в галереи указал фотографии. Но возникла проблема — заливал он фотографии с русскими именами. Отсюда 2 вопроса
1) как автоматически переименовать уже все существующие фотографии товаров на сервере?
2) как автоматически переименовать записи в галереи каждого товара?
Заранее спасибо
Комментарии: 4
В MODX есть генератор псевдонимов. Если у вас настроена транслитерация, то можно использовать его. Нужно пробежаться по всем файлам и записям. Вот так можно транслитерировать любую строку:
<?php
$generator = $modx->newObject('modResource');
$string = 'строка кириллицей';
$string = $generator->cleanAlias($string);
print $string; // выведет "stroka-kirillizcey"
рискну прослыть неучем, но вот не получается у меня. Все товары лежат в папке с айди 6. логика простая — пройти все документы, вытащить значения image и сгенирировать псевдоним:
$where = array('parent' => 6);
$resources = $modx->getCollection('modResource',$where);
foreach ($resources as $res) {
$string = $res->get('image');
$string = $generator->cleanAlias($string);
$res->set('image', $string);
$res->save();
}
выдает ошибку: Fatal error: Call to a member function cleanAlias() on a non-object in… console/processors/exec.class.php(15): eval()'d code on line 5
понял почему ошбку — забыл
$generator = $modx->newObject('modResource');
Cохранил в сниппете. вызвал через фронтэнд. очистил кэш. Но названия не поменялись.
Делал немного по другому, через класс транслитерации
<?php
$stringToApplyTransliterationTo = "Транслитерация кириллицы в modx";
$options = array();
$translitTableName = 'russian';
$translitClassPath = $modx->getOption(
'friendly_alias_translit_class_path',
$options,
$modx->getOption('core_path', $options, MODX_CORE_PATH) . 'components/'
).'modx/translit/';
if ($modx->getService('translit', 'modTransliterate', $translitClassPath, $options)) {
$alias = $modx->translit->translate($stringToApplyTransliterationTo, $translitTableName);
}
return $alias;
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.