P_BLOG モジュール構成について

P_BLOGの基本構成は以下のようになっています。各ディレクトリの定義は以下のようになっています。

Structure

admin
管理モードで使われるファイルを納めるディレクトリです。
contents
メインのphpにより呼び出されるプレゼンテーション部、読み込み用コンテンツファイルを納めるディレクトリです。ファイルタイプは .inc.php、.inc、.txt、.html、.tplなどが推奨です。
resources
コンテンツファイルで使用されるリソースファイル、バイナリファイルを納めるディレクトリです。
images
モジュール全体で使用される画像ファイルを納めるディレクトリです。
include
インクルード(読み込み)ファイルを納めるディレクトリです。UDF (ユーザー定義関数。ファイルのPREFIXは「fnc_」を推奨)や定数ファイル(constants.php)などを納めるディレクトリです。
lang
ローカライズ可能な文字列変数を納めるディレクトリです。変数のグループは「$lang['...']」としています。

P_BLOG自体も基本的にこのモジュール構成の規則に則って構成するものとします。例外として、画像のパスなどをシンプルにするためアップロード用のディレクトリ「/resources/」のみ、トップレベルディレクトリに配置しています。

基本的に各ファイル、リソース、および関数は下位の階層へと継承され参照可能となるもの、とします。

include」内の関数ファイル「fnc_*」ファイルについて

各関数は「/include」内の「fnc_*」で始まるファイルに記述しています。最も上位にある「/include」ディレクトリに納められている「fnc_base.inc.php」が、基盤となる関数定義ファイルで、全てのページで使用される、

  • データベース接続処理
  • XHTMLヘッダ部
  • メニュー部
  • フッタ部

はここに記述されています。

各子ディレクトリ(例:admin, analyze, files, forum など)にある「/include」ファイルは、それ以下のディレクトリでしか使われないファイルを納めています。「/images」も同様に、それ以下のディレクトリでしか使われない画像が納められています。

  • /include/fnc_base.inc.php」 -- 全てのページで使用される関数
    • /admin/include/」 -- adminモードのみで使用される
    • /analyze/include/」-- analyzeでのみ使用される
    • /files/include/」-- filesでのみ使用される
    • /forum/include/」-- forumでのみ使用される
  • /images/」 -- 全てのページで使用される画像
    • /admin/images/」 -- adminモードのみで使用される
    • /analyze/images/」-- analyzeでのみ使用される
    • /forum/images/」-- forumでのみ使用される

プラグインモジュールについて

配置ディレクトリ

プラグインは以下の場所にインストールされるものとします。

/include/user_include/plugins/

ファイル名のスタイル

プラグイン名は必ず以下の規則性を持たせるものとします。

  1. 接頭辞(Prefix)は「plg_」とします。
  2. 拡張子(Extention)は「.inc.php」とします。
  3. ファイル名は常に小文字で、単語の区切りにはアンダースコアを用いて下さい。

特に 1. と 2. は重要で、この規則に従わない名前を用いたファイルはプラグインとして認識されません。

plg_foo_bar.inc.php

プラグインコードのスタイル

プラグインコードとは、プラグインが返す変数で、{}で括ってテンプレートに張りつけるコードを意味します。

  1. 変数名は「$plugin['CREATER_CODE']['foo_bar']」とします。
    • $plugin」はプラグインのグループ変数です。
    • ['CREATER_CODE']は常に大文字とアンダースコアで表し、略字可能です。
    • プラグイン名変数['foo_bar']は常に小文字とアンダースコアで表記し、どのような機能を提供するプラグインか一目で分かり易いようにするためなるべく略字は避けて下さい。
  2. P_BLOG Project純正のクリエーターコードは「['PBPROJ']」です。これと重複しないクリエーターコードを使用してください。

{$plugin['PBPROJ']['calendar']}

プラグインの仕様

  1. コードは必ずclassを使ってパッケージ化してください。
  2. コーディングスタイルは「PEAR :: Manual :: 標準コーディング規約」に準拠してください。