Skip to content

[サイト内検索] 検索対象が固定記事の場合、検索結果にフレームのアンカーを追加する/検索結果0件のときにメッセージを表示する#2387

Open
akagane99 wants to merge 2 commits intoopensource-workshop:masterfrom
akagane99:connect-cms-ideas/issues/188

Conversation

@akagane99
Copy link
Contributor

@akagane99 akagane99 commented Mar 18, 2026

概要

前述の対応です。

(補足)検索対象が固定記事の場合、検索結果にフレームのアンカーを追加する

検索結果表示には実質2パターンありました(⓵show_page_frame_post ②show_page ③それ以外)
※ ③は想定外パターンで入らない。

固定記事のみ②で、他は⓵でした。

resources/views/plugins/user/searchs/default/searchs_result.blade.php

            {{-- タイトル --}}
            @if($link_pattern[$searchs_result->plugin_name] == 'show_page_frame_post')
            <a href="{{url('/')}}{{$link_base[$searchs_result->plugin_name]}}/{{$searchs_result->page_id}}/{{$searchs_result->frame_id}}/{{$searchs_result->post_id}}#frame-{{$searchs_result->frame_id}}">
            @elseif($link_pattern[$searchs_result->plugin_name] == 'show_page')
            <a href="{{url('/')}}{{$searchs_result->permanent_link}}#frame-{{$searchs_result->frame_id}}">
            @else
            {{-- 上記以外は想定していない為、取り敢えず permanent_link をリンク先とする --}}
            <a href="{{url('/')}}{{$searchs_result->permanent_link}}">
            @endif

固定記事の検索処理で $searchs_result->frame_id をセットしていましたので、今回の対応を入れました。

app/Plugins/User/Contents/ContentsPlugin.php

    /**
     *  検索用メソッド
     */
    public static function getSearchArgs($search_keyword, $page_ids = null)
    {
        $query = DB::table('contents')
                   ->select(
                       'contents.id                 as post_id',
                       'frames.id                   as frame_id',        // ←ココ
                       'frames.page_id              as page_id',
                       'pages.permanent_link        as permanent_link',
                       'frames.frame_title          as post_title',
                       DB::raw('0 as important'),
                       'contents.created_at         as posted_at',
                       'contents.created_name       as posted_name',
                       DB::raw('null as classname'),
                       DB::raw('null as categories_id'),
                       DB::raw('null as category'),
                       DB::raw('"contents" as plugin_name'),
                       'contents.content_text as body'
                   )
                   ->join('frames', 'frames.bucket_id', '=', 'contents.bucket_id')
                   ->join('pages', 'pages.id', '=', 'frames.page_id')
                   ->whereIn('pages.id', $page_ids)
                   ->where('status', StatusType::active)
                   ->where(function ($plugin_query) use ($search_keyword) {
                       $plugin_query->where('contents.content_text', 'like', '%'.$search_keyword.'%')
                                    ->orWhere('frames.frame_title', 'like', '%'.$search_keyword.'%');
                   })
                   ->whereNull('contents.deleted_at');

        $return[] = $query;
        $return[] = 'show_page';
        $return[] = '/page';

        return $return;
    }

修正後画面

検索対象が固定記事の場合、検索結果にフレームのアンカーを追加

image

↓↓↓

image

検索結果0件メッセージ

image

レビュー完了希望日

急ぎません

関連Pull requests/Issues

概要に記載しました。

参考

なし

DB変更の有無

なし

チェックリスト

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant