1. ホーム
  2. フォーラム
  3. カスタマイズに関する質問
  4. マルチサイト
  5. マルチサイトの時のヘッダ

マルチサイトの時のヘッダ

このトピックには8件の返信が含まれ、3人の参加者がいます。3 週間、 5 日前 rockpabro さんが最後の更新を行いました。

9件の投稿を表示中 - 1 - 9件目 (全9件中)
  • 投稿者
    投稿
  • #25679

    rockpabro
    参加者

    【お使いの Snow Monkey のバージョン】v7.3.0
    【お使いのブラウザ】Safari chrome

    マルチサイト化でこのテーマを利用いたしますが、3つのサイトのヘッダデザインをそれぞれ変えようと思います。

    例)template-parts/header/1row.php に、独自にDIVを足してデザインアレンジしたいのですが、ここを触っても、サイトの3つはすべて同じデザインになりますが、それぞれ内容を変えるにはどのようにしたらよいでしょうか?

    3つ分書き込んで、cssでdisplay:none, block で出し分ける以外になにか方法があるでしょうか?

     

    #25696

    キタジマ タカシ
    キーマスター

    それぞれのサイトでヘッダーのデザインを違うものにされたいのだと思いますが、それぞれでどれくらい違うものでしょうか? 一部の場合なら置換でちょちょっと、結構違うならそれぞれにテンプレートをつくるのが良いと思います。

    また、カスタマイズは、子テーマ・My Snow Monkey プラグインどちらを利用中(もしくは利用しようとしている)でしょうか? それぞれでやり方が若干異なりますので。

    #25717

    rockpabro
    参加者

    現在子テーマです。

    My Snow Monkey プラグインも入れています。

    サイトの違いは、各ヘッダのグローバルナビ以外に、リンクエリアを設けるというものです。(3サイトごとにリンク数が違う)

    #25761

    マルチサイトでのサイト毎の分岐方法は下記のサイトが参考になると思います。

    もし、子テーマでされる場合であれば
    template-parts/header/1row.phpの変更したい箇所に、それぞれの分岐処理を挟めば良いと思います。

    プラグインでされる場合であれば

    global $current_blog;
    $blog_id = $current_blog->blog_id;
    add_filter(
    	'snow_monkey_template_part_render',
    	function( $html, $slug, $name, $vars ) {
    		if ( $slug === 'template-parts/header/1row' ) {
    			ob_start();
    			\Framework\Helper::get_template_part( 'template-parts/header/1row', $name, $vars );
    			$html = ob_get_clean();
    			if ( 1 === $blog_id ) {
    				// 置換したいhtml内容
    			}
    		}
    		return $html;
    	},
    	10,
    	4
    );

    と言う感じで、こちらも分岐でそれぞれの置換をやる形でどうでしょうか?
    または分岐で読み込むテンプレートを変更するのも良いと思います。

    #25767

    キタジマ タカシ
    キーマスター

    @ケミさん
    グローバル変数を使うよりこちらのほうが良いかも(あと、$html は引数から渡ってくるので ob_start() はしなくて大丈夫だと思います)。

    add_filter(
    	'snow_monkey_template_part_render',
    	function( $html, $slug ) {
    		$blog_id = get_current_blog_id();
    		if ( 'template-parts/header/1row' === $slug ) {
    			if ( 1 === $blog_id ) {
    				// 置換
    				$html = str_replace( '...', '...', $html );
    			}
    		}
    		return $html;
    	},
    	10,
    	2
    );
    #25768

    キタジマ タカシ
    キーマスター

    @rockpabro さん
    テンプレートをそれぞれ作る方法はまたあとで書き込みますね。

    #25773

    rockpabro
    参加者

    これは、価値の高い欲しい情報です。ケミさん、キジマさんありがとうございます!

    #25777

    キタジマ タカシ
    キーマスター

    テンプレートをそれぞれつくる方法です。

    例えば、子テーマ/template-parts/my-header というディレクトリを作って、そこに my-header-1〜3.php をつくるとします。その上で、下記のコードを追加するとどうでしょう?

    add_filter(
    	'snow_monkey_get_template_part_args',
    	function( $args ) {
    		$blog_id = get_current_blog_id();
    
    		// ヘッダーレイアウトが1行のときに、各子サイトでテンプレートを差し替える
    		if ( 'template-parts/header/1row' === $args['slug'] ) {
    			if ( 1 === $blog_id ) {
    				$args['slug'] = 'template-parts/my-header/my-header-1.php';
    			}
    		}
    		return $args;
    	}
    );
    #26046

    rockpabro
    参加者

    ありがとうございます。

    まずやってみます。

9件の投稿を表示中 - 1 - 9件目 (全9件中)

このトピックに返信するにはログインが必要です。