Drupal → Обновить синонимы нод, при изменении синонима термина
Дано — материалы с полем "Категория". Синонимы материалов строятся на основе синонима выбранной категории, например по шаблону [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'); }
Комментарии
Спасибо, утащил.
А я-то вручную обновлял, при смене алиасов.
а то же самое но на 8ке?
))))
Лучше повесить на хук изменения термина и обрабатывать в очереди. Не всегда термин меняется через админку.
Оставить комментарий