it-swarm-id.com

Memisahkan bidang konten ke berbagai wilayah

Situasi saya adalah sebagai berikut: Saya memiliki tipe konten Seminar, dengan bidang A, B, dan C. Saya memiliki daerah Header, Footer, Content, dan Sidebar Kiri. Ada beberapa bidang dalam Seminar yang ingin saya tampilkan di wilayah Konten, tetapi juga di wilayah Sidebar Kiri.

Bagaimana cara saya melakukan ini? Mohon maaf jika ini sudah dijawab sebelumnya. Saya seorang pengembang dan tidak ragu untuk terjun ke fungsi hook dan preprocessor. Saya sudah menginstal modul Views, tetapi belum pernah menggunakannya (ini adalah situs Drupal pertama saya, jika Anda tidak dapat memberi tahu: P).

Bersulang.

EDIT: Ini untuk Drupal 7.

11
Lester Peabody

Tidak ada cara mudah di luar kotak untuk menambahkan konten sebuah simpul ke berbagai wilayah pada halaman. Ada beberapa cara untuk mengatasi masalah ini.

Cara non-coding: Views & Blok

Buat tampilan

  • Jenis: Blok
  • Filter Kontekstual: Konten: Nid
    • nilai default: ambil dari halaman saat ini
  • Bidang: Apa pun yang Anda inginkan
  • Saring:
    • Tipe Konten: Seminar

(ditambah pengaturan tambahan apa pun yang Anda inginkan)

Lalu pergi ke halaman blokir administrator. Pindahkan blok tampilan yang baru dibuat, ke wilayah yang Anda inginkan ditampilkan. Seharusnya hanya ditampilkan pada halaman simpul seminar.

Ulangi untuk semua wilayah

Coding Way dengan theme_preprocess_region ():

kode akan terlihat seperti ini

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

Ini hanya untuk Drupal 7. Hanya sekarang tersedia di region.tpl.php Anda.

11
iStryker

Modul Display Suite memungkinkan Anda melakukan ini. Anda harus mengaktifkan modul Display Suite Extras untuk mengekspos kawasan tema sebagai target untuk komponen node. Informasi tentang cara melakukan ini dapat ditemukan di Tambahkan bidang ke blok halaman dokumentasi Display Suite

7
jhedstrom

Saya memiliki masalah yang sama. Solusinya cukup mudah. Anda dapat mendasarkan fakta bahwa dalam Drupal 7 kita dapat mendefinisikan view_mode kita sendiri, tidak hanya FULL dan TEASER (seperti yang kita ketahui dari versi tertua). Jadi, tentukan view_mode lain untuk digunakan di wilayah Anda: mis. LEFTHAND. Drupal menampilkan FULL view_mode di wilayah konten. Jadi, Anda harus mengatakan kepada Drupal untuk menampilkan LEFTHAND di wilayah Sidebar Left.

  1. Di template_preprocess_page ()

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

  2. Dalam node.tpl.php tambahkan tampilan baru untuk mode tampilan kiri

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

5
Patrik Lucan

Jika Display Suite sepertinya terlalu banyak untuk kebutuhan Anda (Ini adalah modul yang hebat, tetapi mungkin berlebihan jika Anda hanya perlu merelokasi beberapa bidang) ada modul untuk hanya tujuan ini -> Blok CCK =.

Saya tahu ini disebut blok 'CCK', tetapi bekerja dengan Drupal 7 (yang membawa fungsionalitas CCK ke inti).

3
Chance G

Sedikit perubahan ke jawaban @Patrik Lucan, if ($vars['node']) menyebabkan masalah pada halaman yang bukan node, mis. halaman depan khusus dengan blok atau halaman tampilan.

Diubah menjadi:

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

Yang sepertinya telah menyelesaikan masalah.

1
Dominic Woodman

Sementara itu ada modul untuk ini. Dari halaman modul:

Bidang sebagai Blok menyediakan cara mudah untuk menampilkan satu atau lebih bidang dari simpul saat ini dalam sebuah blok.

Modul ini bertujuan untuk menjadi alternatif yang ringan untuk modul seperti Panel dan Tampilan Suite, atau menggunakan Tampilan untuk menentukan blok yang hanya mengambil satu bidang.

0
phils