前回に引き続き、ブログ、ニュース記事に特化したカスタムリソースタイプであるArticlesを紹介していきます。バリバリ使いこなして、効果的な記事を発信していきましょう!
Articlesと日本語化
前回紹介したように、Articlesパッケージは現時点で日本語訳には対応していないのですが、FaceBook経由でTsukuru Hondaさんから、「日本語ローカライズを行っている」という連絡をいただきました。アドレスはこちらですので、興味のある方はgitから直接翻訳ファイルをインストールしてみてはいかがでしょうか?
また、他力本願で恐縮ではありますが、将来的に本家パッケージにマージされるよう陰ながら応援しております。
早速のバージョンアップ
2週間前に紹介したArticlesのバージョンは1.4.3だったのですが、本記事執筆時点での最新バージョンは1.4.7となっており、活発な開発が行われていることが伺えます。言い換えると、「すぐに仕様が変わったりしてメンテが大変なのでは?」と思えなくもないですが、そのあたりはChangelogなどを見ながら都度対応していくようにしましょう。参考までに、前回の記事からの変更点は次のとおりです。
Articlesにおけるリソースの構成
前回は、簡単なブログの作成方法について紹介しましたが、Articlesを深く知る上でも、バックエンドデータベースの構造に関して多少なりとも理解しておくことをおすすめします。
以前、第9回「MODxとMySQLの関係 + おまけスニペット」で触れたように、MODxの通常のリソースコンテンツはMySQL上のmodx_site_contentテーブルに格納されていました。Articles上での記事がいったいどこに格納されるのか気になるところですよね。
結論から言ってしまえば、Articles上の記事もmodx_site_contentテーブルに格納されていきます。しかしいくつかのパラメータが通常の記事と異なるため、管理画面左側のメニューツリーから記事が直接表示されることはありません。
Articles上の記事だけを検索するためには、class_keyという項目で条件を絞り込めば良いでしょう。
Articlesを導入したことで、 class_key=Articleだけではなく、テーブルにはいくつかの変更が加わっていますので、興味がある方はいろいろと見比べてみてください。一点注意しておきたいのは、Articles内の記事はhidemenuが1と設定されています。これを踏まえて、ブログに検索機能を追加してみましょう。
SimpleSearchの設置
MODxに検索機能を設けるためのスニペット、SimpleSearchについては以前紹介していますが、Articles上にも同様に検索フォームを設置することができます。
以前の記事をもう一度読み返してみてください。SimpleSearchを使用するためには以下の手順を行う必要がありました。
- 検索フォームを設置するページで[[!SimpleSearchForm? オプション...]]という記述を行い
- 検索結果を表示させるページでは[[!SimpleSearch? オプション...]]という記述を行う
ということで、まずは検索フォーム部分を作成します。デフォルトのsample.ArticlesContainerTemplateテンプレートでは、検索フォーム部分が次のような形で設定されていますので、この辺りをSimpleSearchスニペットを使ったものに置き換えてみましょう。
ページの都合上(=筆者のセンスの都合上)、デザインは一切気にせず検索フォームを設置しますので、実際には画像やJavaScriptを使うなど、凝ったものを作ってみてくださいね。landingで指定するのは検索結果を表示するページのリソースIDです。
上記のフォーム部分を次のように置き換えます。
my_searchチャンクの内容は以前紹介したものをそのまま使用します。
次に、検索結果表示用の簡単なリソースを作成します。メニューから非表示であるArticles内リソースを検索するため、hideMenuの値を1に設定しているのがミソです。また、検索キーワードをハイライトするためのhighlightResultsパラメータを敢えて0に設定しているのは、日本語を検索した場合に結果が文字化けしてしまうためです。
ざっと調べてみたところ、simplesearch.class.php中の360行目付近で、$this->searchStringに値が入ってこないのが問題のようですが、時間の都合上、根本解決には至りませんでした。原因がわかり次第、この場でお伝えしようと思いますので、気長にお待ちください(バージョンアップによるバグフィクスが先だったりするかもしれません)。
検索結果用リソースの作成
リソースID | 32 |
タイトル | ブログ検索結果 |
使用テンプレート | sample.ArticlesContainerTemplate |
エイリアス | blog-search-result |
メニューに表示しない | チェック |
公開する | チェック |
コンテンツ | <p>[[!SimpleSearch? &highlightResults=`0` &hideMenu=`1`?]]</p> |
終わりに
前回からの繰り返しになりますが、「直感的に操作できる」のがArticlesの魅力のひとつですので、読者の皆さんもぜひ践してみてください。