検索結果を別のテンプレートファイルに返したい

11件の投稿を表示中 - 1 - 11件目 (全11件中)
  • 投稿者
    投稿
  • #6200
    M T
    閲覧者
    5

    たびたびの質問で申し訳ございません。
    サイトで複数の絞り検索ができるfe-advanced-searchというプラグインを使用し、1つのカスタム投稿タイプの検索のみに使用しています。
    その検索結果を、通常の検索とは違う内容にしたいため、専用のテンプレートに返したいのですが、プラグインのマニュアルでは、以下の説明があります。
    ▼以下———————————————————————-
    search.phpの中身を下記のように記述し【分岐専用】のファイルとします。それぞれの検索結果用のテンプレートを別途用意して読み込みます。各テンプレートの内容は通常のsearch.phpに準じた内容を記述してください。
    <?php
    if( $_GET[‘fe_form_no’] == ‘0’) // フォームID=0の場合
    get_template_part( ‘search’, ‘form0’ ); // search-form0.php というテンプレートを読み込みます
    else if( $_GET[‘fe_form_no’] == ‘1’) // フォームID=1の場合
    get_template_part( ‘search’, ‘form1’ ); // search-form1.php というテンプレートを読み込みます
    else
    get_template_part( ‘archive’ ); // archive.php を読み込みます
    ?>
    ▲以上—————————————————–
    テンプレートファイルは、view/archive.php当たりを使うのかなと思いますが、分岐の内容をどのファイルに、どのように入れたらよいか分かりません。
    もし、それが可能でしたら教えていただけませんでしょうか。

    0
    #6242
    キタジマ タカシ
    キーマスター
    286

    いろいろやり方はあると思いますが、Snow Monkey のテンプレート階層の流儀に従うなら下記のような感じになると思います。

    /子テーマ/search.php

    layout( get_theme_mod( 'archive-page-layout' ) );
    if ( have_posts() ) {
    	if ( $_GET['fe_form_no'] == '0' ) {
    		// /子テーマ/templates/view/search-form0.php をビューファイルとして読み込み
    		get_template_part( 'search', 'form0' );
    	} else if( $_GET['fe_form_no'] == '1' ) {
    		// /子テーマ/templates/view/search-form1.php をビューファイルとして読み込み
    		get_template_part( 'search', 'form1' );
    	} else {
    		// デフォルトのビューファイルを読み込み
    		$controller->render( 'archive', 'search' );
    	}
    } else {
    	$controller->render( 'no-match' );
    }
    0
    #6262
    M T
    閲覧者
    5

    ありがとうございます。ただ、実際に検索してみると、通常検索、プラグイン検索ともにsearch.phpの生コードが表示されてしまいます。

    /子テーマ/search.phpに、検索フォームが1つだけのため

    } else if( $_GET[‘fe_form_no’] == ‘1’ ) {
    get_template_part( ‘search’, ‘form1’ ); を除いた上記のコードを記述、

    /子テーマ/templates/view/search-form0.php を設置

    (search-form0.phpはtemplates/view/archive.phpをコピーして名前変更)しました。

     

     

    0
    #6267
    キタジマ タカシ
    キーマスター
    286

    あれなんであろう…

    上記の search.php のコード、< ?php となってしまっていましたが正しくは <?php なのでそれかもしれません!変更してみてください!

    0
    #6273
    M T
    閲覧者
    5

    ※うまく送信できないので、一部記号を変えてあります。
    <?phpに変更で、通常の検索フォームは読み込むようになりましたが、検索フォームプラグインを使った時は、何も表示されません。(子テーマのsearch.phpを外してやってみると、通常の検索結果画面が表示されます。)

    search-form0.phpは、とりあえずtemplates/view/archive.phpの内容をそのまま使っていますが、それでよいのでしょうか。

    search.phpは前回送っていただいたものから以下を除いたものです。

    } else if( $_GET[‘fe_form_no’] == ‘1’ ) {
    // /子テーマ/templates/view/search-form1.php をビューファイルとして読み込み
    get_template_part( ‘search’, ‘form1’ );

     

    0
    #6275
    キタジマ タカシ
    キーマスター
    286

    通常の検索フォームは読み込むようになりましたが、検索フォームプラグインを使った時は、何も表示されません

    あ! 読み込み部分が間違っていたかもしれません。下記のコードに差し替えてみてください。

    <?php
    $controller = new Mimizuku_Controller();
    $controller->layout( get_theme_mod( 'archive-page-layout' ) );
    if ( have_posts() ) {
    	if ( $_GET['fe_form_no'] == '0' ) {
    		// /子テーマ/templates/view/search-form0.php をビューファイルとして読み込み
    		$controller->render( 'search-form0' );
    	} else {
    		// デフォルトのビューファイルを読み込み
    		$controller->render( 'archive', 'search' );
    	}
    } else {
    	$controller->render( 'no-match' );
    }

    search-form0.phpは、とりあえずtemplates/view/archive.phpの内容をそのまま使っていますが、それでよいのでしょうか。

    この分岐コードは「検索内容によってページのデザインを変える」ために読むテンプレートを切り替える、というものだと思いますので、ご希望のデザインなどに応じてカスタマイズが必要なのではないでしょうか?

    0
    #6282
    M T
    閲覧者
    5

    ありがとうございました。読み込みがうまくいきました!

    この独自のテンプレートsearch-form0.phpだけでは、多分内容を変えられないので、テンプレート内<?php get_template_part( ‘template-parts/loop/entry-summary’, get_post_type() ); ?>に記載のある、entry-summary.phpに代わる別のテンプレートを作成して、内容やデザインをカスタマイズするという理解でよろしいでしょうか。

    検索結果から、アイキャッチ画像や投稿日などを消したかったので、実際にentry-summary.phpを別のファイル名にして子テーマに置いて、該当部分(以下)を外してみたのですが、消えません。何か他のファイルが優先されているのでしょうか。
    追加したテキストなどは読み込んでいるので、ファイルは読み込んでいると思います。
    ファイル構造が十分に理解できておらず、質問が長くなってすみません。

    消したのは以下です。
    <div class=”c-entry-summary__meta”>
    <ul class=”c-meta”>
    <li class=”c-meta__item c-meta__item–author”>
    <?php echo get_avatar( $post->post_author ); ?><?php echo esc_html( get_the_author() ); ?>

    <li class=”c-meta__item”>
    <?php the_time( get_option( ‘date_format’ ) ); ?>

    </div>

    0
    #6291
    M T
    閲覧者
    5

    すみません、単純なミスでした。アイキャッチ画像は違う部分でした。
    希望の通りにできました。ありがとうございました。

    今回は、search.phpによる検索結果の別のテンプレートへの返しを教えていただき、templates/view/archive.phpを流用したファイルでカスタマイズしようとしましたが、詳細のhtml内容は、template-parts/loop/entry-summaryから読み込んでいるようなので、そのファイルを流用することになりそうです。ファイルを細分化しているのですね。勉強になりました。

    0
    #6309
    キタジマ タカシ
    キーマスター
    286

    なるほどです。

    entry-summary については、template-parts/loop/entry-summary-投稿タイプ.php のファイルがあればそれを読み込み、なければフォールバックとして template-parts/loop/entry-summary.php が読み込まれる、という仕組みになっています。

    なので、まずは子テーマに template-parts/loop/entry-summary-投稿タイプ.php をつくり、snow-monkey/template-parts/loop/entry-summary-post.php の中身をコピペして必要に応じて改変する、という流れがやりやすいかもしれません。

    0
    #6310
    M T
    閲覧者
    5

    ありがとうございました。
    最初に作ったsearch-form0.phpと、template-parts/loop/entry-summary-投稿タイプ.php
    の2つを改変することで、カスタマイズができそうです。
    ファイル構造は最初戸惑いますが、流れが分かると使いやすいかもしれませんね。

    0
    #6320
    キタジマ タカシ
    キーマスター
    286

    ファイル構造は最初戸惑いますが、流れが分かると使いやすいかもしれませんね。

    そうであると良いなと願っています…! 以前にどういう考えていまの構成にしているのか記事を書いたことがあるのでご参考まで。

    ひとまず大丈夫そうということで、トピック閉じますね。

    0
11件の投稿を表示中 - 1 - 11件目 (全11件中)
  • トピック「検索結果を別のテンプレートファイルに返したい」には新しい返信をつけることはできません。