<![CDATA[ Массовая замена ссылок. - My Forums]]> https://forums.modx.com/thread/?thread=104475 <![CDATA[Массовая замена ссылок.]]> https://forums.modx.com/thread/104475/#dis-post-561956 Созданы каталоги с пробелами в названиях каталога. Ссылки на эти каталоги работают, но необходимо удалить пробелы в каталогах и соответственно исправить все пути ссылок на эти каталоги. Каталогов 50+ и на каждый из них минимум 15 ссылок. Как можно массово исправить ссылки на эти каталоги?

версия MODX Revolution 2.6.5-pl

Благоадрю за помощь.]]>
kyreelt Oct 06, 2018, 08:02 AM https://forums.modx.com/thread/104475/#dis-post-561956
<![CDATA[Re: Массовая замена ссылок.]]> https://forums.modx.com/thread/104475/#dis-post-562050 Quote from: kyreelt at Oct 08, 2018, 03:43 PM
Пробел не в алиасе. Там корректно заменяется на тире.
Ниже пример адреса, ссылка на папку с картинками. Папки во вкладке файлы сохранили с пробелами.
assets/images/Elektromobili/Tundra JJ2255/dsc06125.jpg

Пробелы удалили вручную. Ваш скрипт сохранил, может еще понадобится.

Спасибо

Quote from: argonaut2k at Oct 08, 2018, 12:49 PM
А каким образом вы вообще умудрились сохранить ресурсы с пробелами в алиасе?

Для начала убедитесь в том что при сохранении ресурса алиас генерируется корректно, происходит замена пробелов на допустимые символы (по умолчению: -).


Используйте дополнение CONSOLE, выполните простейший скрипт:

$template = 1; // Заменить на id шаблона документов для пересохранения

$resources = $modx->getCollection('modResource',array('template' => $template));
foreach ($resources as $res) {
    $res->save();
}

Тогда это же не вопрос "ссылок" а имен директорий. Тут есть несколько решений, самое очевидное:

1. Переименовать все категории (папки) вручную или с помощью функции rename() https://www.w3schools.com/php/func_filesystem_rename.asp.
2. Изменить у ресурсов значение TV с ссылкой с учетом нового пути

$template = 1; // Заменить на id шаблона документов для пересохранения
$resources = $modx->getCollection('modResource', array(
	'template' => $template
));

foreach($resources as $res) {
	$tv = $res->getTVValue('idTV'); // idTV - id TV параметра
	$tv = str_replace(' ', '-', $tv);
	$res->setTVValue('idTV', $tv);
	$res->save();
}


Не тестировал, но суть думаю ясна.]]>
argonaut2k Oct 12, 2018, 11:51 AM https://forums.modx.com/thread/104475/#dis-post-562050
<![CDATA[Re: Массовая замена ссылок.]]> https://forums.modx.com/thread/104475/#dis-post-561979 Ниже пример адреса, ссылка на папку с картинками. Папки во вкладке файлы сохранили с пробелами.
assets/images/Elektromobili/Tundra JJ2255/dsc06125.jpg

Пробелы удалили вручную. Ваш скрипт сохранил, может еще понадобится.

Спасибо

Quote from: argonaut2k at Oct 08, 2018, 12:49 PM
А каким образом вы вообще умудрились сохранить ресурсы с пробелами в алиасе?

Для начала убедитесь в том что при сохранении ресурса алиас генерируется корректно, происходит замена пробелов на допустимые символы (по умолчению: -).


Используйте дополнение CONSOLE, выполните простейший скрипт:

$template = 1; // Заменить на id шаблона документов для пересохранения

$resources = $modx->getCollection('modResource',array('template' => $template));
foreach ($resources as $res) {
    $res->save();
}
]]>
kyreelt Oct 08, 2018, 03:43 PM https://forums.modx.com/thread/104475/#dis-post-561979
<![CDATA[Re: Массовая замена ссылок.]]> https://forums.modx.com/thread/104475/#dis-post-561974
Для начала убедитесь в том что при сохранении ресурса алиас генерируется корректно, происходит замена пробелов на допустимые символы (по умолчению: -).


Используйте дополнение CONSOLE, выполните простейший скрипт:

$template = 1; // Заменить на id шаблона документов для пересохранения

$resources = $modx->getCollection('modResource',array('template' => $template));
foreach ($resources as $res) {
    $res->save();
}
]]>
argonaut2k Oct 08, 2018, 12:49 PM https://forums.modx.com/thread/104475/#dis-post-561974