昨日よりCraft CMSで運用を開始した当サイトに検索機能を追加しました。
検索テンプレートについてはドキュメントにある通りなので簡単でした。ページ分割も{% paginate %}
を使うことで実現できました。
- Searching | Craft 3 Documentation
- Search Form | Craft 3 Documentation
- {% paginate %} | Craft 3 Documentation
ちなみに、全ページ数はpageInfo.totalPages
、現在のページ数はpageInfo.currentPage
で取得できました。(as pageInfo, pageEntries
と記述した場合)また、テンプレートに過去の仕様に沿った記述をすると管理画面の「非推奨エラー」に表示されるので、内容を確認して修正を行いました。
Craft CMSにクエリストリングが渡らない
ハマったのはcraft.app.request.getParam('q')
で検索クエリが取得できないこと。test.php
にphpinfo()
を書いて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に渡るようになり解決しました。