Sửa đổi tiêu đề trang xem và đặt tiêu đề tùy chỉnh cho nó


7

Tôi đang sử dụng lượt xem và drupal 7. Tôi chuyển các đối số trong URL và tôi muốn đây là tiêu đề trang xem. Điều này có thể bằng cách sử dụng hộp kiểm ghi đè tiêu đề. Nhưng tôi muốn sửa đổi tiêu đề này. tức là thực hiện một số định dạng và một số nội dung trang trí và chỉ hiển thị những gì tôi yêu cầu làm tiêu đề. tôi làm nó như thế nào.


Hiện tại đã có mô-đun đóng góp Tiêu đề Trang cung cấp tích hợp Lượt xem.
Refineo

Bạn có thể đạt được nó với mô-đun Metatag . Mô-đun này cho phép bạn tự động cung cấp siêu dữ liệu có cấu trúc.
heilop

Câu trả lời:


7

Nếu tôi không nhầm, bạn không thể làm điều đó từ giao diện người dùng. Tuy nhiên, bạn có thể triển khai một hook trong một mô-đun tùy chỉnh, lấy các biến có sẵn, áp dụng logic của riêng bạn và đặt tiêu đề bạn muốn.

Bạn có thể tìm thấy một ví dụ về Đặt tiêu đề trang để xem trong Drupal .

function HOOK_views_pre_render(&$view) {
  if ($view->name == 'taxonomy_term' && $view->current_display == 'page') {
    drupal_set_title('Your Page Title');
  }
}

Xin chào, tôi có thể nhận được đối số được truyền trong URL trong hàm hook này my_module_view_pre numnder không ?? để tôi có thể sửa đổi và sử dụng nó. Tôi có thể viết chức năng này trong tập tin mẫu của tôi không?
Hacker

Đối số phải nằm trong biến $ view được truyền cho hàm đó. Logic như thế này thuộc về một mô-đun tùy chỉnh, không phải trong lớp chủ đề.
marcvangend

Tôi cũng phải đảm bảo tiêu đề của màn hình Xem được đặt thành '<none>'. Mặt khác, ô bạn nhập trên dạng xem luôn ghi đè giá trị từ móc.
John

13

Tìm thấy một trong những hoạt động

function MYMODULE_views_pre_render(&$view) {
  if ($view->name == 'menu') {
    $view->build_info['title'] = "TEST TITLE";
  }
}

1
Điều này không hiệu quả với tôi khi tôi bật kết xuất bộ nhớ đệm
David Meister

Bộ nhớ đệm là vấn đề của tôi quá. Sử dụng hook_view_pre_view đã giải quyết nó cho tôi (Xem phản hồi từ @MPD).
Keven

8

Tôi đã có một câu hỏi tương tự trong một bối cảnh hơi khác, Khi nào và ở đâu các bảng lấy tiêu đề ra khỏi Chế độ xem?

Giải pháp của tôi là

function foo_views_pre_view (&$view, &$display_id, &$args)
{
  $view->display[$view->current_display]->display_options["title"] =
  $view->display[$view->current_display]->handler->options["title"] = "Foo";
}

Móc này hoạt động với tôi, ngay cả khi bật bộ nhớ đệm kết xuất, nhưng tôi cũng phải thêm drupal_set_title () cho trường hợp sử dụng của mình
David Meister

Trong trường hợp của tôi, tôi đã phải thay đổi $view->display['default']->handler->options['title']chứ không phải là $view->current_display.
Keven

5

Bạn có thể sử dụng $view->set_title().

function mymodule_preprocess_views_view(&$variables) {
  $view = $variables['view'];
  if ($view->name == 'machine_name' && $view->current_display == 'display_machine_name') {
    $view->set_title('New Display Title');
  }
}

2

Thay vì sử dụng một mô-đun riêng biệt, tôi đã thêm đoạn mã sau vào chủ đề tôi đang sử dụng.

/**
 * THEME_PREPROCESS_VIEWS_VIEW
 * @param type $vars
 * 
 */
function MYTHEME_preprocess_views_view(&$vars) {
  // view block 
  if ($vars['view']->name == 'viewName') {
      //update your title
      $vars['view']->build_info['title'] = '---Title---';
    }
}

Thay MYTHEME bằng tên máy của chủ đề bạn đang sử dụng. Thêm mã tôi đã hiển thị trong tệp template.php của chủ đề.


1

Bạn có thể thực hiện hook_views_pre_render()trong một mô-đun.

/**
 * Implements hook_views_pre_render
 */
function MYMODULE_views_pre_render(&$view) {
  switch ($view->name) {
    case 'VIEW_NAME':
      // Your code here         
      break;
  } 
}

Cảm ơn, nhưng tôi không thấy biến "title" trong $ view với hàm này.
giorgio79

1

Tôi có cùng một vấn đề. Sau đây là mã duy nhất làm việc cho tôi.

function MYMODULE_NAME_preprocess_views_view(&$vars) {
  // If it is the view you want to change
  if ($vars['view']->name == 'MYMODULE_NAME') {
    // Override view's title, drupal_set_title() was not working
    $vars['view']->build_info['title'] = 'MY CUSTOM TITLE';
  }
}

0

Tôi giả sử bạn đã tạo một mô-đun "mymodule" và sau đó sử dụng hook_views_pre_build()triển khai.

Tôi không chắc bạn có thể thay đổi tiêu đề Xem ở bước này nhưng có thể có các khả năng khác.

Đầu tiên, nếu bạn đang cố gắng thay đổi tiêu đề trang (hiện được tạo bởi trang xem), bạn có thể thử thêm drupal_set_title('My new title');.

function mymodule_views_pre_build(&$view) {
  if ($view->name == 'view_machine_name') {
    drupal_set_title('New title');
  }
}

Điều này không thực sự thay đổi Tiêu đề Xem, nhưng nó có thể giúp ghi đè tiêu đề trang. Nếu nó không hoạt động, điều đó có nghĩa là Lượt xem xuất ra tiêu đề trang sau hook của bạn và bạn sẽ phải tìm một hook khác.

Một giải pháp khác có thể là sử dụng các đối số Lượt xem làm tiêu đề. Lượt xem có tính năng này tích hợp sẵn, có một trường cho điều đó trong cài đặt đối số. Bạn có thể kiểm tra tại đối số đầu tiên trong chế độ phân loại mặc định được hỗ trợ bởi các khung nhìn, cung cấp một ví dụ hay.


Nhiều đánh giá cao, không có may mắn cho đến nay. Tôi cũng đã cài đặt Tiêu đề trang và bằng cách nào đó dường như ghi đè mọi cài đặt khác.
giorgio79
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.