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


11

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 .


Phiên bản nào của Drupal?
keva

Xin lỗi, đây là cho Drupal 7. Tôi đã thêm thông tin đó vào câu hỏi ban đầu của mình.
Lester Peabody

Tôi sẽ chấp nhận câu trả lời ngay khi tôi giải quyết vấn đề. Tôi hiện đang tìm cách thiết lập các đề xuất của mình để hiển thị nội dung một cách phù hợp ...
Lester Peabody

Câu trả lời:


11

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.


1
Cách tiếp cận lượt xem / khối thực sự là cách tôi thích, nhưng đề xuất Display Suite vì một số người thấy nó dễ tiếp cận hơn.
jhedstrom

Lượt xem hoạt động rất tốt cho điều này, như tôi đang khám phá. Lượt xem là tuyệt vời nói chung. Tôi cũng sử dụng mô-đun Menu Menu để phân chia các menu của mình dựa trên vị trí của tôi trong trang web (hãy để tôi chia menu chính để nó luôn hiển thị và các menu phụ dựa trên menu nào tôi nằm trong menu chính). Mô-đun hoàn toàn tuyệt vời, rất khuyến khích.
Lester Peabody

Thật điên rồ khi tôi hỏi điều này gần một tháng, đã chấp nhận câu trả lời, nhưng giờ tôi mới bắt đầu áp dụng câu trả lời này (mặc dù tôi đã sử dụng Lượt xem một tấn kể từ đó). Bạn có thể làm rõ việc sử dụng Lượt xem một chút cho Drupal 7 không? Dường như Argument: nid không tồn tại trong Lượt xem 3 cho Drupal 7. Cảm ơn.
Lester Peabody

Tôi đã hiểu rồi. Khái niệm Đối số đã được thay thế bằng Bộ lọc theo ngữ cảnh trong Nâng cao.
Lester Peabody

D7, Trình điều chỉnh bối cảnh: Nội dung: NID. Chỉnh sửa: thấy bạn đã tìm thấy nó, trước khi tôi có thể trả lời
iStryker

7

Các hiển thị Suite mô-đun 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 trường Thêm vào trang chặn của tài liệu Display Suite


5

Tôi đã có cùng một vấn đề. Giải pháp khá dễ dàng. Bạn có thể dựa trên thực tế rằng trong Drupal 7, chúng ta có thể định nghĩa 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ị TRÁI ở khu vực 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
    }


1
Câu trả lời này cực kỳ thông minh và không yêu cầu bất kỳ mô-đun bên ngoài nào, ngoài việc xác định chế độ xem. Thay thế đơn giản cho Display Suite là Chế độ xem thực thể: drupal.org/project/entity_view_mode
paul-m

Tôi thực sự thích bài này. Gói nó trong một hàm if để chỉ xuất hiện trên một số trang nhất định. Tôi đã từng if (array_key_exists('block_14',$vars['page']['main_content'])){}làm cho nó chỉ xuất hiện trên các trang với một khối cụ thể.
Dominic Woodman

3

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à khối 'CCK', nhưng nó hoạt động với Drupal 7 (đã mang chức năng của CCK vào lõi).


1

Thay đổi nhỏ đối với 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 có trang chặn hoặc trang xem.

Thay đổi để:

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

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


0

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.

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.