Дано — материалы с полем "Категория". Синонимы материалов строятся на основе синонима выбранной категории, например по шаблону [node:field-category:url:path]/[node:title]
.
Задача — массово изменять синонимы нод, при изменении синонима термина.
Решение:
/**
* Implements hook_form_FORM_ID_alter(): taxonomy_form_term.
*/
function modulename_form_taxonomy_form_term_alter(&$form, &$form_state) {
if ($form['tid']['#value']) {
$form['#submit'][] = 'modulename_batch_update_node_alias';
$form_state['old_alias'] = drupal_get_path_alias('taxonomy/term/' . $form['tid']['#value']);
}
}
/**
* Custon submit callback for taxonomy_form_term form.
*/
function modulename_batch_update_node_alias($form, &$form_state) {
if ($form_state['old_alias'] != drupal_get_path_alias('taxonomy/term/' . $form_state['tid'])
&& $nids = taxonomy_select_nodes($form_state['tid'], FALSE)) {
$operations = array();
foreach ($nids as $nid) {
$operations[] = array('modulename_update_node_alias', array($nid));
}
batch_set(array(
'operations' => $operations,
'title' => t('Update node path aliases'),
));
}
}
/**
* Update node alias by node nid.
*/
function modulename_update_node_alias($nid) {
$node = node_load($nid);
pathauto_node_update_alias($node, 'update');
}
Написанное актуально для
Drupal 7
Похожие записи
- Программно вывести термины словаря в виде дерева с подсчётом количества материалов
- Выводим ссылки на похожие материалы с помощью Views
- Как на странице материала вывести в блоке ноды из этой же категории
- Выводим ссылки на похожие материалы без доп. модулей
- Выводим список терминов из плоского словаря с помощью сниппета
Комментарии
Спасибо, утащил.
А я-то вручную обновлял, при смене алиасов.
а то же самое но на 8ке?
))))
Лучше повесить на хук изменения термина и обрабатывать в очереди. Не всегда термин меняется через админку.
Добавить комментарий