How to Install PageTypes with Custom Attributes assigned By default from a package を参考にしました)
モデルのロード
まずは”おまじない”で、モデルをロードします。 ページタイプの追加だけなら
Loader::model('collection_types');
の一つでOK。
ページタイプの追加コード
次は実際のページタイプを追加します。
// install page types
$theme = CollectionType::getByHandle('project');
if(!$theme || !intval($theme->getCollectionTypeID())){
$theme = CollectionType::add(array('ctHandle'=>'project','ctName'=>t('Project Page')),$pkg);
}
公式サイトには上記ようにコードが示されていますが、もう少し解説します。 CollectionsType::getByHandleの引数にはパッケージのハンドル名を記入します。 次にctHandleの部分に追加するページタイプのハンドル名を記入します。ctHandleの値はphpファイル名と一致させます。‘ctHandle’ => ‘test’ としたのなら、ファイル名は test.php とします。 ctNameにはC5上での表示名を渡します。たとえば「 Test Page Type 」などとします。
完成コード
完成したコードは以下のようになります。
Loader::model('collection_types');
// install page types
$theme = CollectionType::getByHandle('c5_pkg_hikarev');
if ( !$theme || !intval($theme->getCollectionTypeID()) ) {
$theme = CollectionType::add(array('ctHandle' => 'test', 'ctName' => t('Test Page Type)),
$pkg);
}
ちなみに見て分かる通り、ctNameは t() でトランスレーションがかかっています。ここに日本語をベタ打ちせず、パッケージ内にlanguagesで翻訳ファイルを設置すればスマートです。
インストール
完成コードをパッケージの controller.php の install() に設置すれば、パッケージインストール時にオリジナルのページタイプが追加されます。