Как изменить заголовок на странице добавления ноды?

Аватар пользователя Sennheiser

Как изменить заголовок на странице добавления какой либо ноды - site.ru/node/add/11111
Сейчас в переводах указано так - Создание материала @name
То есть заголовок формы добавления типа материала «Статьи» звучит так - Создание материала Статьи

Нужно, чтобы заголовки были такие: Создать [название типа материала в Винительном падеже в ед. числе]. Например: Создать статью. Кстати, на данном сайте это реализовано (https://drupal.ru/node/add), но тут походу просто название типов материалов изначально прописываются в дательном падеже, а в переводах - Создать @name я прав?

Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя itcrowd72
itcrowd72 6 дней назад
1

Сделайте hook_form_alter и назовите как вам надо

Аватар пользователя Sennheiser
Sennheiser 5 дней назад

Нашел такой код;

<?php
/**
 * Change the title prefix on all the node add and edit forms.
 *
 */
function mytheme_form_alter(&$form, &$form_state$form_id) {
  switch (
$form_id) {
    case (isset(
$form['type']) && $form['type']['#value'] . '_node_form'):
      if (
$form['nid']['#value']) {
        
drupal_set_title("Change " $form['title']['#default_value']);
      }
      else {
        
drupal_set_title("New " ucfirst($form['type']['#value']));
      }
    break;
  }
}
?>

Источник:
https://api.drupal.org/comment/63228#comment-63228

Но изменений нет, что я не так делаю?

Аватар пользователя itcrowd72
itcrowd72 5 дней назад

mytheme не забыли на название своей темы/модуля заменить?

Аватар пользователя Sennheiser
Sennheiser 5 дней назад

нет))) забыл, что у меня админская тема другая, по этому изменений я не видел)). Код работает.

Аватар пользователя adano
adano 5 дней назад
1

В форм_альтере - $form['#after_build'][] = ...
А там уже логика с заголовком, иначе терять его будете при валидации/ошибках.

Аватар пользователя Sennheiser
Sennheiser 5 дней назад

Да Вы правы, заголовок слетает при валидации. Можете на примере этого кода показать, как это сделать?

Аватар пользователя adano
adano 5 дней назад

Пример:

<?php
function realty_ads_form_realty_node_form_alter(&$form, &$form_state$form_id) {
  
$form['#after_build'][] = 'realty_ads_form_modern';
}

function 

realty_ads_form_modern($form, &$form_state) {
  if (isset(
$form['#node_edit_form'])) {
    if (!isset(
$form['#node']->nid)) {
      
$title t('New ...');
    }
    else {
      
$title t('Change ...');
    }
    
drupal_set_title($title);
  }
  return 
$form;
}
?>

P.S. Код чуть подправить, наверно нужно, т.к. у меня еще под крошки и кнопки вывод был.

Аватар пользователя Sennheiser
Sennheiser 5 дней назад

А такой вопрос, где вообще используется название типа материала? Если только в создании/редактировании и в сообщениях, то может действительно просто в нужном падеже создавать тип материала и в переводах поправить?