Cara menampilkan ringkasan (penggoda) di atas tubuh dalam tampilan konten lengkap

11

Saya ingin menampilkan penggoda di atas setiap artikel di bawah judul, seperti pada tata letak "konten lengkap" berikut:

  1. Judul
  2. Teaser (ringkasan artikel)
  3. Gambar
  4. Tubuh

Selain itu teaser harus memiliki format sendiri (misalnya huruf miring dan font yang lebih besar)

Saya tidak menemukan cara untuk melakukan itu tanpa mengedit file tpl atau file inti.

Sebuah solusi adalah dengan menambahkan bidang baru "article_teaser" ke jenis konten saya, kemudian mengelola tampilan untuk mendapatkan tata letak saya di tampilan "Konten penuh". Ini berfungsi, tetapi saya tidak suka memiliki dua bidang asah dalam bentuk konten input saya, karena saya harus mengetik dua kali teks yang sama.

Tampaknya saya tidak dapat membagi badan bidang menjadi bagian "teks" dan "ringkasan", tetapi saya hanya dapat menampilkan satu atau yang lain, tetapi tidak keduanya!

Apakah ada cara (modul?) Untuk melakukan itu?

(Lingkungan saya: Drupal 7 dengan sub tema Zen.)

gingo
sumber

Jawaban:

10

Anda dapat melakukan ini dengan Views. Buat tampilan yang mengganti jalur untuk tipe konten Anda. Atur tampilan ke Bidang dan kemudian tambahkan bidang tubuh dua kali; atur instance pertama untuk menampilkan teaser dan instance kedua untuk menampilkan body. Anda dapat menambahkan gambar di antaranya. Tampilan juga akan memungkinkan Anda untuk menyesuaikan CSS dari bidang teaser / body dengan mudah (secara default, Views menyediakan sejumlah kelas, dan Anda dapat menambahkan kelas tambahan jika perlu).

Untuk referensi: Node Satu rangkaian screencast video tentang penggunaan Tampilan

Patrick Kenny
sumber
Terima kasih banyak. Tautan ini sangat berguna, dan saya belajar banyak tentang pandangan: Saya mendapat pandangan yang melakukan hal-hal tersebut. Tetapi tampilan menunjukkan daftar node, sedangkan jenis konten saya (halaman buku) adalah satu halaman: bagaimana saya bisa menimpa halaman buku tunggal (node) dengan daftar node (tampilan yang saya buat)? Saya mungkin kehilangan sesuatu tentang tampilan, mungkin cara mengganti halaman buku default dengan miliknya.
gingo
@gingo Untuk mengganti semua halaman buku, Anda perlu mengonfigurasi jalur tampilan dengan cara khusus. Sebagai contoh, lihat tampilan istilah Taksonomi , yang disediakan oleh Views secara default (dinonaktifkan). Path diatur ke /taxonomy/term/%; jika Anda mengedit tampilan itu, Anda dapat melihat bagaimana argumen (filter kontekstual) ditarik untuk memungkinkan Anda mengedit tampilan untuk istilah taksonomi. Anda dapat mengatur hal serupa untuk halaman buku di situs Anda.
Patrick Kenny
baik, saya harus melihat lebih dalam filter kontekstual tapi saya pikir saya berada di jalan yang benar. Terima kasih.
gingo
3

Tampilan pasti bisa melakukan pekerjaan itu. Tapi saya pikir itu sedikit berlebihan untuk persyaratan ini.

Cara lain untuk mencapainya adalah mengimplementasikan hook_field_extra_fields () dan hook_node_view () dalam modul khusus Anda.

/**
 * 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,  
    );
  }
}

Kosongkan cache dan Anda dapat pergi ke jenis konten "Kelola tampilan" pengaturan untuk menarik dan menjatuhkan untuk menempatkan bidang "ringkasan tubuh". Sebagai contoh admin/structure/types/manage/page/display.

eric.chenchao
sumber
Hm saya pikir ini dekat, tetapi konten bidang tidak ditampilkan, adil Array.
arjan
Hai @arjan, sudahkah Anda memeriksa data Array dan menyalinnya di sini?
eric.chenchao
Apa gunanya membuat variabel, 1 baris di atas satu-satunya tempat itu digunakan, cukup masukkan string dalam pernyataan if
Kiee
Hai @Kiee, kamu benar. Tetapi cuplikan ini digunakan sebagai contoh dengan komentar;)
eric.chenchao
3

pada drupal 7:

Di isian Badan Anda dapat menggunakan 'tulis ulang hasil' dan gunakan di 'pola penggantian' ini:

[body-summary]

dan ini akan menampilkan ringkasan lengkap.

javier eduardo
sumber
Anda adalah seorang jenius yang jenius, semua penjelasan berlebihan lainnya, milik Anda adalah yang bekerja paling baik sejauh ini dan sangat sederhana!
Bruno Vincent
0

Untuk definisi ulang jenis konten, Anda perlu melihat Panel karena salah satu fungsi Panel adalah mendefinisikan ulang tampilan dasar dari Tipe Konten tertentu (atau informasi berdasarkan kriteria pemilihan lainnya)

Csaba
sumber
0

Ketika Arjan memperhatikan cuplikan Cityreader menghasilkan hasilnya tetapi tidak ditampilkan dengan benar.

Variasi ini bekerja untuk saya:

 /**
 * 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,  
    );
  }
}
Mike Juic3
sumber
0

Jika Anda tertarik pada solusi tanpa kode menggunakan modul Views and Display Suite, Anda dapat:

  1. Buat blok Views dengan bidang ringkasan di atasnya. Di bawah opsi filter kontekstual dalam pengaturan lanjutan Anda dapat mengatur opsi "Berikan nilai default" dengan ketik Content ID dari URL.

  2. Di bawah Tipe Konten -> [tipe konten Anda] -> Kelola tampilan pilih opsi Bidang khusus (menu di bagian bawah) dan buat bidang Blok khusus dari Tampilan yang Anda buat pada langkah 1.

  3. Saat simpan, bidang Kustom akan muncul dalam daftar bidang jenis simpul tempat Anda dapat memilih di wilayah mana ia akan muncul.

pengguna1795440
sumber