5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

#baserCMS のPDFリンクプラグインを作成した話し


baserCMS公式サイト

10年以上お付き合いしている会社の株主向けのサイトを運営しているのですが、そろそろリニューアルしましょうということになりました。今まではベタにPHPを使って書いていましたので、キチンとPHPのフレームワークを使って作成することにします。PHPのフレームワークといっても、CakePHPしか知らないので、CakePHPで作成してきます。

CakePHPの上で作っていくのもいいのですが、今回はCakePHPの上で動いているbaserCMSというコンテンツ管理システムの上で作成して行きます。会社のサイトですので、Wordpressのように時系列で記事を並べていくのではなく、固定ページ中心ですので、WordpressではなくbaserCMSが丁度いいのです。

しかし、会社サイトといっても、株主向けのサイトでもありますので、PDFファイルのIR情報やニュースリリースを掲載しなければいけません。しかも、IR情報というのは面倒なもので、証券取引所からのお達しで発表時間よりも、PDFファイルを前に見せることは厳禁です。IR情報を見て株の売買をするのですから、発表前の情報を手に入れられてしまうことは御法度です。

そこで、PDFファイルを時間によって記事リストを生成できるようなことを実現します。時間での表示管理はbaserCMSにデフォルトでインストールされているブログプラグインに、日付でアクセス制限をする機能がありますので、こちらを利用することにします。

今回はブログブラグインにPDFファイルを登録できるようにしました。ブログプラグインのpostテーブルにPDFファイル名の項目を追加して、プラグインを直接改造する訳にはいかないので、PDFリンクプラグインを別途開発して、postテーブルに1対1でPDF情報を格納するテーブルを用意しました。これでbaserCMSがアップデートした場合にも対応できます。

ブログプラグインの管理ページでPDFファイルを指定してファイルをアップできる機能を、PDFリンクプラグインとして追加しています。同じような機能を持ったプラグインを探しても見つからなかったので自分で作ることにしました。もしも、存在したならば、今回はbaserCMSのプラグインの開発のスキルを習得できたということでよしとしましょう。

作成したbaserCMSのPDFリンクプラグインをGitHubに置いておきます。

https://github.com/muneando/basercms-plugin-pdf

ご自由にお使いください。バグを見つけたり機能アップしたら、GitHubから連絡ください。ただし、今回のサイトを作成するにあたっての必要最上限の機能しか実現していませんので、機能アップをしていただければ、大変うれしいです。

ページ内で表示するPDFファイルへのリンクは、PDFリンクプラグインのヘルパーで実現しています。ブログの本文とPDFファイルをどちらを優先してリンク先で表示できるかを、PDFリンクプラグインの管理ページで指定できます。前述の通りPDFファイルへの直リンクはダメですので、ユーザーがアクセスできないところにPDFファイルを置いて、PDFファイルをダウンロードする前に、時間をチェックできるようにしています。

使い方の説明は、GitHub の README.md をご覧ください。

このプラグインの作成で参考したのは、materializing 氏の Keyword プラグインです。参考というよりも、baserCMSのプラグインのイベント辺りは丸写しです。おかげでCakePHPのイベントについて理解できました。materializing 氏には、baserCMSのプラグインについて相談に乗っていただき感謝です。

実際に動いているサイトは、まだテスト段階なので公開していません。PDFリンクプラグイン以外にも、IRカレンダーを表示するためのbaserCMSブラグインも作成してしましました。もし、お客さんにOKいただいたら、baserCMSの利用例としてご覧いただけるようにします。

ブログランキング・にほんブログ村へ 人気ブログランキング