【PxFW】コンテンツの編集ルールを緩和したい

PxFW に、コンテンツの編集ルールが複雑で馴染みづらいというご意見を頂く。コンテンツ専用リソースの管理方法や、フレームワークの独自タグなどの特殊なルールは習得するのが困難で、通常のHTMLのコーディングスキルだけでコンテンツを作成できるようにできないか、とのこと。

この課題を解決する方法を考えてみたので、手順をご紹介する。この手順では、既存の PxFW の実装をほとんど変更することなく、この課題を解決しようと試みた。

  • ※Apache のモジュール mod_rewrite が有効になっている必要がある。
  • ※ここでは仮に、インストール先のドキュメントルートが /www/htdocs という環境を想定する。実際の環境がこれと異なる方は、適宜読み替えて進めること。
  • ※この手順は、Windows Vista で XAMPP 1.6.5 を動かしている環境で実施したもの。お使いのサーバやApacheのバージョンなどによってやり方が異なる箇所があるのでご注意を。

mod_rewriteを有効にする

apache/conf/httpd.confLoadModule rewrite_module modules/mod_rewrite.so と書かれた行のコメントアウトを解除して、Apache を再起動する。

  • ※この手順は、お使いのサーバやApacheのバージョンなどによってやり方が異なるのでご注意。

PxFW をインストールする

PxFW 0.6.4 をダウンロードして、インストールする。

このとき、「コンテンツディレクトリ(path_contents_dir)」を「ドキュメントルート(path_docroot)」と同じパスに設定する。例えばここでは、/www/htdocs とする。

インストールツールを削除する

インストール設定ファイルも一緒に削除する。

この時点で、ドキュメントルートフォルダには次のようなファイルとディレクトリができているはず。


  • __PICKLES__ は、フレームワークが使うファイルが格納されているので、直接アクセスされないように、本来はhtdocs以外の領域に設定してインストールした方がいい。または、基本認証をかけるなどしてガードする。

index.php を _pickles_execute.php に名称変更

_pickles_execute.php が、実行ファイルとなる。

_pickles_execute.php にコードを追記

6行目に次のコードを挿入する。

$_SERVER['PATH_INFO'] = preg_replace( '/\.pxhtml$/' , '.html' , $_SERVER['PATH_INFO'] );

6行目は、カレントディレクトリ変更の chdir( dirname(__FILE__) ); と、設定オブジェクトをロードする require_once() の間に当たる。

ドキュメントルートに .htaccess を作成する

Apacheの設定ファイル .htaccess を作成する。Apache が .htaccess のロードを許可しない設定になっている場合は、許可する設定に変更する。

この .htaccess に、次のように記述する。

RewriteEngine on
RewriteRule (.*)\.html$ /_pickles_execute.php/$1.pxhtml
RewriteRule (.*)/$ /_pickles_execute.php/$1/index.pxhtml
  • ※RewriteRule の書式については、mod_rewriteマニュアルの日本語訳 を参照。未確認情報だが、正規表現モジュール(OS依存?Apacheのバージョン依存?)によって書式が若干異なる場合があるらしいので、要注意。
  • ※Windows では、.htaccess のような、拡張子のみのファイル名を作成できない。UNIX上で作成して持ってくるなど、何らかの工夫が必要。

config.php の設定内容を編集する

プロジェクトの設定ファイル /www/htdocs/__PICKLES__/__LIB_PROJECT__/default/lib/config.php をテキストエディタで開き、設定項目 $url_action を、空白文字列に変更する。


ここまでで、セットアップはひとまず完了。この時点で、ドキュメントルートは次のような内容になっている。


この手順によるセットアップでは、ドキュメントルートとコンテンツディレクトリが同じパスを指しているため、衝突が起こらないように注意しなければならない。

特に気をつけるのは、次の点。

  • __PICKLES__commoncont.itemstheme.items.htaccess_pickles_execute.php と衝突しそうなコンテンツファイル名は使用しない。
  • PicklesDYを使っている場合、これらのフレームワークの特殊ファイルやディレクトリがコンテンツ管理画面に表示されるが、承認や削除などの操作をしてはいけない。

次に、サイトマップとコンテンツを作成する。

サイトマップにページを登録

次の点に注意して、サイトマップを登録する。

  • B列(srcpath)には、拡張子 *.html のファイルを指定する。
  • C列(linkto)には、B列(srcpath)と同じ値を指定する。
  • Q列(exetype)には、文字列 php を指定する。

それ以外は、普通のサイトマップと同様に登録する。

コンテンツを作成する

コンテンツディレクトリ(ドキュメントルートと同じ)に、サイトマップのB列(srcpath)に指定したコンテンツのHTMLを、全ページ分作成する。

サイトマップで、exetypephp を指定したので、これらのコンテンツは拡張子は *.html だが PHP編集モードで直接実行される。カスタムタグやリンク先、画像の参照先などは、自動的に解決されない。書いたHTMLソースが、無加工のままコンテンツ領域に出力される。


これで、ごく一般的なHTMLコーディングと同じ要領でコーディングすることができ、ナビゲーションやパンくずなどは PxFW のテーマが付加するような作業環境が完成したはずだ。これでコンテンツの制作者は、PxFW の特殊ルールをほとんど意識せずにコーディングできると思う。

  • ※ただし、このような環境でのコーディングは、ソースの管理上のカオスを生み出す原因になり得るため、推奨できない。運用ルールを事前にしっかりと定めて、CSSやJavaScriptファイルなどの管理がぐちゃぐちゃになってしまわないように気をつけよう。

プロフィール

コヤナギ トモヤ

ウェブ系エンジニアしてます。ウェブデザイナー、ウェブディレクターとしてウェブ制作の仕事に携わり、今はエンジニア職に流れ着きました。誰かのお仕事をちょっとだけ効率化するような支援ツールの開発が好き。オープンソースとMITライセンス大好き。人生後半は自由と民主主義のコントリビューターとして過ごす予定。

ウェブ制作支援ツール Pickles 2 をオープンソースで開発しています。

PHP/JavaScript/NodeJS/nwjs/Laravel/Pickles2/オープンソース/心理学/倫理/自由と民主主義

RSSフィード

ページの先頭へ戻る