Render ve node.tpl.php tarafından eklenen div'ları kaldırma


15

Drupal 7 için bir HTML5 şablonu oluşturmaya çalışıyorum ve temiz kod konusunda oldukça titizim. Çoğunlukla kendi özel temamı kullandığım HTML ve CSS üzerinde tam kontrol istiyorum. Başka bir deyişle, Drupal'da olduğu gibi kullanmak istediğim bir HTML5 ve CSS setim var. Tüm süreç öncesi işlev olayının nasıl çalıştığı konusunda fazla bilgim yok.

Page.tpl.php dosyamda 'print render ($ page [' content '])' kullandığımda

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

Ve sonra - custom.tpl.php - düğümüne 'print render ($ content)' eklediğimde

<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">

Bu div'lerin hiçbirini istemiyorum. Onlardan nasıl kurtulurum?


$ Node-> body [$ node-> language] [0] ['değer'] kullanabilirim; sayfa.tpl.php içinde istediğimi görüntülemek için, ama sonra her içerik türü için özel node.tpl.php sayfaları kullanabilme avantajını kaybederim. Bu, istediğim şeyi elde etmek için her içerik türü için farklı sınıflar eklemek üzere page.tpl.php içindeki koşullu ifadeleri kullanabileceğim anlamına geliyor, ancak bu dağınık bir çözüm gibi görünüyor.
Jack McKenzie

Yanıtlar:


17

$ Page ['content'] içinde gördüğünüz div kimlikleri ve sınıfları region.tpl.php> block.tpl.php> node.tpl.php Drupal içeriği bu şablon dosyalarından geçer, her adım bazı div'ler ekler.

  • Adım bir

region.tpl.php dosyası kodu aşağıdaki gibi içerir

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

şimdi bu dosyada değişiklik yaparsanız sayfanızın tüm bölgelerini etkileyecektir. Yalnızca içerik alanını denetlemek istiyorsanız, bölge olarak yeni bir dosya adı oluşturun - yalnızca o dosya hamurunda content.tpl.php

<?php if ($content): ?>

    <?php print $content; ?>

<?php endif; ?>

Bu, yalnızca içerik bölgesi için oluşturulan div'den kurtulur.

  • İkinci adım

Block.tpl.php dosyasının bir kopyasını oluşturun (block.tpl.php dosyasında değişiklik yaparsak tüm bloklar etkilenir) ve block - content.tpl.php olarak adlandırın ve div'ları kaldırın veya değiştirin. Divs olmadan dosya içeriği çıkarmak için aşağıdaki kodu içerecektir.

<?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; ?>

Bu, bock.tpl.php tarafından oluşturulan div'den kurtulacak

  • Adım üç

Şimdi divleri kaldırmak veya değiştirmek için node.tpl.php dosyasını düzenleyin. Divs olmadan dosya içeriği çıkarmak için aşağıdaki kodu içerecektir. > ">

    <?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']); ?>

Bu tüm div ve sınıflardan kurtulacak. Artık içeriği kendi div'lerinizle sarabilirsiniz. Lütfen bunun sizin için uygun olup olmadığını bize bildirin.


Merhaba dkiscool, İyi açıkladığınız cevap için teşekkürler. Şimdiye kadar orada yarı yoldayım. Block.tpl.php ve region.tpl.php değişikliklerini kullanmak, ilk üç div'den (yani sorumun üst kümesinden) kurtulmamı sağladı. Ancak node.tpl.php dosyam artık yalnızca bir satır içeriyor: print render($content);ancak ikinci üç div kaldı. Ben dosyaya bazı metin eklemek gibi doğru düğüm dosyası toplama biliyorum iyi geliyor.
Jack McKenzie

4
Sanırım beni doğru yönde göstererek senden sonra çözdüm. Sadece bir satırı içeren bir field.tpl.php dosyası ekledim foreach ($items as $delta => $item) { print render($item); }. Ancak başkaları tam bir field.tpl.php ile başlamak isteyebilir, çünkü ne yapmaya çalıştığınıza bağlı olarak önemli olabilecek birkaç satır çıkardım. Son üç div, bu dosya tarafından ekleniyordu - belgelerin bu dosyanın kullanılmadığını ve yalnızca bir özelleştirme başlangıç ​​noktası için sağlandığını söylediği için biraz kafam karıştı.
Jack McKenzie

-2

Benim için mükemmel olan şey: strip_tags(render($var));


Bu yol değil. Tema işlevini veya önişleme işlevini kullanın.
Gagarine
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.