このドキュメントは、コンテンツを構成するドキュメントモジュールの定義を含んだ、FESSが規定する標準のコーディング規則について説明します。
このドキュメントでは、2種類のロール(役割)が登場します。
ドキュメントモジュールおよびコーディング規則は、次の方針に基づいて設計されます。
ターゲットデバイスの種類については、意識しない(=マルチデバイスに対応できるように設計する)ものとします。
テキスト系のファイルタイプ全般において、文字セットは UTF-8(BOMなし) で統一します。
テキスト系のファイルタイプ全般において、改行コードは CRLF で統一します。
次の命名規則を原則とします。
bowl()->send( ob_get_clean(), 'head' ); ?>
ただし、サブモジュール(モジュールの一部として使用されることが前提となるクラス)については、属するモジュール名の後ろにハイフンでサブモジュール名を付加するように命名します。この場合、サブモジュール名は1つだけ指定できます(ハイフンは1度しか使えません)。
例:モジュール module_name に属するサブモジュール module_name-sub1, module_name-sub2 など
次にあげるのは、慣例です。
サブモジュールは、モジュールの一部として使用されることが前提となるクラスです。属するモジュールの名前を冠し、後ろにハイフンでサブモジュール名を付加するように命名します。
基本的な指針としては、属するモジュールの名前領域の内で有効になるよう設計します。
次の例は、モジュール .module と、.module に属するサブモジュール .module-submodule の関係について表しています。
<style type="text/css">
.module{
/* style */
}
.module .module-submodule{
/* style */
}
</style>
<div class="module">
<div class="module-submodule">
テキスト
</div>
</div><!-- / .module -->
サブモジュールは、属するモジュールと併記するように設計することもできます。
<style type="text/css">
.module{
/* style */
}
.module.module-submodule{
/* style */
}
</style>
<div class="module module-submodule">
テキスト
</div><!-- / .module -->
この場合のサブモジュールの定義は、.module.module-submodule とすることが望ましいですが、IE6などの古い環境を考慮する場合、単に .module-submodule と定義しても構いません。
接頭辞 cont は、設計者と制作者の名前領域を分ける目的で、コンテンツ独自のモジュールに対してつける予約語です。
PHPの例: cont_get_page_info()
CSSの例: cont_module_name
JavaScriptの例: contHogeHoge()
クラス名等の命名に省略形を使用するべきかどうかについて、厳密な取り決めは設けませんが、次のような基準を設け、適切な名称を検討するようにします。
ドキュメントモジュールは、構成要素単位で構造化されたHTMLとCSSのセットであり、サイト全体の管理者(=設計者)により定義され、コンテンツ個別の制作者に配布されるものです。
ここで定義されるドキュメントモジュールは、サイト全体の管理者(=設計者)により、将来の環境や要件の変化を想定して設計されたものであり、制作者には、そのルールに従ってコンテンツを構築することが求められます。
制作者は、ここに定義されていないドキュメントモジュールを独自に開発することができます(独自ドキュメントモジュール設計規則についてはコンテンツ独自ドキュメントモジュールの定義を参照)が、これは通常推奨されません。独自ドキュメントモジュールを多く開発すると、サイト全体のルールが次第に崩れてくる恐れがあり、管理効率が著しく低下するためです。極力、このドキュメントに定義された、設計者によって設計、提供されたドキュメントモジュールのみを使ってコンテンツを構築するようにしてください。
共通ドキュメントモジュールは、それぞれユニットモジュール、パーツモジュール、スタティックモジュール、ボックスモジュールの4種類のグループに分類されます。
サイト全体(テーマ)で一元的に管理されているモジュールと干渉しあわないように、いくつかの規則が用意されています。
コンテンツ独自のCSS、JavaScriptを定義する場合の規則 についても含みます。
コンテンツファイルと同じ階層に、コンテンツファイルと同じ名前の拡張子を _files に変えた名前のディレクトリが、コンテンツ独自のファイル格納場所です。
例えば、/abc/def/fhi.html というコンテンツの場合、/abc/def/fhi_files/* を独占的に使うことができます。
外部CSS、画像などのリソースファイルはこの中に管理するようにしてください。また、このディレクトリ内での格納規則や命名規則は設けません。
/abc/def/*.html という複数のコンテンツで使う独自ファイルを、/abc/def/common/* とするなどしてください。
コンテンツが独自に定義するCSSは、サイト全体(テーマ)で一元的に管理されているCSSと干渉し合っては不都合があります。この問題を避けるため、次の規則が設けられました。
<div class="contents"></div> の内側に設置される約束なので、コンテンツが独自に定義するCSSクラスは、.contents 以下にのみ効果があるように記述しなければならない。
テーマによって特に認められている項目を除き、テーマの共通モジュールの一部を拡張して利用してはいけません。この場合、まずは設計者に拡張してよいか相談した上で問題ない内容で拡張を行うか、またはモジュール単位で全体をコピーし、サブモジュールも含めて、接頭辞 cont を付加した別のモジュールとして再定義して変更するようにします。
例:colsを独自CSSとして定義する場合
<div class="cont_cols unit">
<div class="cont_cols-col cont_cols-1of2"><div class="cont_cols-pad">
<!-- insert parts modules -->
</div></div>
<div class="cont_cols-col cont_cols-1of2 cont_cols-last"><div class="cont_cols-pad">
<!-- insert parts modules -->
</div></div>
</div><!-- / .cont_cols -->
コンテンツは独自にJavaSctiptを記述し、埋め込むことができます。
ただし、次の規則に従うようにしてください。
<div class="contents"></div>に内包される規則のため、それ以外のDOMエレメントを改変するようなスクリプトを記述してはならない。
以下のライブラリは、テーマにより標準的にロードするため、コンテンツが明示的にロードする必要はありません。
以下のライブラリは、共有リソースとしてテーマによって用意されていますが、特にコンテンツが必要としない限り、ロードはされません。