Umi Blog

ウミブログ

任意の PHP コードをコンテンツで実行できる PHP filter モジュール

2014.10.16
Studio Umi

本日は Drupal (ドルーパル)の「 PHP filter 」というモジュールをご紹介できればと思います。

PHP filter モジュールは Drupal のコンテンツ(=ノード)の本文部分に生の PHP コードが書けるようになるモジュールです。 Drupal をセットアップすればデフォルトで用意されている Filtered HTML 、 Full HTML 、 Plain text などのフォーマットに加える形で、「 PHP code 」というフォーマットを提供してくれて、それを選択すると動作する PHP コードが書けるようになります。

Drupal 7 の場合はコアに含まれているため、 Drupal コアをセットアップすれば別途インストールする必要はありません。 管理画面もしくは Drush 経由で有効化するだけですぐに使いはじめることができます。 Drupal 8 の場合は、 2014 年 10 月時点ではコアから切り離されコントリビュートモジュール化される見込みです。

以下、使い方をかんたんに見ていきましょう。

使い方

  1. インストール
  2. 利用権限を付与
  3. 実際に PHP コードを書く

1. インストール

上述のとおり、 Drupal 7 の場合はコアに組み込みとなっているので別途ダウンロードする必要はありません。 モジュールの管理画面から有効化しましょう。 管理者としてログインしてモジュールの管理ページ( /admin/modules )を開いたら、「 PHP filter 」という項目を探します。 その隣にあるチェックボックスにチェックを入れて「設定を保存」(日本語化されている場合)をクリックすると有効化は完了です。

PHP filter の Drupal の中での名称は php なので、 Drush を使う場合は次のコマンドを実行すればよいでしょう。

$ drush en php

2. 利用権限を付与

モジュールを有効化しただけでは PHP filter を使える状態になっていないため権限の設定を行います。

管理画面のテキストフォーマットの管理ページ( /admin/config/content/formats )を開いたら、「 PHP code 」という項目を探して、その行にある「設定」リンクをクリックします。

テキストフォーマット一覧で PHP code の設定を開く画面

PHP コードの記述権限を与えたい役割(ユーザロール)を設定できるページが開くので、 PHP コードを記述させたい役割のみにチェックを入れて「設定を保存」をクリックして保存します。

PHP コードを使える役割にチェックを入れる設定画面

3. 実際に PHP コードを書く

以上の手続きで PHP コードが書けるようになったので、実際に PHP コードを埋め込むコンテンツを書いてみます。

権限を与えた役割を持つユーザでログインし、コンテンツ(=ノード)の新規作成ページ( /node/add )を開きます。 適当にコンテンツタイプを選び(デフォルトでは Article と Basic Page があるかと思いますが、その中から適当に選んで)、実際の作成フォームのページを開きましょう。

本文( Body )の部分の下の方にフォーマット選択のセレクトボックスがあり、その中に「 PHP code 」が含まれているかと思います。 それを選択し、本文には適当に PHP コードを記述します。

本文のテキストフォーマットで PHP code を選ぶ画面
本文に PHP コードを記述した編集画面

あとは「保存」をクリックすれば、 PHP コードのあるコンテンツの作成は完了です。

PHP コードを含むコンテンツを保存する画面

確認のため、コンテンツのページを開いてみましょう。

PHP コードが実行されたコンテンツの表示

記述した PHP コードが問題なく動いていることが確認できるのではないかと思います。

ちなみに、記述できるコードの範囲ですが、 Drupal の立ち上げ処理がひととおり終わった後にこの PHP コードが読まれる形になるので Drupal が提供している API も利用することが可能です。

PHP コードから Drupal の API を利用した例

以上です。

おわりに

いかがだったでしょうか?

コンテンツの本文のところで任意の PHP コードを実行できる PHP filter モジュールをご紹介しました。 PHP filter にはこの他にも「ブロックの表示条件を PHP で設定できる機能」なども持っているので、ブロックの表示条件を細かく設定したい場合なんかにも便利です。

ブロックの表示条件を PHP で設定する画面

ただ、任意の PHP コードが実行できるということは、 1) 悪意のあるユーザが利用した場合、 2) 悪意のないユーザが間違って問題のあるコードを記述した場合、を考えると大きなセキュリティリスクのもとともなるので、権限設定を適切に行った上で PHP をよく理解したユーザだけが利用するように、細心の注意が必要です。

Drupal 7 の場合はコアに含まれていてすぐに使いはじめられますし、正しく使えば非常に便利なモジュールなので、知らなかったぞという方はぜひ試して活用してみていただければと思います。

\

小さなご意見も、私たちにとっては大きなヒントです!

ぜひ率直なご感想をお寄せください

/

この記事はお役に立ちましたか?

スタジオ・ウミのメンバー

Masters of Drupal Engineering.

人に、技術に、品質に、まっすぐ。

Download
会社案内をダウンロード
Contact
お気軽にお問い合わせください
Recruit
スタジオ・ウミの採用情報