Concrete5のページタイプをパッケージから追加する

Concrete5タイトル

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() に設置すれば、パッケージインストール時にオリジナルのページタイプが追加されます。 image