Trong Drupal 7, đã có drupal_get_title()
và drupal_set_title()
. Họ là Môn lịch sử.
Tôi muốn thay đổi tiêu đề trang "Tạo X" thành "Thêm X" cho tất cả X và tôi nghĩ hook_pre process_page_title()
trong tệp .theme của tôi là nơi thích hợp để làm điều đó. (Nếu bạn không đồng ý, xin vui lòng nói như vậy.)
I E. Tôi muốn nó là 'Thêm X' cho bất kỳ 'X' nào khi nó ban đầu là 'Tạo X'. Ví dụ: 'Tạo bài viết' sẽ trở thành 'Thêm bài viết'. Và nếu tiêu đề là 'Bài viết về quán bar', thì tôi nên để nguyên như vậy.
Về cơ bản, tôi muốn đánh hơi chuỗi tiêu đề và nếu nó bắt đầu bằng 'Tạo', hãy thay đổi nó thành 'Thêm'. Điều này cho đến nay tôi đã nhận được và điều này rõ ràng là chưa đầy đủ:
/**
* Triển khai hook_pre process_page_title().
*/
Nỗ lực đầu tiên:
function mytheme_pre process_page_title(&$variables) {
$request = \Drupal::request();
$route_match = \Drupal::routeMatch();
$title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());
}
Lần thử thứ hai, dựa trên đề xuất của 4k4:
function mytheme_pre process_page_title(&$variables) {
$title = $variables['title'];
if ($title instanceof TranslatableMarkup) {
$title = $title->getUntranslatedString();
$title = str_replace('Tạo', 'Thêm', $title);
$variables['title'] = t($title);
}
khác {
$variables['title'] = Đánh dấu::create(str_replace('Tạo', 'Thêm', $title));
}
}
Các tiêu đề tôi muốn thay đổi đến từ lõi Drupal và chúng có thể dịch được, vì vậy đó là instanceof TranslatableMarkup
nhánh được thực thi, nhưng tôi đồng ý với việc có một dự phòng trong trường hợp chúng không được thực thi, là một ý tưởng hay.
Tuy nhiên, trong khi một khởi đầu tốt, đây không phải là một giải pháp hoàn chỉnh. Nó thay đổi tiêu đề hiển thị của biểu mẫu thêm bài viết từ "Tạo bài viết" thành "Thêm @name".
Tôi đã nâng cao câu trả lời bằng 4k4, vì nó hướng tới một giải pháp xa hơn nhiều so với lần thử đầu tiên của tôi, nhưng nó vẫn chưa hoàn thành.
tôi không muốn sử dụng Ghi đè chuỗi module cho điều này vì một số lý do, chủ yếu là vì chủ đề này sẽ hoạt động trên các bản dịch mà không yêu cầu cấu hình bổ sung khi triển khai.