web-dev-qa-db-ja.com

Zenサブテーマにサイドバーを追加するにはどうすればよいですか?

固定列のあるzenベースのテーマにサイドバーを追加したい。
テーマ情報に追加して、page.tpl.phpファイルに印刷しましたが、CSSファイルを構成して正しく表示する方法がわかりません。 Zenのように、ブロックのない空の領域がある場合に、コンテンツ領域を拡張して使用可能なスペースを埋める方法がわかりません。

私のテーマには4つの列があります。

  • 左サイドバー1(130ピクセル)
  • 左サイドバー2(255ピクセル)
  • コンテンツ(509ピクセル)
  • 右サイドバー(130ピクセル)

全幅は1024ピクセルになります。

どうやってやるの?

4

これは、template.phpテンプレートの前処理関数で実行できます。私はあなたに一つの例を書きます、そしてあなたはあなたのニーズにそれを適応させることができます。

1.At Yourtemplate.phpテンプレート。

function yourthemename_preprocess_page(&$vars, $hook) {
  $page = $vars['page'];
// if only left sidebar is present
  if ($page['left_sidebar'] && !$page['left_sidebar2'] && !$page['right_sidebar']) {
    $vars['class_content'] = t('yourclassforcontentwithsidebar');
    $vars['class_left_sidebar'] = t('yourclassforleftsidebar');
 } 
// if no sidebar is present
  if (!$page['sidebar_left'] && !$page['left_sidebar2'] && !$page['right_sidebar']) {
    $vars['class_content'] = t('yourclassforfullwidhtcontent');
 }
}

あなたはここでより多くのバリエーションを見つけることができます: php論理演算子

2.page.tpl.phpで、幅を柔軟にしたいすべての領域に、左サイドバーなどの追加のクラスを配置します。

   <?php if ($page['left_sidebar']): ?>
      <div id="left_sidebar" class="sidebar <?php print ($class_left_sidebar);?>" >
        <?php print render($page['left_sidebar']); ?>
      </div>
    <?php endif; ?>
1
user1513