Cách sử dụng template_pre process_view_view để truyền một biến vào tệp tpl lượt xem


8

Vì vụ án lại xảy ra với tôi lần thứ hai gần đây, tôi quyết định đặt câu hỏi để có thể học được điều gì đó.

Trong Chế độ xem, tiêu đề hiển thị chính (tiêu đề thường được hiển thị ở đầu chế độ xem) có sẵn ở đầu ra hiển thị$titledường như không có sẵn ở đầu ra kiểu . Thay vào đó, $titlebiến trong đầu ra kiểu có nghĩa là tên của một nhóm nếu sử dụng nhóm.

Điều tôi muốn là có sẵn tiêu đề hiển thị đó (name tên người ') trong bất kỳ mẫu nào dưới dạng $display_title. Vì vậy, những gì tôi đã làm là đưa mã này vào template.php:

function MYTHEME_preprocess_views_view(&$variables){
  if($variables['name'] == 'studios' && $variables['display_id'] == 'block'){
    $view = $variables['view'];
    $variables['display_title'] = $view->human_name;
  }
  dpm($variables);
}

... hy vọng sẽ có danh hiệu con người tiện dụng: <?php print $display_title; ?>

... nhưng không có niềm vui. Tôi đang làm gì sai?

Câu trả lời:


10

Như bạn cũng biết, một khung nhìn có một số mẫu, có thể thay đổi tùy theo kiểu, ví dụ:

  • Hiển thị đầu ra: views-view.tpl.php
  • Kiểu đầu ra: views-view-STYLE.tpl.php
  • Đầu ra kiểu hàng: views-view-fields.tpl.php
  • Nội dung hiện trường: views-view-field.tpl.php

Vân vân.

Mỗi mẫu có chức năng tiền xử lý riêng. Những gì bạn làm trong mã của mình chỉ ảnh hưởng đến đầu ra hiển thị vì bạn đang xử lý trước chỉ view-view.tpl.php ( template_preprocess_views_view)

Để tìm ra các tệp mẫu có sẵn cho chế độ xem cụ thể của bạn, bạn có thể đi đến xem trang chỉnh sửa và trong phần 'Nâng cao' ở cuối cột, nhấp vào 'Chủ đề: Thông tin'. Bạn sẽ thấy các tệp mẫu mà chế độ xem của bạn đang sử dụng (in đậm) và các tệp mẫu nào bạn sẽ sử dụng để ghi đè lên chúng.

Các chức năng tiền xử lý nên được đặt tên theo tệp mẫu, thay thế dấu gạch ngang bằng dấu gạch dưới. Ví dụ cho views-view-STYLE.tpl.phpsẽ là template_preprocess_views_view_STYLE().


0

Bạn có thể sử dụng các chức năng:

  1. drupal_set_title ()

    Đặt tiêu đề của trang hiện tại.

  2. drupal_get_title ()

    Lấy tiêu đề của trang hiện tại.


Cảm ơn, nhưng quan điểm của tôi tạo ra một khối chứ không phải là một trang, vì vậy đây không phải là một giải pháp. Hơn nữa, điều đó sẽ yêu cầu chuyển một đối số chuỗi, như t('My Views Title')và sau đó dịch lại nó ở phía quản trị viên. Đó là những gì tôi muốn tránh (nhưng tôi đã dịch Chế độ xem đó ...).
Artur

0

Nếu tôi nhớ đúng, bạn có thể truyền tiêu đề với đối tượng xem, thêm một biến mới bên trong đối tượng xem và ust trong tệp mẫu.


0

Để giải quyết câu hỏi cụ thể về "chuyển một biến vào tệp mẫu" ... Tôi nghĩ bạn chỉ cần sử dụng một hook khác. Đính kèm biến vào $viewđối tượng của bạn như thế này:

function NAME_OF_MODULE_views_pre_render(&$view) {
  $view->display_title = "What have you";
}

Sau đó, trong một tệp mẫu như views-view--NAME_OF_VIEW--page.tpl.php:

print $view->display_title;

Chỉ cần phải làm điều này bản thân mình và nó đã làm việc tuyệt vời.

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.