[OpenPNE3]管理画面付きプラグイン(opFreepagePlugin)#1 開発準備、DBスキーマの設定
OpenPNE3のプラグインの作り方は公式ページにもありますが、あちらは管理画面を使わないプラグインでした。今回は管理画面側の設定画面も込みのプラグインのサンプルとしてopFreepagePlugin(フリーページプラグイン)を作ってみたいと思います。フリーページはOpenPNE2からある機能ですが、現時点ではOpenPNE3の開発ロードマップには含まれていないため、当分、公式には作られないと思われる機能です。方針としてはOpenPNE2のフリーページと同等の機能をOpenPNE3で実装していきたいと思います。
プラグイン作成の参考としてこの記事をご覧になる方もいると思いますので、この連載記事で学べること、を先に列挙しておきます。
- 一般的なOpenPNE3プラグインの作成手順(opGenerateコマンドなどを使用する方法)が学べます。
- 独自にDBテーブルを持つプラグインの作成方法が学べます。
- 独自のDBテーブルをフォームから操作する方法が学べます。
- 管理画面にプラグイン独自の設定画面を追加する方法が学べます。
- PC、モバイルの両方に独自のページを追加する方法が学べます。
- プラグイン独自にルーティングを拡張する(プラグイン内からrouting.ymlと同等の定義をする)方法が学べます。
- OpenPNE3プラグインのパッケージングの方法が学べます。
連載記事のボリュームとしては、6?7回の分量を想定しています。作り方には興味ないけどプラグインだけ欲しいという方は、opFreepagePlugin-0.9.0.tgzをダウンロードしてください。勝手プラグイン(非公式プラグイン)ですので、動作保証は致しません。フィードバックは歓迎しますが、トラブルが発生してもその責任は負えません。OpenPNE3.0.0で動作確認をしています。
プラグインの作成方法を学ぶ前に、これからどんなプラグインを作るのかを知っておいたほうが良いので、関連のあるサムネイルを列挙します。
さて、いよいよプラグイン作りの開始です。第1回目はプラグインの初期設定として、opFreepagePlugin用のディレクトリの作成とDBスキーマの作成、そのDBスキーマに対応したモデルなどのファイルの作成を行います。
まずはプラグインのディレクトリを作ります。ターミナル上でOpenPNE3のルートディレクトリまで移動して以下のコマンドを実行します。以降そのルートディレクトリを基準に話を進めます。
-
./symfony opGenerate:plugin opFreepagePlugin
すると、/plugins/opFreepagePluginディレクトリが作成され、apps、config、i18n、libの4つの空ディレクトリが作成されます。
次に、DBスキーマを作成します。/plugins/opFreepagePlugin/config/schema.ymlファイルを作成し、
-
propel:
-
_attributes: { package: plugins.opFreepagePlugin.lib.model }
-
freepage:
-
id: ~
-
title: { type: longvarchar }
-
body: { type: longvarchar }
-
app_type: { type: varchar(16), required: true, default: 'pc'}
-
auth: { type: tinyint, required: true, default: 1}
-
created_at: ~
-
updated_at: ~
と入力します。今回はfreepageというテーブルをの中に、idカラム(PRIMARY KEY・AUTO_INCREMENT)、titleカラム(TEXT型)、bodyカラム(TEXT型)、app_type(VARCHAR型、'pc'と'mobile'を想定)、auth(BOOL型、ログイン認証のあり=1と、なし=0を想定)、created_at(DATETIME型)、updated_at(DATETIME型)といったカラムを定義しています。
DBスキーマのファイルを作成したら、スキーマを元にモデルやフォーム、フィルタを自動生成させます。
-
./symfony openpne:install
を行い、指示に従ってDB情報を入力するとOpenPNE3内のすべてのDB関連ファイルが一新され、その過程でopFreepagePlugin用のファイルも作成されます。しばらくしてコマンドが完了すると、/plugins/opFreepagePlugin/libディレクトリの中にmodel、form、filterなどのディレクトリが作成されていて、それぞれ自動生成された以下のクラスファイルが格納されています。
├─form
│ │ FreepageForm.class.php
│ └─base
│ BaseFreepageForm.class.php
├─model
│ │ Freepage.php
│ │ FreepagePeer.php
│ ├─om
│ │ BaseFreepage.php
│ │ BaseFreepagePeer.php
│ └─map
│ FreepageMapBuilder.php
└─filter
│ FreepageFormFilter.class.php
└─base
BaseFreepageFormFilter.class.php
これでプラグイン開発の準備が整いました。次回は管理画面のプラグイン独自の設定ページの作成に移ります。




