на сайте есть тип материалов, у него уже пара-тройка сотен материалов.
хочется поменять им синонимы.
вот тут: http://site/admin/config/search/path/patterns
я уже поменял шаблон для синонимов новых материалов,
вопрос: как поменять синоним для остальных?!
есть вариант:
удалить все синонимы на сайте: http://site/admin/config/search/path/delete_bulk
создать синонимы заново: http://site/admin/config/search/path/update_bulk
но тогда удалятся синонимы материалов и других типов, которые возможно были переопределены пользователями или редакторами...
есть еще вариант:
удалить строчки из таблицы url_alias, который принадлежат нужным материалам.
вопрос: если я выберу 2-й путь, достаточно ли будет просто удалить строчки из таблицы и запустить апдейт синонимов (http://site/admin/config/search/path/update_bulk)?
Комментарии
Подпишусь, интересно, как лучше. Кстати Как не париться о том, какие алиасы (старые, или новые) стоят во внутренних ссылках. CKEditor Link - плагин и фильтр
пока что, в коде модуля (http://site/admin/config/search/path/delete_bulk) делается так:
->execute();
drupal_set_message(t('All of your path aliases have been deleted.'));
так что,... раз советов нету.. буду просто удалять строчки.
судя по туду, удалялку планируют достаточно гибкой
/* TODO:
1) all - DONE
2) all node aliases - DONE
4) all user aliases - DONE
5) all taxonomy aliases - DONE
6) by node type
7) by taxonomy vocabulary
8) no longer existing aliases (see http://drupal.org/node/128366 )
9) where src like 'pattern' - DON'T DO
10) where dst like 'pattern' - DON'T DO
*/
....скип....
}
Самому интересно узнать решение. Часто бывает что ошибся в шаблоне синонимов и нужно переделать, а удаляются и сделанные вручную синонимы. Вот если бы внести признак что синоним сгенерирован из шаблона, было бы проще.
сделал так:
$query = db_select('node', 'n');
$query -> fields('n', array('nid', 'title'));
$query -> condition('n.type', 'my_type', '=');
$query -> condition('n.status', 1, '=');
$query -> innerJoin('url_alias', 'alias', "CONCAT('node/', n.nid) = alias.source");
$query -> fields('alias', array('pid', 'source', 'alias'));
$result = $query -> execute();
while ($record = $result -> fetchAssoc()) {
$output_ht .= 'RewriteRule ^' . $record['alias'] . '/?$ http://site/node/' . $record['nid'] . ' [R=301,L]' . "\r\n";
db_delete('url_alias') -> condition('pid', $record['pid'], '=') -> execute();
}
.....
алиасы удалил,
насоздавал правил для htaccess'а, чтобы поисковики не потеряли ссылки,
счас еще xml-sitemap обновлю и всё..
Каких правил? Редирект со старых алиасов на новые?
да, вывел список строк, который потом записал в файл .htaccess сайта.
чтобы когда пользователи переходят по сохранённым синонимам из поиска яндекса,
они приходили на нужную страницу.
да и яндекс со временем обновит свою выдачу.
Ага. Для этого есть модуль Redirect, можно настроить автоматический редирект со старых синонимов на новые. Но при массовой смене даже не знаю, схватит он сразу множество редиректов...