Menghapus div yang ditambahkan oleh render dan node.tpl.php


15

Saya mencoba membuat templat HTML5 untuk Drupal 7, dan saya cukup khusus tentang kode bersih. Saya ingin kontrol penuh atas HTML dan CSS yang sebagian besar saya dapatkan menggunakan tema kustom saya sendiri. Dengan kata lain saya memiliki HTML5 dan CSS yang ingin saya gunakan persis seperti di Drupal. Saya tidak terlalu tahu tentang cara kerja seluruh fungsi pra-proses.

Ketika saya menggunakan 'print render ($ page [' content '])' di file page.tpl.php saya menambahkan

<div class="region region-content"> 
    <div id="block-system-main" class="block block-system"> 
        <div class="content">

Dan kemudian ketika saya menambahkan 'print render ($ content)' di node - custom.tpl.php ia menambahkan

<div class="field field-name-body field-type-text-with-summary field-label-hidden">
    <div class="field-items">
        <div class="field-item even" property="content:encoded">

Saya tidak ingin ada div ini. Bagaimana cara saya menyingkirkan mereka?


Saya dapat menggunakan $ node-> body [$ node-> language] [0] ['value']; untuk menampilkan apa yang saya inginkan di dalam page.tpl.php, tetapi kemudian saya kehilangan keuntungan karena dapat menggunakan halaman node.tpl.php khusus untuk setiap jenis konten. Ini berarti saya bisa menggunakan pernyataan kondisional di dalam page.tpl.php untuk menambahkan kelas yang berbeda untuk setiap jenis konten untuk mendapatkan apa yang saya inginkan, tetapi itu tampaknya solusi yang berantakan.
Jack McKenzie

Jawaban:


16

Id div dan kelas yang Anda lihat di dalam $ page ['content'] berasal dari region.tpl.php> block.tpl.php> node.tpl.php Konten Drupal melewati file template ini, setiap langkah menambahkan beberapa div.

  • Langkah pertama

file region.tpl.php berisi kode sebagai berikut

       <?php if ($content): ?>
  <div class="<?php print $classes; ?>">
    <?php print $content; ?>
  </div>
<?php endif; ?>

sekarang jika Anda membuat perubahan pada file ini, itu akan mempengaruhi semua wilayah halaman Anda. Jika Anda hanya ingin mengontrol area konten, buat nama file baru untuk wilayah itu - content.tpl.php hanya di dalam tempel file tersebut

<?php if ($content): ?>

    <?php print $content; ?>

<?php endif; ?>

Ini akan menghilangkan div yang dibuat hanya untuk wilayah konten.

  • Langkah Dua

Buat salinan (jika kita membuat perubahan di block.tpl.php semua blok akan terpengaruh) dari block.tpl.php dan beri nama itu blok - content.tpl.php dan hapus atau ubah div. Tanpa divs file akan berisi kode berikut untuk menampilkan konten.

<?php print render($title_prefix); ?>
    <?php if ($block->subject): ?>
      <h2 class="block-title"<?php print $title_attributes; ?>><?php print $block->subject ?></h2>
    <?php endif;?>
      <?php print render($title_suffix); ?>
      <?php print $content; ?>

Ini akan menghilangkan div yang dibuat oleh bock.tpl.php

  • Langkah ketiga

Sekarang edit file node.tpl.php untuk menghapus atau mengubah divs. Tanpa divs file akan berisi kode berikut untuk menampilkan konten. > ">

    <?php print $user_picture; ?>

    <?php if ($display_submitted): ?>
      <span class="submitted"><?php print $date; ?><?php print $name; ?></span>
    <?php endif; ?>


        <?php
          // We hide the comments and links now so that we can render them later.
        hide($content['comments']);
        hide($content['links']);
        print render($content);
       ?>


    <?php if (!empty($content['links']['terms'])): ?>
      <?php print render($content['links']['terms']); ?>
    <?php endif;?>

    <?php if (!empty($content['links'])): ?>
        <?php print render($content['links']); ?>
      <?php endif; ?>




<?php print render($content['comments']); ?>

Ini akan menghilangkan semua div dan kelas. Sekarang Anda dapat membungkus konten dengan div Anda sendiri. Tolong beri tahu saya jika itu berhasil untuk Anda.


Hai dkiscool, Terima kasih atas jawaban Anda yang dijelaskan dengan baik. Sejauh ini saya sudah setengah jalan ke sana. Menggunakan perubahan block.tpl.php dan region.tpl.php memungkinkan saya untuk menyingkirkan tiga div pertama (mis. Set teratas dalam pertanyaan saya). Namun file node.tpl.php saya sekarang hanya berisi satu baris: print render($content);tetapi tiga div kedua tetap. Saya tahu ini mengambil file simpul kanan seperti ketika saya menambahkan beberapa teks ke dalam file itu datang dengan baik.
Jack McKenzie

4
Saya pikir saya sudah menyelesaikannya, setelah Anda mengarahkan saya ke arah yang benar. Saya menambahkan file field.tpl.php yang hanya berisi satu baris foreach ($items as $delta => $item) { print render($item); }. Orang lain mungkin ingin memulai dengan field.tpl.php penuh namun karena saya mengeluarkan beberapa baris yang mungkin penting tergantung pada apa yang Anda coba lakukan. Tiga div terakhir sedang ditambahkan oleh file ini - walaupun saya sedikit bingung karena dokumentasi mengatakan bahwa file ini tidak digunakan dan hanya disediakan untuk titik awal kustomisasi.
Jack McKenzie

-2

Yang paling cocok untuk saya adalah: strip_tags(render($var));


Ini bukan jalan yang harus ditempuh. Gunakan fungsi tema atau fungsi preproses.
gagarine
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.