Craft CMSで運用しているサイトに検索機能を追加

昨日よりCraft CMSで運用を開始した当サイトに検索機能を追加しました。

検索テンプレートについてはドキュメントにある通りなので簡単でした。ページ分割も{% paginate %}を使うことで実現できました。

ちなみに、全ページ数はpageInfo.totalPages、現在のページ数はpageInfo.currentPageで取得できました。(as pageInfo, pageEntriesと記述した場合)また、テンプレートに過去の仕様に沿った記述をすると管理画面の「非推奨エラー」に表示されるので、内容を確認して修正を行いました。

Craft CMSにクエリストリングが渡らない

ハマったのはcraft.app.request.getParam('q')で検索クエリが取得できないこと。test.phpphpinfo()を書いてtest.php?q=testとすると$_SERVER['QUERY_STRING']q=testが入るのですが、Craft CMSではどうしても$_SERVER['QUERY_STRING']が空になりました。

色々悩みコードを読むなどしたのですが、index.phpの冒頭にvar_dump($_SERVER['QUERY_STRING'])を書いてみると、この時点で既に値が空。このことからNginxのrewriteルールが悪いと判断できました。そこで、Nginxの設定をKenzie Campbellさんのkenzie/craft.confを参考に設定したところ、無事クエリストリングがCraft CMSに渡るようになり解決しました。