BLOG マイロプスブログ

access_time2018.11.05

ブログ

PowerCMS でダイナミック検索(AltSearchプラグイン)を使用した時に悩んだポイント

こんにちは、エンジニアのushirogouchiです。
皆さまはPowerCMSのダイナミック検索を使用されたことはありますでしょうか?
私はとある案件で使用したのですが、使用していく中でいくつかのポイントで悩みましたので、そのポイントを共有したいと思います。

今回使用したPowerCMSの環境は以下になります。

  • PowerCMS 4系

自動的に生成されるテンプレート群


マニュアルには、"DynamicMTML Bootstrapperのテンプレート、検索結果テンプレートは、PowerCMSで提供されるテーマを適用すると自動的に生成される"とありましたので、どこかに該当のテンプレートが生成されていると探したのですが、テンプレートの一覧などに見つからずどこに生成されたのか悩みました。
こちら見つからなかった原因ですが、最初にウェブサイトを作成する時にウェブサイトテーマに『Rainer』を選んでいたために自動生成されてなかったようです。
ウェブサイトテーマを『PowerCMS Rainer』を選んだところDynamicMTML Bootstrapperのテンプレート、検索結果テンプレートが自動生成されました。
これらの自動生成させたい場合はウェブサイトテーマの選択を気をつける必要があるようです。(『PowerCMSで提供されるテーマを適用する』の意味をその時理解しました。)

検索のインプットとその検索結果の表示される箇所


次に悩んだポイントですがマニュアルに検索クエリーとあったのですが、この検索クエリーをどのように使用すればいいのか最初わかりませんでした。
いくつか試してわかったことは、検索クエリーは、検索結果テンプレート(デフォルト dynamic/search.html)のURLに追加しそのURLにアクセスすることで検索できることがわかりました、


例 blog_id=1のサイトでカテゴリーIDが1のものが付いている 検索文字列 hogehoge のを含む記事を上限30件で検索したい場合

dynamic/search.html?categories=1&query=hogehoge&limit=30&blog_id=1


なお"query"の検索の対象ですが、記事等の本文も含まれてますが、他にもカスタムフィールドの項目の文字列も検索対象になりました。
検索結果ですがdynamic/search.htmlテンプレートでMTAltSearchResultsタグに囲んであげたところで、URLにつけた検索クエリーの検索結果を表示してあげることができます。

以上のことが検索結果を表示できるようにするまでに悩んだことですが、次に検索結果を表示していく中で悩んだポイントになります。 結構強引な手段をとりましたので何かもっといい方法があればぜひ教えてもらいたいと思っております。

検索ルートによって検索結果の見た目を変えたい


検索ルート毎に別のテンプレートファイルが使えればよかったのですが、検索結果テンプレート1つのみしか使い方がわかりませんでしたので今回は1つのファイルに2種類の見た目(HTML)を記載することにしました。
その際にどの検索ルートがわかるようにURLに特定の検索ルートにのみ"&hogehoge=on"のようなものをつけ、URL文字列で分岐できるタグを使って出し分けをしました。
これで検索ルートでの見た目を変えるといったことはできるようになったのですが、どちらかを変えたいとするときなどが相当大変でした。

記事に設定したカスタムフィールドの項目の文字列のみ検索したい。


こちらですがカテゴリーのみの検索はできるのですが、カスタムフィールドのみでの検索をしたいという要望がありました。
カスタムフィールドのみの検索といったことはできなかったのでどうしたかというと、カスタムフィールドに設定する値を通常の記事の文章中には出ずらい文字のならびにし、検索クエリーにその文字列で検索するようにし、カスタムフィールドに設定する値にしか検索キーワードが該当しないようにといった工夫をしました。

どうでしたでしょうかこれが私が悩んだポイントになりましたが少しでも皆様の参考になれば幸いです。

なお現在Mylopsでは第二創業として、従来のウェブサイト制作だけでなく、自社サービスの開発を開始する重要フェーズに参画してくれるコアメンバーを募集しています。
採用情報

エンジニア

ushirogouchi

松岡修造さんの日めくりカレンダーを3つ持ってます