WordPressは、その自由度の高さで単なるCMSの枠を超えて、フレームワーク的に使われることも多いソフトです。
そこで、そんな WordPressを本格的な MVCフレームワークとして使ってしまおうというフレームワークが『Themosis framework』。例えば、次のようなコードでビューを表示するようなルーティングが書けます。
Route::get('home', function() {
return View::make('page.home', array());
});
これは、ホーム画面を表示したときにビューを作り出すプログラム。これは本格的です。
インストール方法
インストールには Composerを使います。
展開したい場所で次のように打ち込みます。
composer create-project themosis/themosis my-project-name
展開されたフォルダの「htdocs」をドキュメントルートにして、アクセスできるようにしましょう。
設定
次に、以下のファイルを編集します。
- /vendor/.env.local.php
- /vendor/.env.production.php
ここに、テスト環境と本番環境のデータベースの情報と、ホストの情報を記述します。最後の「WP_SITEURL」の最後は「/cms」になります(ここに、WordPressがセットアップされている)
続いて、以下を編集します。
- /config/environment.php
ここに、ホスト名を記述します。ホスト名は、Linuxなどなら「hostname」コマンド、Windowsならコマンドプロンプトから「ipconfig/all」と打ち込むと、自分のマシン名が分かります。これを記述することで、先ほどの設定ファイルのどちらを読み込むかが、自動的に判定されます。
次が、以下です。
- /config/shared.php
少し下にスクロールすると、WordPressユーザーにはおなじみのセキュリティキーがあります。生成ページにアクセスして、コピーすると良いでしょう。
WordPressのセットアップ
これで準備完了です。Webブラウザーからアクセすると、見慣れた WordPressのセットアップ画面が表示されるので、進めていけばダッシュボードまでたどり着くことができます。
オリジナルテーマと、プラグインが1つインストールされているのでそれぞれ有効化しておきましょう。また、WP Multibyte Patchがインストールされていないので、別途インストールしておくと良いでしょう。
ルーティング
管理画面を使っていれば、いつもと同じように感じるのですが、残念ながら投稿などをしてもそのページを見ることができません。
これは、「ルーティング」が設定されていないため。次のファイルを編集します。
- /htdocs/content/themes/themosis-theme/app/route.php
最初は、次のようなルーティングが書かれているので、これに添って増やしていきます。
Route::get('home', function(){
return View::make('welcome');
});
1番目のパラメーターには、リストから選んで対象の画面を記述します。固定ページなら「page」、投稿の個別ページなら「single」。WordPressのカスタマイズをしている人なら、おなじみのキーワードが並びます。
例えば、固定ページを表示したときに「Hello World!」というおなじみのメッセージを表示するなら、こうなります。
Route::get('page', function() {
return 'Hello World!';
});
MVC
こうして、後は MVCでプログラムを組んでいくことができます。それぞれ、以下のフォルダにファイルが収められています。
- /htdocs/content/themes/themosis-theme/app/controllers
- /htdocs/content/themes/themosis-theme/app/models
- /htdocs/content/themes/themosis-theme/app/views
面白い試みだが、独自仕様がネックかな?
WordPressを使っていると、テンプレート内がごちゃごちゃになってしまうので、CakePHPなどと組み合わせたい! と思うときはままあります。
そのため、こういう試みは非常に面白いと思います。ただ、ネックなのはかなりの独自仕様で、WordPressさえも素直な配置ではなくなってしまっていて、今後のバージョンアップなどに不安がありますね。。
できればやはり、使い慣れた MVCフレームワークと組み合わせられたりすると面白そうだなと思いました。
コメントを残す