公開日: 2009年08月18日(Tue)
PxFW に、コンテンツの編集ルールが複雑で馴染みづらいというご意見を頂く。コンテンツ専用リソースの管理方法や、フレームワークの独自タグなどの特殊なルールは習得するのが困難で、通常のHTMLのコーディングスキルだけでコンテンツを作成できるようにできないか、とのこと。
この課題を解決する方法を考えてみたので、手順をご紹介する。この手順では、既存の PxFW の実装をほとんど変更することなく、この課題を解決しようと試みた。
/www/htdocs
という環境を想定する。実際の環境がこれと異なる方は、適宜読み替えて進めること。
apache/conf/httpd.conf
の LoadModule rewrite_module modules/mod_rewrite.so
と書かれた行のコメントアウトを解除して、Apache を再起動する。
PxFW 0.6.4 をダウンロードして、インストールする。
このとき、「コンテンツディレクトリ(path_contents_dir)」を「ドキュメントルート(path_docroot)」と同じパスに設定する。例えばここでは、/www/htdocs
とする。
インストール設定ファイルも一緒に削除する。
この時点で、ドキュメントルートフォルダには次のようなファイルとディレクトリができているはず。
__PICKLES__
は、フレームワークが使うファイルが格納されているので、直接アクセスされないように、本来はhtdocs以外の領域に設定してインストールした方がいい。または、基本認証をかけるなどしてガードする。
_pickles_execute.php
が、実行ファイルとなる。
6行目に次のコードを挿入する。
$_SERVER['PATH_INFO'] = preg_replace( '/\.pxhtml$/' , '.html' , $_SERVER['PATH_INFO'] );
6行目は、カレントディレクトリ変更の chdir( dirname(__FILE__) );
と、設定オブジェクトをロードする require_once()
の間に当たる。
Apacheの設定ファイル .htaccess
を作成する。Apache が .htaccess
のロードを許可しない設定になっている場合は、許可する設定に変更する。
この .htaccess
に、次のように記述する。
RewriteEngine on
RewriteRule (.*)\.html$ /_pickles_execute.php/$1.pxhtml
RewriteRule (.*)/$ /_pickles_execute.php/$1/index.pxhtml
プロジェクトの設定ファイル /www/htdocs/__PICKLES__/__LIB_PROJECT__/default/lib/config.php
をテキストエディタで開き、設定項目 $url_action
を、空白文字列に変更する。
ここまでで、セットアップはひとまず完了。この時点で、ドキュメントルートは次のような内容になっている。
この手順によるセットアップでは、ドキュメントルートとコンテンツディレクトリが同じパスを指しているため、衝突が起こらないように注意しなければならない。
特に気をつけるのは、次の点。
__PICKLES__
、common
、cont.items
、theme.items
、.htaccess
、_pickles_execute.php
と衝突しそうなコンテンツファイル名は使用しない。
次に、サイトマップとコンテンツを作成する。
次の点に注意して、サイトマップを登録する。
それ以外は、普通のサイトマップと同様に登録する。
コンテンツディレクトリ(ドキュメントルートと同じ)に、サイトマップのB列(srcpath)に指定したコンテンツのHTMLを、全ページ分作成する。
サイトマップで、exetype
に php
を指定したので、これらのコンテンツは拡張子は *.html
だが PHP編集モードで直接実行される。カスタムタグやリンク先、画像の参照先などは、自動的に解決されない。書いたHTMLソースが、無加工のままコンテンツ領域に出力される。
これで、ごく一般的なHTMLコーディングと同じ要領でコーディングすることができ、ナビゲーションやパンくずなどは PxFW のテーマが付加するような作業環境が完成したはずだ。これでコンテンツの制作者は、PxFW の特殊ルールをほとんど意識せずにコーディングできると思う。
公開日: 2009年08月18日(Tue)