サイト内検索で特定のブログのみを指定したい

Garyuten > サイト内検索で特定のブログのみを指定したい @ 2017/2/8 17:13
■ BaserCMSのバージョン:3.0.2 +α (カスタマイズされてる環境)
■ レンタルサーバー名: 自社サーバー
■ スマートURLの利用: [ON]
■ 設置フォルダ: [ドキュメントルート]
■ 利用しているデータベース: [MySQL]
■ PHPスキル(自己評価): [ C ]


件名の通りです。

過去の記事でそれらしいものもありましたが、解決できなかったので質問させていただきます。
http://forum.basercms.net/modules/newbb/viewtopic.php?topic_id=1559&forum=3#forumpost5854

やりたいことは特定のブログ記事だけでの検索結果を表示させたいことです。
baserCMSのサイト内検索結果は以下のgetクエリのURLになることはわかっています。

/contents/search/num:10?c={カテゴリ}&q={検索キーワード}


c={カテゴリ}は固定ページのみでしか絞り込みの対象にならないので、
特定のブログIDやurlを指定して検索できる方法がないか、調べています。
getクエリにパラーメーターを付けるだけでいいのか、Helperをいじらないといけないのか、そこからわかっていません…


ご存じの方がいましたらご教授お願いしますm(__)m
Garyuten > Re: サイト内検索で特定のブログのみを指定したい @ 2017/2/9 1:08
なんとか自己解決しました。
動作確認したバージョンは3.0.6.1です。
おそらく他の3系でも動作するかと思います。


考え方としては、生成されるurlで判別できるようにします。

▼下準備:以下のファイルを複製

/lib/Baser/Controller/ContentsController.php 
↓
/app/Controller/ContentsController.php


▼修正
/app/Controller/ContentsController.php の176行目辺りを修正


foreach ($query as $key => $value) {
	$conditions['and'][$key]['or'][] = array('Content.title LIKE' => "%{$value}%");
	$conditions['and'][$key]['or'][] = array('Content.detail LIKE' => "%{$value}%");
}

↓修正

foreach ($query as $key => $value) {
	$conditions['and'][$key]['or'][] = array('Content.title LIKE' => "%{$value}%");
	$conditions['and'][$key]['or'][] = array('Content.detail LIKE' => "%{$value}%");
	if ( isset($this->request->query['url']) && $this->request->query['url'] ) {
		$conditions['and'][$key]['and'][] = array('Content.url LIKE' => $this->request->query['url'] . "%");
	}
}



▼テーマファイル

サイト内検索フォームの中に以下のhidden値を埋め込みます。

例)対象ブログのurlが "/testblog/" の場合
<input type="hidden" name="url" value="/testblog/archives/">



リンクで検索結果に飛ばす場合はgetクエリでurlを生成しても大丈夫です。

/contents/search/num:10?url={対象URL}&q={検索文字列}


例)ブログ[testblog]内の "baserCMS"で検索する場合のURL
/contents/search/num:10?url=%2Ftestblog%2Farchives%2F&q=baserCMS



誰かの役に立てれば幸いです。

もっと柔軟にサイト内検索できるようになるといいですね。
ブログ指定とか、ブログのタグやカテゴリ指定などなど。
nana123 > Re: サイト内検索で特定のブログのみを指定したい @ 2017/8/23 11:39
Please take me i dont understand.










m8bet
ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
23 人のユーザが現在オンラインです。 (21 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 23