質問: renderとnode.tpl.phpによって追加されたdivを削除する drupal 7のhtml5テンプレートを作成しようとしています。クリーンなコードに非常にこだわっています。htmlとcssを完全に制御したいと思っています。独自のカスタムテーマです。つまり、drupalとまったく同じように使用したいhtml5とcssのセットがあります。前処理関数全体の動作にあまりこだわっていません。page.tpl.phpファイルで 'print render($ page [' content '])'を使用すると、追加されます<div class="region region-content"> <div id="block-system-main" class="block block-system"> <div class="content"> そして、ノードに「print render($ content)」を追加すると、custom.tpl.phpが追加されます<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"> これらのdivは必要ありません。それらを取り除くにはどうすればよいですか?
回答: $ page ['content']内に表示されるdiv idとクラスは、region.tpl.php> block.tpl.php> node.tpl.php drupalコンテンツはこれらのテンプレートファイルを通過します、各ステップでいくつかのdivを追加します。 ステップ1 region.tpl.phpファイルには、次のコードが含まれています <?php if ($content): ?> <div class="<?php print $classes; ?>"> <?php print $content; ?> </div> <?php endif; ?> このファイルに変更を加えると、ページのすべての領域に影響します。コンテンツ領域のみを制御する場合は、regionという名前の新しいファイルを作成します。そのファイルにcontent.tpl.phpのみを貼り付けます。<?php if ($content): ?> <?php print $content; ?> <?php endif; ?> これにより、コンテンツ領域のみに対して作成されたdivが削除されます。 ステップ2 block.tpl.phpのコピーを作成し(block.tpl.phpに変更を加えると、すべてのブロックが影響を受けます)、block--content.tpl.phpという名前を付け、divを削除または変更します。 divがない場合、ファイルにはコンテンツを出力する次のコードが含まれます。<?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; ?> これにより、bock.tpl.phpによって作成されたdivが削除されます ステップ 次に、node.tpl.phpファイルを編集して、divを削除または変更します。 divがない場合、ファイルにはコンテンツを出力する次のコードが含まれます。 > "> <?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']); ?> これにより、すべてのdivとクラスが削除されます。これで、コンテンツを独自のdivでラップできます。うまくいくかどうか教えてください。