Cách hiển thị tóm tắt (trêu ghẹo) trên cơ thể trong chế độ xem nội dung đầy đủ


11

Tôi muốn hiển thị một lời trêu ghẹo trên đầu mỗi bài viết dưới tiêu đề, như sau đây về nội dung đầy đủ của bố cục của bố cục:

  1. Tiêu đề
  2. Teaser (tóm tắt bài viết)
  3. Hình ảnh
  4. Thân hình

Ngoài ra, lời trêu ghẹo nên có định dạng riêng (ví dụ in nghiêng và phông chữ lớn hơn)

Tôi không tìm thấy cách nào để làm điều đó mà không chỉnh sửa các tệp tpl hoặc các tệp lõi.

Một giải pháp sẽ là thêm một trường "article_teaser" mới vào loại nội dung của tôi, sau đó quản lý hiển thị để có được bố cục của tôi trong chế độ xem đầy đủ nội dung của Trực tiếp. Điều này hoạt động, nhưng tôi không muốn có hai trường trêu ghẹo trong mẫu nội dung đầu vào của mình, vì tôi nên gõ hai lần cùng một văn bản.

Có vẻ như tôi không thể phân chia phần thân trường trong các phần văn bản và văn bản tóm tắt của nó, nhưng tôi chỉ có thể hiển thị cái này hoặc cái kia, nhưng không thể hiển thị cả hai!

Có cách nào (một mô-đun?) Để làm điều đó?

(Môi trường của tôi: Drupal 7 với chủ đề phụ Zen.)

Câu trả lời:


10

Bạn có thể làm điều này với Lượt xem. Tạo chế độ xem ghi đè các đường dẫn cho loại nội dung của bạn. Đặt màn hình thành Trường và sau đó thêm trường cơ thể hai lần; đặt phiên bản đầu tiên để hiển thị lời trêu ghẹo và phiên bản thứ hai để hiển thị phần thân. Bạn có thể thêm hình ảnh ở giữa. Lượt xem cũng sẽ cho phép bạn tùy chỉnh CSS của các trường trêu ghẹo / cơ thể một cách dễ dàng (theo mặc định, Lượt xem cung cấp một số lớp và bạn có thể thêm các lớp bổ sung nếu cần).

Để tham khảo: Node Một loạt các đoạn ghi hình video khi sử dụng Chế độ xem


Cảm ơn rât nhiều. Liên kết này rất hữu ích và tôi đang tìm hiểu rất nhiều về các chế độ xem: Tôi có một chế độ xem đã thực hiện công cụ này. Nhưng các khung nhìn hiển thị danh sách các nút, trong khi loại nội dung của tôi (một trang sách) là một trang duy nhất: làm cách nào tôi có thể ghi đè lên một trang sách (một nút) bằng danh sách các nút (chế độ xem tôi đã tạo)? Tôi có lẽ đang thiếu một cái gì đó về lượt xem, có thể làm thế nào để ghi đè trang sách mặc định bằng chính trang của nó.
chơi lô tô

@gingo Để ghi đè tất cả các trang sách, bạn cần định cấu hình đường dẫn xem theo cách đặc biệt. Để biết ví dụ, hãy xem chế độ xem Thuật ngữ phân loại , được cung cấp bởi Chế độ xem theo mặc định (bị tắt). Đường dẫn được đặt thành /taxonomy/term/%; nếu bạn chỉnh sửa chế độ xem đó, bạn có thể thấy cách các đối số (bộ lọc theo ngữ cảnh) được kéo vào để cho phép bạn chỉnh sửa màn hình cho các thuật ngữ phân loại. Bạn có thể thiết lập một cái gì đó tương tự cho các trang sách trên trang web của bạn.
Patrick Kenny

tốt, tôi phải nhìn sâu hơn vào các bộ lọc theo ngữ cảnh nhưng tôi nghĩ rằng tôi đang đi đúng hướng. cảm ơn bạn.
chơi lô tô

3

Lượt xem chắc chắn có thể làm công việc. Nhưng tôi nghĩ rằng đó là một chút quá mức cho yêu cầu này.

Một cách khác để đạt được điều đó là triển khai hook_field_extra_fields () và hook_node_view () trong mô-đun tùy chỉnh của bạn.

/**
 * Implements hook_field_extra_fields().
 */
function mymodule_field_extra_fields() {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  $extra['node'][$content_type]['display']['body_summary'] = array(
    'label' => t('Body summary'),
    'description' => t('Display body summary.'),
    'weight' => 0,
  );

  return $extra;
}

/**
 * Implements hook_node_view().
 */
function mymodule_node_view($node, $view_mode, $langcode) {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  if ($node->type == $content_type) {
    $summary = field_view_field('node', $node, 'body', array(
      'type' => 'text_summary_or_trimmed',
    ));

    $node->content['body_summary'] = array(
      '#markup' => $summary,
      '#weight' => 0,  
    );
  }
}

Xóa bộ nhớ cache và bạn có thể chuyển đến cài đặt loại "Quản lý hiển thị" nội dung để kéo và thả để đặt trường "tóm tắt nội dung". Ví dụ admin/structure/types/manage/page/display.


Tôi nghĩ rằng điều này gần, nhưng nội dung trường không hiển thị, chỉ Array.
arjan

Xin chào @arjan, bạn đã kiểm tra dữ liệu Array và sao chép nó ở đây chưa?
eric.chenchao

Điểm tạo ra một biến là gì, 1 dòng phía trên vị trí duy nhất được sử dụng, chỉ cần đặt chuỗi trong câu lệnh if
Kiee

Xin chào @Kiee, bạn đã đúng. Nhưng đoạn trích này được sử dụng làm ví dụ với nhận xét;)
eric.chenchao

3

vào ngày 7:

Trong trường Body, bạn có thể sử dụng 'viết lại kết quả' và sử dụng trong 'mẫu thay thế' này:

[body-summary]

và điều này sẽ hiển thị tóm tắt đầy đủ.


Bạn là một thiên tài, tất cả những lời giải thích quá mức khác, bạn là người làm việc tốt nhất từ ​​trước đến nay và thật đơn giản!
Bruno Vincent

0

Đối với định nghĩa lại loại nội dung, bạn cần xem xét Bảng vì một trong các chức năng của Bảng là xác định lại chính xác giao diện cơ bản của một số Loại nội dung nhất định (hoặc thông tin dựa trên các tiêu chí lựa chọn khác) Csaba


0

Như Arjan nhận thấy đoạn trích của Cityreader tạo ra kết quả nhưng nó không hiển thị đúng.

Biến thể này làm việc cho tôi:

 /**
 * Implements hook_field_extra_fields().
 */
function mymodule_field_extra_fields() {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  $extra['node'][$content_type]['display']['body_summary'] = array(
    'label' => t('Body summary'),
    'description' => t('Display body summary.'),
    'weight' => 0,
  );

  return $extra;
}

/**
 * Implements hook_node_view().
 */
function mymodule_node_view($node, $view_mode, $langcode) {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  if ($node->type == $content_type) {
    $summary = field_view_field('node', $node, 'body', array(
      'type' => 'text_summary_or_trimmed',
    ));

    $node->content['body_summary'] = array(
      '#markup' => $summary['#items'][0]['safe_summary'],
      '#weight' => 0,  
    );
  }
}

0

Nếu bạn quan tâm đến giải pháp không có mã bằng mô-đun Lượt xem và Bộ hiển thị, bạn có thể:

  1. Tạo khối Lượt xem với trường tóm tắt trên đó. Trong tùy chọn Bộ lọc theo ngữ cảnh trong cài đặt nâng cao, bạn có thể đặt tùy chọn "Cung cấp giá trị mặc định" với loại ID nội dung từ URL.

  2. Trong Loại nội dung -> [loại nội dung của bạn] -> Quản lý hiển thị chọn tùy chọn Trường tùy chỉnh (menu ở dưới cùng) và tạo trường Khối tùy chỉnh từ Xem bạn đã tạo ở bước 1.

  3. Khi lưu Trường tùy chỉnh sẽ xuất hiện trong danh sách trường loại nút nơi bạn có thể chọn trong vùng sẽ xuất hiện.

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.