web-dev-qa-db-fra.com

Suppression des divs ajoutés par render et node.tpl.php

J'essaie de construire un modèle HTML5 pour Drupal 7, et je suis assez particulier sur le code propre. Je veux un contrôle total sur le HTML et le CSS qui pour la plupart j'obtiens en utilisant mon propre thème personnalisé. En d'autres termes, j'ai un ensemble HTML5 et CSS que je veux utiliser exactement comme dans Drupal. Je ne suis pas trop informé sur le fonctionnement de la fonction de pré-processus.

Lorsque j'utilise 'print render ($ page [' content '])' dans mon fichier page.tpl.php, il ajoute

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

Et puis quand j'ajoute 'print render ($ content)' dans le nœud - custom.tpl.php il ajoute

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

Je ne veux aucun de ces divs. Comment puis-je me débarrasser d'eux?

15
Jack McKenzie

Les identifiants et les classes div que vous voyez dans $ page ['content'] proviennent de region.tpl.php> block.tpl.php> node.tpl.php Drupal passe par ces fichiers de modèle , chaque étape ajoute des divs.

  • Première étape

le fichier region.tpl.php contient le code comme suit

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

maintenant, si vous apportez des modifications à ce fichier, cela affectera toutes les régions de votre page. Si vous souhaitez contrôler uniquement la zone de contenu, créez un nouveau nom de fichier it region - content.tpl.php dans ce fichier uniquement

<?php if ($content): ?>

    <?php print $content; ?>

<?php endif; ?>

Cela supprimera les div créés uniquement pour la région de contenu.

  • Deuxième étape

Faites une copie (si nous apportons des modifications dans block.tpl.php tous les blocs seront effectués) de block.tpl.php et nommez-le block - content.tpl.php et supprimez ou modifiez les divs. Sans les divs, le fichier contiendra le code suivant pour sortir le contenu.

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

Cela se débarrassera des div créés par bock.tpl.php

  • Troisième étape

Modifiez maintenant le fichier node.tpl.php pour supprimer ou modifier les divs. Sans les divs, le fichier contiendra le code suivant pour sortir le contenu. > ">

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

Cela supprimera tous les div et classes. Vous pouvez maintenant envelopper le contenu avec vos propres divs. Veuillez me faire savoir si cela fonctionne pour vous.

17
15dk51