WorkToolSmith

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

太田アベル

・ 更新 ・ 2分で読めます

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

太田アベル

太田アベル

パソコンを7歳からいじり始めて40年。とにかくパソコンが好きです。気になった商品をほぼ自腹で買いまくってレビュー中!良かった点、悪かった点をズバズバ書きます。

こちらもおすすめ