it-swarm-id.com

Bagaimana cara menampilkan bidang sebelum judul simpul?

Saya mencari untuk membuat bidang tertentu sebelum judul node ketika menampilkan penggoda di D7.

Secara efektif saya ingin beralih dari this ke this .

Saya telah mencari memperbarui node.tpl.php tapi saya perhatikan bahwa ia memisahkan $title dari $content jadi saya tidak yakin bagaimana mendekati ini. Setelah beberapa pencarian saya menemukan bahwa orang-orang telah menyarankan menggunakan CCK dan ConTemplate modul untuk menyiasati ini di Drupal-6 tetapi saya ' Saya bertanya-tanya apakah ada solusi yang lebih Drupal-7.

Ada saran?

39
irishbuzz

Ini sangat sederhana dengan Drupal 7.

Dengan render dan hide Anda tahu memiliki kemampuan untuk mengontrol penempatan elemen tunggal di $content tanpa harus mencetak semua item yang Anda suka diperlukan dalam Drupal 6.

Templat simpul yang disederhanakan terlihat seperti ini:

<div>
  <h2><?php print $title; ?></h2>
  <div class="content">
    <?php print render($content); ?>
  </div>
</div>

Sedikit modifikasi akan menangani kebutuhan Anda:

<div>
  <?php print render($content['field_name_of_image']); ?>
  <h2><?php print $title; ?></h2>
  <div class="content">
    <?php print render($content); ?>
  </div>
</div>

Menggunakan render, Anda bisa menampilkan elemen. Ini lebih pintar daripada sekadar mencetak barang, karena Drupal akan melacak apa yang telah diberikan, untuk menghindari hal yang sama dicetak dua kali di tempat itu. Saat merender bidang di atas judul Anda berada juga menghapus untuk apa yang diberikan saat $content dirender.

51
googletorp

Display Suite juga cukup keren.

Display Suite memungkinkan Anda mengambil kendali penuh atas bagaimana konten Anda ditampilkan menggunakan antarmuka seret dan lepas. Atur node, tampilan, komentar, data pengguna, dll. Seperti yang Anda inginkan tanpa harus melalui puluhan file templat. Daftar tata letak yang telah ditentukan sebelumnya (khusus D7) tersedia untuk lebih banyak aktivitas seret dan lepas!

8
stevepurkiss

Lihatlah modul Title - http://drupal.org/project/title . Mungkin terbukti bermanfaat untuk skenario Anda. Saya menginstal/mengaktifkannya untuk beberapa alasan, mungkin mirip dengan milik Anda, dan sepertinya memberikan fleksibilitas cara menempatkan bidang judul.

Sejak itu saya menonaktifkannya (dan saya menggunakan Display Suite), jadi ingatan saya mungkin agak samar.

7
Greta

Ini adalah solusi peretasan dan saya yakin seseorang akan datang dengan sesuatu yang lebih elegan, tetapi jika Anda terjebak, dan tidak ada yang ...

Anda bisa menggunakan page.tpl.php untuk menghapus pencetakan $title sama sekali, dan tambahkan bidang khusus baru bernama Judul dengan nama mesin $ new_title atau sesuatu seperti itu. Kemudian pada edit node, sembunyikan kotak Judul asli, dan pada node Simpan gunakan Bidang Terkomputasi atau php khusus untuk menyalin $new_title hingga $title.

Setelah semua itu, tulis beberapa css untuk membuat $ new_title terlihat seperti judul halaman sebelumnya dan Anda harus dapat menempatkan bidang apa pun dalam urutan apa pun yang Anda suka, hanya dengan menyeret dan menjatuhkan di layar kelola bidang. Karena Anda menyalin $new_title hingga $title, judul halaman di bilah browser harus tetap berfungsi dan tidak ada yang mengeluh tentang judul node yang hilang.

Seperti yang saya katakan, ini adalah hack - tetapi itu akan berhasil. Beritahu saya jika Anda membutuhkan info lebih lanjut

4
Frederik

page.tpl.php (garland)

...
      <div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
          <?php print $breadcrumb; ?>
          <?php if ($mission): print '<div id="mission">'. $mission .'</div>'; endif; ?>

          /*
           * Print custom block or var
           */
          <?php if ($custom_block): print '<div id="custom-block" class="clear-block">'. $custom_block .'</div>'; endif; ?>

          <?php if ($tabs): print '<div id="tabs-wrapper" class="clear-block">'; endif; ?>
          <?php if ($title): print '<h2'. ($tabs ? ' class="with-tabs"' : '') .'>'. $title .'</h2>'; endif; ?>
          <?php if ($tabs): print '<ul class="tabs primary">'. $tabs .'</ul></div>'; endif; ?>
          <?php if ($tabs2): print '<ul class="tabs secondary">'. $tabs2 .'</ul>'; endif; ?>
          <?php if ($show_messages && $messages): print $messages; endif; ?>
          <?php print $help; ?>
          <div class="clear-block">
            <?php print $content ?>
          </div>
          <?php print $feed_icons ?>
          <div id="footer"><?php print $footer_message . $footer ?></div>
      </div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
...

template.php

/**
 * Override or insert variables into the page template.
 */
function phptemplate_preprocess_page(&$variables) {
  $node = $variables['node'];
  if($node->type == MY_NODE_TYPE) {
    $variables['custom_block'] = 'bla bla bla';
  }
}
3
dobeerman

Ini tidak berlaku untuk pertanyaan Teaser di postingan asli, tetapi untuk orang-orang yang menemukan ini dan hanya ingin mewujudkannya dalam tampilan penuh, inilah opsi bebas kode: tampilkan bidang dalam blok (menggunakan tampilan, misalnya) dan tempat yang memblokir di atas blok konten Anda tetapi di wilayah yang sama.

3
brad

Saya pikir Anda harus menggunakan fungsi preprocess di template.php Anda

/**
 * Override or insert variables into the page template.
 */
function THEMENAME_process_page(&$variables) {
  // look for $variables['page_title'] if i remember
}

Dan sebagai tambahan

/**
 * Override or insert variables into the node template.
 */
function THEMENAME_preprocess_node(&$variables) {
  //
}

buang variabel dan lakukan apa pun yang Anda inginkan. tambah/hapus/perbarui.

2
dobeerman

Saya menyelesaikan ini dengan solusi tanpa kode menggunakan Display Suite dan fitur ekstra "Region to Block". Saya paling suka solusi ini karena fleksibilitasnya.

Pada dasarnya, aktifkan bagian ekstra "Wilayah untuk Diblokir", aktifkan tampilan "Konten Fulltext" di Display Suite. (dengan asumsi Anda ingin menampilkan konten di atas judul dalam tampilan node penuh, Anda juga dapat menggunakannya untuk mode tampilan lainnya kecuali Default). Sekarang, di bagian "Kelola tampilan" dari "Konten Teks Lengkap", di bagian bawah layar, tab "Blok Wilayah" akan muncul. Masukkan nama blok baru di sana, simpan dan seret & letakkan bidang yang diinginkan ke blok ini. Terakhir, pindahkan blok yang baru dibuat di layar Blok di suatu tempat di atas judul simpul.

Anda dapat melihat video dari pendekatan yang sama di sini: http://www.youtube.com/watch?v=y4wyjxyhbNA , tentu saja Anda perlu menempatkan judul blok di atas (bukan ke bilah sisi kiri) pada akhirnya.

2
Mirsoft

Untuk templat zen, kode di bawah ini berfungsi untuk saya.

<?php
// this goes in template.php
// check if node type page and then add to $vars array
// declaring $vars['foo'] gives you a $foo variable to use in page.tpl.php

function YOURTHEMENAME_preprocess_page(&$vars, $hook) {
    if (isset($vars['node'])) :
        if($vars['node']->type == 'page'):       
            $node = node_load($vars['node']->nid);
            $output = field_view_field('node', $node, 'field_image', array('label' => 'hidden'));       
            $vars['my_image_field'] = $output;               
        endif;
    endif;
}
?>

Jadi akhirnya, Anda dapat dengan mudah mencetak bidang Anda di page.tpl.php;

<?php
if ($my_image_field):
   print render($my_image_field);
endif;
?>
1
user991554

Saya tahu Anda akan menggunakan beberapa tema untuk membangun dan sekarang mencoba menambahkan bidang di bagian atas judul.

Saran saya untuk semua pengembang membangun tema pada Drupal 7 akan digunakan: Omega theme + Konteks dan modul Delta. Ini memberikan dasar yang sangat kuat untuk tata letak Anda.

Dan fleksibilitas dalam mengatur Daerah, Blok dan Lapangan.

1
AnAnD

Anda dapat melakukannya dengan modul panel

0
houmem