it-swarm-vi.com

Tách các trường nội dung thành các vùng khác nhau

Tình huống của tôi như sau: Tôi có một Hội thảo loại nội dung, với các trường A, B và C. Tôi có các Tiêu đề khu vực, Chân trang, Nội dung và Thanh bên trái. Có một số trường trong Hội thảo tôi muốn được hiển thị trong vùng Nội dung, nhưng cũng có trong Vùng bên trái.

Làm thế nào để tôi đi về làm điều này? Xin lỗi nếu điều này đã được trả lời trước đó. Tôi là một nhà phát triển và không ngần ngại đi sâu vào các chức năng hook và tiền xử lý. Tôi đã cài đặt mô-đun Lượt xem, nhưng chưa bao giờ sử dụng mô-đun này (đây là trang web Drupal đầu tiên của tôi, nếu bạn không thể nói: P).

Chúc mừng.

EDIT: Đây là cho Drupal 7.

11
Lester Peabody

Không có cách nào dễ dàng để thêm nội dung của một nút vào các khu vực khác nhau trên trang. Có nhiều cách để giải quyết vấn đề này.

Cách không mã hóa: Lượt xem & Khối

Tạo một cái nhìn

  • Loại: Khối
  • Bộ lọc bối cảnh: Nội dung: Nid
    • giá trị mặc định: lấy từ trang hiện tại
  • Lĩnh vực: Bất cứ điều gì bạn muốn
  • Bộ lọc:
    • Loại nội dung: Hội thảo

(cộng với bất kỳ cài đặt bổ sung nào bạn muốn)

Sau đó chuyển đến trang khối quản trị viên Di chuyển khối xem mới tạo, đến khu vực bạn muốn nó hiển thị. Nó chỉ nên hiển thị trên các trang nút hội thảo.

Lặp lại cho tất cả các vùng

Cách mã hóa với theme_pre process_region () :

mã sẽ trông giống như thế này

MYTHEME_preprocess_region(&$variables) {
  if (isset($node) && ($node->type == 'seminar' )) {
     //add new variable here.     
  }
}

Cái này chỉ dành cho Drupal 7. Bây giờ nó có sẵn trong khu vực của bạn.tpl.php.

11
iStryker

Mô-đun Display Suite cho phép bạn làm điều này. Bạn sẽ cần kích hoạt mô-đun Display Suite Extras để hiển thị các vùng chủ đề làm mục tiêu cho các thành phần nút. Thông tin về cách thực hiện việc này có thể được tìm thấy trong Thêm trường vào một khối trang của tài liệu Display Suite

7
jhedstrom

Tôi đã có cùng một vấn đề. Giải pháp khá dễ dàng. Bạn có thể dựa vào thực tế là trong Drupal 7, chúng ta có thể xác định view_mode của riêng mình, không chỉ FULL và TEASER (như chúng ta biết từ các phiên bản cũ nhất). Vì vậy, hãy xác định một view_mode khác để sử dụng trong khu vực của bạn: ví dụ: LEFTHAND. Drupal hiển thị FULL view_mode trong vùng nội dung. Vì vậy, bạn phải nói với Drupal để hiển thị LEFTHAND ở vùng bên trái.

  1. Trong template_pre process_page ()

    if ($vars['node']) {
    $vars['page']['sidebar_left'][] = node_view($vars['node'], 'lefthand');
    }

  2. Trong node.tpl.php, thêm một màn hình mới cho chế độ xem bên trái

    if ($view_mode == 'lefthand') {
    // render content fields here
    }

5
Patrik Lucan

Nếu Display Suite có vẻ như quá nhiều cho nhu cầu của bạn (Đó là một mô-đun tuyệt vời, nhưng nó có thể là quá mức nếu bạn chỉ cần di chuyển một vài trường), có một mô-đun chỉ cho mục đích này -> Khối CCK =.

Tôi biết nó được gọi là các khối 'CCK', nhưng nó hoạt động với Drupal 7 (đã đưa chức năng của CCK vào lõi).

3
Chance G

Thay đổi nhẹ thành câu trả lời của @Patrik Lucan, if ($vars['node']) đã gây ra sự cố cho tôi trên các trang không có nút, ví dụ: trang trước tùy chỉnh với khối hoặc trang xem.

Thay đổi để:

if (array_key_exists('node', $vars))

Mà dường như đã giải quyết được vấn đề.

1
Dominic Woodman

Trong khi đó, có một mô-đun cho việc này. Từ trang mô-đun:

Trường dưới dạng Khối cung cấp một cách dễ dàng để hiển thị một hoặc nhiều trường của nút hiện tại trong một khối.

Mô-đun này nhằm mục đích thay thế trọng lượng nhẹ cho các mô-đun như Bảng và Bộ hiển thị hoặc sử dụng Chế độ xem để xác định một khối chỉ truy xuất một trường.

0
phils