サポート » テーマ » 子テーマで Sidebar Template の追加

  • 解決済 BB7

    (@bb7)


    Twenty Eleven を元に子テーマを作成しています。

    サイドバーテンプレートを新しく追加したいのですがどうもうまくいきません。
    構造を理解していないためちょっとつまずいています。

    やりたいことは、子テーマに新しいSidebar Templateを作成し、
    特定のサイドバーにだけ、カレンダーウィジェットを表示させるということです。
    直接 <?php get_calendar(); ?> を呼び出して表示させることも可能なのは承知していますが、
    今回「営業日カレンダー ウィジェット」というウィジェットを利用したいのです。

    自分でやってみた手順は

    1: 親テーマから「sidebar-page.php」「sidebar.php」の2つのファイルを子テーマにコピー
    2: 「sidebar-page.php」のファイル名を「sidebar-page2.php」に変更
    3: テンプレートネームを「Template Name: Sidebar Template 2」に変更
    4: 「sidebar.php」を「sidebar2.php」に変更
    5: 「sidebar-page2.php」の25行目を<?php get_sidebar(2); ?>に変更
    6: 親テーマfunctions.phpの中にあるregister_sidebarに新しく「Cal-Sidebar」を作成しidをsidebar-6とする。
    7: 「sidebar-page2.php」の16行目を<?php if ( ! dynamic_sidebar( ‘sidebar-6’ ) ) : ?>に変更

    以上のことをしてからダッシュボードに入ると
    ウィジェットの管理画面に新しく「Cal-Sidebar」が追加され
    カレンダーウェジェットを追加でしました。

    が、

    サイドバーは表示されてカレンダーも追加されているのですが、
    レイアウトがおかしいのです。
    メインコンテンツがシングルページ用にセンタリングされていて、
    その後ろに(メインコンテンツに隠れるように)サイドバーが表示されてしまいます。

    上記設定以外で何かし忘れていることがありましたら教えていただけないでしょうか?

    あと、親テーマにあるfunctions.phpのウィジェット設定に
    以下を追加して「Cal-Sidebar」というエリアを表示しているのですが
    このウィジェットの設定変更は子テーマのみでは不可能なのでしょうか?
    出来れば親テーマは変更せず子テーマだけで完結したいので。

    register_sidebar( array(
    		'name' => __( 'Cal-Sidebar', 'twentyeleven' ),
    		'id' => 'sidebar-6',
    		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
    		'after_widget' => "</aside>",
    		'before_title' => '<h3 class="widget-title">',
    		'after_title' => '</h3>',
    	) );
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    BB7さん、こんにちは。

    サイドバーを表示する場合には、body タグに singular という classの出力を停止させれば実現できます。
    これは、Twenty Eleven の functions.phpに記述されている twentyeleven_body_classes 関数で追加されるようになっています。

    function twentyeleven_body_classes( $classes ) {
    
    	if ( ! is_multi_author() ) {
    		$classes[] = 'single-author';
    	}
    
    	if ( is_singular() && ! is_home() && ! is_page_template( 'showcase.php' ) && ! is_page_template( 'sidebar-page.php' ) )
    		$classes[] = 'singular';
    
    	return $classes;
    }
    add_filter( 'body_class', 'twentyeleven_body_classes' );

    子テーマで sidebar-page2.php をサイドバー有りの表示にするには、下記を参考に条件分岐を is_page_template( 'sidebar-page2.php' )にしてあげれば良いかと思います。

    TwentyElevenの投稿/固定ページを2カラムに! functions.phpのコードでサイドバーを出す!

    jim912 さん
    ありがとうございます。

    jim912 さんの説明とリンク先の西川さんの記事でようやく理解できました。
    教えてくださったコードでも上手く動作したのですが、
    今回親テーマをなるべく触りたくなかったので、
    リンク先で紹介されていたOdysseyさんが紹介されていた
    Twenty Eleven Theme Extensions を使うことにしました。

    有益な情報ありがとうございます。

    Odysseyさんのサイトはチェックしているつもりでしたが
    見過ごしてました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「子テーマで Sidebar Template の追加」には新たに返信することはできません。