Tên tệp mẫu trang của ứng viên cho mục nhập loại nội dung tùy chỉnh cụ thể


11

Tôi đang làm việc trên một trang web Drupal 7. Tôi đã tạo loại nội dung tùy chỉnh cho các tác phẩm. Tôi có nhiều lĩnh vực và một số trong số chúng có liên quan đến bố cục trang như bg trang cụ thể cho mỗi mục. Vì vậy, tôi cần page.tpl tùy chỉnh cho loại nội dung cụ thể này.

Vì vậy, tôi đã kích hoạt và mở mô-đun Nhà phát triển chủ đề và nhấp vào vùng cơ thể để lấy tên ứng viên cho mục nhập trang loại nội dung cụ thể này. và nó cho tôi màn hình bên dưới không có ý nghĩa gì với tôi: / Khi tôi nhấp vào khu vực nút, nó vẫn ổn, nó cung cấp cho nút - work.tpl.php, nhưng tôi cần cho trang. Tôi đã thử "page - work.tpl.php", nó không hoạt động.

Tôi đang thiếu gì?

nhập mô tả hình ảnh ở đây

Câu trả lời:


12
function mytheme_process_page(&$variables) {
    $variables['theme_hook_suggestions'][] = 'page__'. $variables['node']->type;
}

Giả sử tên loại nội dung có thể đọc bằng máy của bạn là "công việc", trang - work.tpl.php sẽ hoạt động.

Tham khảo chủ đề này để biết thêm.


ồ nó đã làm việc rất tốt Tôi có thể giải quyết đến trang - work.tpl.php ngay bây giờ :) mặc dù nó hoạt động tốt, tôi có một thông báo lỗi là d.pr/EaMa Tôi đã googled và cố gắng giải quyết, vẫn đang cố gắng ... có ý tưởng nào không? Cảm ơn rất nhiều thời gian của bạn!!
chàng Drupal

oh tôi đoán đó là do mô-đun Nhà phát triển chủ đề. Tôi vô hiệu hóa mô-đun và lỗi đã biến mất :) cảm ơn rất nhiều!
chàng Drupal

2

Trong template.php thêm:

function themeName_preprocess_page(&$vars) {
  if (isset($vars['node'])) {
    // If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
    $vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--',    $vars['node']->type);
  }
}

Bạn có thể bỏ qua str_replace(); kiểm tra phiên bản nào hoạt động tốt nhất cho bạn

Sau đó, tạo một tệp mẫu có tên tệp là page- [content_type] .tpl.php. (Thay thế [content_type] bằng tên máy loại nội dung.)

Xem http://drupal.org/node/1089656#comment-4426790 .


1

Trong trường hợp bạn muốn id nút là tốt, sử dụng này.

function mytheme_process_page(&$variables) {
  if (isset($variables['node'])) { 
    $variables['theme_hook_suggestions'][] = 'page__type__'. $variables['node']->type;
    $variables['theme_hook_suggestions'][] = 'page__node__' . $variables['node']->nid;
  }
}

0

Có một mẫu khác nhau cho từng loại nội dung không phải là một cách thực hành tốt theo những người ở Drupal. Đó là lý do bạn không tìm thấy page--work.tpl.phptrong danh sách tệp ứng cử viên. Họ cảm thấy chỉ các tệp mẫu nút nên khác nhau. Tuy nhiên nếu bạn muốn hack, hãy tiếp tục.

Sử dụng bí danh đường dẫn để thiết lập đường dẫn dựa trên loại nội dung. Và sau đó chèn mã này

 if (module_exists('path')) {
    $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
    if ($alias != $_GET['q']) {
      $template_filename = 'page';
      foreach (explode('/', $alias) as $path_part) {
        $template_filename = $template_filename . '-' . $path_part;
        $vars['template_files'][] = $template_filename;
      }
    }
  }

vào phptemplate_preprocess_page(&$vars)chức năng trong template.phpthư mục chủ đề.

Bạn có thể sửa đổi mã một chút để làm cho nó hiệu quả hơn mặc dù.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.