В Drupal 7 было друпал_get_title()
и друпал_set_title()
. Они история.
Я хочу изменить заголовок страницы «Создать X» на «Добавить X» для всех X, и я думаю hook_preprocess_page_title()
в моем .theme-файле самое подходящее место для этого. (Если вы не согласны, скажите об этом.)
т.е. Я хочу, чтобы это было «Добавить X» для любого «X», когда изначально было «Создать X». Например: «Создать статью» должно стать «Добавить статью». И если заголовок «Статья адвоката», я должен остаться как есть.
По сути, я хочу понюхать строку заголовка и, если она начинается с «Создать», изменить ее на «Добавить». Это до сих пор я получил, и это, очевидно, неполное:
/**
* Реализует hook_preprocess_page_title().
*/
Первая попытка:
функция mytheme_preprocess_page_title(&$variables) {
$запрос = \Drupal::request();
$route_match = \Drupal::routeMatch();
$title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());
}
Вторая попытка, основанная на предложении 4k4:
функция mytheme_preprocess_page_title(&$variables) {
$title = $переменные['название'];
если ($ title экземпляр TranslatableMarkup) {
$title = $title->getUntranslatedString();
$title = str_replace('Создать', 'Добавить', $title);
$variables['title'] = t($title);
}
еще {
$variables['title'] = Разметка::create(str_replace('Создать', 'Добавить', $title));
}
}
Заголовки, которые я хочу изменить, взяты из ядра Drupal, и их можно перевести, так что это instanceof TranslatableMarkup
ветвь, которая выполняется, но я согласен с запасным вариантом на случай, если это не так, это хорошая идея.
Однако, несмотря на хорошее начало, это не полное решение. Он изменяет отображаемый заголовок формы добавления статьи с «Создать статью» на «Добавить @name».
Я проголосовал за ответ 4k4, так как он идет гораздо дальше к решению, чем моя первая попытка, но он все еще не завершен.
я не хочу использовать Строковые переопределения модуль для этого по нескольким причинам, в основном потому, что эта тема должна работать в разных переводах, не требуя дополнительной настройки при развертывании.