3

これが私の現在のセットアップです。

次の地域で新しいカスタム テーマを作成しました。

regions[header] = Header
regions[content] = Content
regions[footer] = Footer

page.tpl.php

    <div id="Header">
        <div class="row">
            <div class="span12" style="text-align:center;padding-top:20px;">
                <div><a href="/"><img src="logo.png" width="150" height="150" alt="KT Logo"></a></div>
            </div>
        </div>

        <div class="row">&nbsp;</div>
    </div><!-- /Header -->

    <div id="Navigation">
        <div class="row" style="text-align:center;">
            <div class="span12" style="text-align:center;">
                <?php print render($page['header']); ?>
                <hr class="style-two">
            </div>
        </div>
    </div><!-- /Navigation -->

    <div id="Content">

        <div class="row">&nbsp;</div>

        <div class="row">
            <div class="span8 offset1">
                <h1><?php print $title; ?></h1>
            </div>
        </div>

        <div class="row">&nbsp;</div>

        <div class="row">
            <div class="span10 offset1">
                <?php print render($page['content']) ?>
            </div>
        </div>

        <div class="row">&nbsp;</div>
    </div><!-- /Content -->

    <footer>
        <div class="row">
            <div class="span12">
                <img src="separator.png" alt="separator">
                <?php print render($page['footer']); ?>
            </div>
        </div>
        <div class="row">&nbsp;</div>
    </footer>

</div><!-- /container -->

これはすべてうまく機能し、いくつかの基本的なページをうまく作成しました。問題は、ページに 2 つのブロック (左側にメイン コンテンツ、右側にサイドバー) を持つカスタムの「コンテンツ タイプ」が必要な場合に発生します。今、私は地域がどのように機能するかを完全には理解していません。

sidebar_second 効果のようなものが欲しいのですが、幅にどのように設定されるかわかりません。これが私の地域のスクリーンショットです。http://goo.gl/XFVnl

サイドバー領域を含めることができるように、コンテンツ領域の表示方法を変更する必要があると思いますか?

助けてくれてありがとう

4

2 に答える 2

1

最初のステップは、sidebarすべてのページに表示されなくても、他のリージョンと一緒に .module ファイルでリージョンを宣言することだと思います。

ページテンプレートで確認できます(疑似コード)

if (isset($page['sidebar'])) {
   <div sidebar float left theme this how you want>
     print render($page['sidebar']);
   </div>
}

ブロックを作成するときに、ブロックが表示される特定のパス、またはブロックが表示される特定のコンテンツ タイプを指定できるようになりました。上記のコードは、ページのサイドバーにブロックがあるかどうかを確認し、それに応じてレンダリングします。

drupal スタック エクスチェンジに投稿すると、回答が得られる可能性が高くなります。 https://drupal.stackexchange.com/

于 2012-06-09T19:02:25.740 に答える
1

通常、コンテンツ タイプ固有のテンプレートは node.tpl.php ファイルであり、ページ テンプレートは page.tpl.php ファイルです。

node.tpl.php を使用している場合、page.tpl.php ファイルはすでに含まれています。

まず、すべてのリージョンをテーマの .info ファイルに追加します。これは、ブロック管理ページで利用できるリージョンに直接影響します。(.info ファイルで) 定義したすべての領域をすべての page.tpl.php ファイルに表示する必要はありません。

page.tpl.php ファイルには 3 つの領域があるため、そのままにしておくと引き続き機能します。しかし、特定のノード タイプの page.tpl.php をオーバーライドするには、それらをテーマの template.php ファイルに設定する必要があります。この page.tpl.php ファイルを使用するよう Drupal に「依頼」するだけで、ノード タイプは「ページ」です (たとえば)。

これを template.php ファイルに追加します。Drupal は、ノード タイプ (マシン名) が「book」の場合、代替の page.tpl.php ファイルを page--node-book.tpl.php ファイルで検索しません。

<?php
function themename_preprocess_page(&$variables) {
  if (!empty($variables['node'])) {
    $variables['theme_hook_suggestions'][] = 'page__node_' . $variables['node']->type;
  }
}
?>

これで、page.tpl.php ファイルを page--node-[type].tpl.php にコピーして、そこで変更を加えることができます。このファイルに入力した内容は、そのノード タイプのページ テンプレートに使用されます。(注: "page" と "node" の間の 2 つのハイフン、および "node" と "[type]" の間の 1 つのハイフン) 変更が表示されない場合は、忘れずにキャッシュをクリアしてください。

于 2012-06-09T19:03:02.227 に答える