Как вставить NID узла в заголовок узла?

Я знаю, что существует Automatic Nodetitles , но он предназначен только для Drupal 7.

Есть ли способ автоматического назначения заголовка с NID при нажатии submit? Я знаю, что NID не существует, пока не будет нажата кнопка отправки. Как встроить NID в заголовок?

Какой крючок можно использовать?

6 голосов | спросил Patoshi パトシ 25 AM00000020000005831 2016, 02:10:58

1 ответ


4

Вам нужно сделать два шага:

Шаг первый: автоматически создайте заголовок и скрытую форму. используйте hook_field_widget_form_alter () с кодом

function MY_MODULE_field_widget_form_alter(&$element, \Drupal\Core\Form\FormStateInterface $form_state, $context) {
  $field_definition = $context['items']->getFieldDefinition();
  $bundle = $form_state->getFormObject()->getEntity()->bundle();
  // You can check with other bundle
  if ($field_definition->getName() == 'title' && $bundle == 'page' && $element['value']['#default_value'] == '') {
    $element['#required'] = FALSE;
    //hidden title  
    $element['#type'] = 'hidden';
    $element['value']['#required'] = FALSE;
    // Set default value
    $element['value']['#default_value'] = 'Default Title';
  }
}

с первого шага вы можете переслать форму отправки.

Шаг второй: Переопределите новый заголовок со значением по умолчанию. Используйте hook_node_insert ()

function MY_MODULE_node_insert(Drupal\node\NodeInterface $node) {
  if ($node->bundle() == 'page') {
    $new_title = 'New title ' . $node->id();
    $node->setTitle($new_title);
    $node->setNewRevision(FALSE);
    $node->save();  
  }
}
ответил MrD 27 AM00000050000000931 2016, 05:52:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132