Tôi muốn buộc tất cả nội dung được tạo bằng chủ đề trang web chính của mình. Tôi muốn làm điều này bởi vì tôi đang sử dụng một trình kết xuất trong MYMODULE_node_presave()
như thế này:
chức năng MYMODULE_node_presave(NodeInterface $node) {
$renderer = \Drupal::service('renderer');
$content_type = $node->getType();
if ($content_type == 'trang') {
$viewmode_render = $node->get('field_text_main_to_render')
->view('rendered_output');
$processed_display = $renderer->renderPlain($viewmode_render);
$node->set('field_text_main_display', "$processed_display");
$node->field_text_main_display->format = 'đã xử lý';
}
Trang web của tôi sử dụng Bartik làm chủ đề chính và Seven làm chủ đề quản trị.
Trong Cài đặt giao diện (/admin/xuất hiện), tôi đã kiểm tra tùy chọn Sử dụng chủ đề quản trị khi chỉnh sửa hoặc tạo nội dung. Điều này đảm bảo rằng các nút được hiển thị trong Bartik khi tạo trong giao diện người dùng.
Tuy nhiên, khi tôi lưu lại các nút trên /admin/nội dung
, các nút được lưu lại bằng Seven, thay vì Bartik. Vì vậy, tôi đã thêm một chủ đềĐàm phán
:
/**
* Chọn chủ đề chính xác cho các tuyến đường khác nhau.
*/
class ThemeNegotiator thực hiện ThemeNegotiatorInterface {
/**
* {@inheritDoc}
*/
áp dụng chức năng chung(RouteMatchInterface $route_match) {
trả về $this->negotiateRoute($route_match) ? ĐÚNG SAI;
}
/**
* {@inheritDoc}
*/
hàm công khai xác địnhActiveTheme(RouteMatchInterface $route_match) {
trả về $this->negotiateRoute($route_match) ?: NULL;
}
/**
* Chọn chủ đề cho trường hợp đặc biệt.
*
* @param \Drupal\Core\Routing\RouteMatchInterface $route_match
* Tuyến đường phù hợp hiện tại.
*
* @return bool|chuỗi
* Tên chủ đề để sử dụng (chuỗi) hoặc sai (bool).
*/
chức năng riêng đàm phánRoute(RouteMatchInterface $route_match) {
$route_name = $route_match->getRouteName();
// Trang nội dung quản trị phải sử dụng chủ đề kết xuất nút.
// Tại sao: Hành động "Lưu nội dung" sẽ sử dụng chủ đề của trang này.
if ($route_name === 'system.admin_content') {
trả về 'bartik';
}
khác {
trả về SAI;
}
}
}
Bây giờ, khi tôi chạy lưu nút hàng loạt trên /admin/nội dung
, các nút được hiển thị chính xác với Bartik.
Tiếp theo, tôi đã cài đặt nguồn cấp dữ liệu mô-đun. Bây giờ, khi tôi nhập các nút qua CSV bằng Nguồn cấp dữ liệu, chúng được hiển thị bằng Seven chứ không phải Bartik. Tôi muốn buộc các nút này cũng được hiển thị bằng Bartik, nhưng tôi không biết cách thực hiện. (Ví dụ, nếu có một cách để sử dụng đàm phánLộ trình
bên trong chủ đềĐàm phán
, điều đó sẽ ổn, nhưng tôi không biết cách thiết lập.) Bạn có ý kiến gì không?