ここ1ヶ月、Drupal漬け、たまにWordPressという日々を送ってきました。いや、まだ終わっていないんですが。。。。
というのも、最初はWordPressで制作の方を進めていたのですが、要件定義や、サイト設計の部分にかなり穴があったわけです。
結果、コミュニティサイト的な機能を持たせることになり、その実装をWordPressで行うのが、難しい。というゴタゴタしたいきさつの中Drupalへの以降を決定したという次第です。
そんなわけで苦労した点、テーマ作成、モジュールの話などをWordPress位しかマトモに触ったことのない人間の視点から思ったことを書き連ねていこうと思います。
尚、制作はDrupal6.20で進行したので、基本的には6系の情報です。
そもそもDrupalとは
Drupalとは、PHPで作られたCMSの一つです。ただ、CMSというよりは、「ウェブアプリケーションフレームワーク」という側面が強いシステムです。
もちろんCMSとしてはかなり強力で、WordPressに無い機能、優れている機能としては
- コンテンツタイプの管理(WordPress的に言うとカスタム投稿)
- ユーザーの細かい権限設定
- 各ユーザーのプロフィール
- サイトの負荷によるモジュールのオンオフ管理
- GUIでのトリガの設定
- 自由なエイリアス(スラッグやパーマリンク)の設定
等が挙げられます。
また、WordPressと比較した場合に物足りない部分も当然存在し、
- 画像をコンテンツとして管理する機能がない。
- ページの階層構造を管理できない。(エイリアスなどで見かけ上は設定可能。)
- 携帯電話対応
等です。
そして、Drupalで開発する上で一番の壁になってくるのは日本語での情報が圧倒的には少ないことです。また、1つのことをするのにいくつもモジュールを組み合わせて実現しなければならないことも多く、その情報収集も大変です。
あとは慣れの問題だとは思いますが、WordPressの方がソースコードは読みやすく感じます。
というのは、WordPressは基本的にすべて置換タグはテンプレート関数として提供されていますが、Drupalではテーマ変数という形で提供されています。やはり変数より関数の方がソースを追いかけやすいのは明白だと思います。
サーバ要件
PHP4.4.0以上必須、PHP5.2以上推奨。MySQLは4.1以上。
ですが、PHP5.2はほぼ必須な気がします。モジュールとかの兼ね合いなどもありますので。
ちなみにDrupal7では、PHP:5.2.5以上必須、PHP5.3推奨です。
また、Cronで定期的にcron.phpを実行してあげる必要があります。cron.phpを実行することでキャッシュの管理、アップデートの監視等をやってくれるので、設定しましょう。
万が一使えないサーバーの場合、Poormanscronというモジュールで代用可能です。これは、人間がアクセスした時にcron.phpをある程度の間隔で実行することでcronの代わりとしています。
ただ、キャッシュの生成など、時間がかかる動作があるので、できればcronで。
また、Drupalは軽量と言われていますが、キャッシュの機能が基本機能として充実していることで軽量化を図っている気がします。なのでキャッシュを効かせない段階(制作中)などはやたら重たい場面もありました。viewsモジュール等でブロックを大量に生成すると、Drupalはそういった情報を常に変数内に保持しているようで、酷いときにはMemory limitのエラーが出ます。ちなみに今回はMemory limit= 24M。
ですので、基本的にはパワーのあるホスティングサービス、もしくはVPSでの使用が推奨されるところだと思います。
インストールについて
インストール自体はそこまで難易度の高い物ではないです。ウィザード形式で、ホスト情報、DB情報などを入れていくだけです。ただしアップロードするファイルが多いので、サーバー上でファイルをダウンロードして展開するのが確実です。
テーマ作成
テーマ作成については0829さんのDRUPAL*DRUPALに非常に詳しく載っていますのでそちらも参照して下さい。
基本的にDrupalのテーマには
- info ファイル
- テンプレートファイル(.tpl.php)
- page.tpl.php テンプレートファイル
- node.tpl.php テンプレートファイル
- comment.tpl.php テンプレートファイル
- block.tpl.php テンプレートファイル
- theme-settings.php ファイル
- template.php ファイル
というファイルで構成されています。
page.tpl.phpはWordPressのTwentyTenで言うところの、index.php、
node.tpl.phpはloop.php、
comment.tpl.phpはcomments.php、
block.tpl.phpはsidebar.php、
theme-setting.phpとtemplate.phpはfunctions.phpに書いていたものをテーマの設定と関数などに分けたもの、
という風にとらえると案外解りやすいんじゃないかと思います。
とざっくりと書きましたが、また次回細かいところや、使用したモジュールなどについて書き連ねていこうと思います。