Concrete5 5.6にてダッシュボードかどうかの確認方法

情報がなくて、自分はソースを見て確認したので、一応、備忘録と情報共有のために記述。

編集画面にいるかどうかの判断は、下記のページのチートシートある通り、isEditMode()で確認できます。

http://www.webli.us/cheatsheet/doku.php#add_space_between_blocks_in_edit_mode

ただ、今回、5.7のElmentalテーマを5.6に適用するに当たり、ダッシュボードと通常状態でのjqueryのバージョン切り替えが必要でした。
しかし、ダッシュボードにいるかどうかを確認する方法がネット上やフォーラムで見当たらず、ソースで見つけたので、備忘録と情報共有のために記しておきます。

[php]
$dh = Loader::helper(‘concrete/dashboard’);
if ($dh->inDashboard()) {
//現在のページがダッシュボードの場合に実行
}
[/php]

 

 

 

Concrete5 ver5.7のElementalテーマをパッケージ化してみました。

Concrete5 ver5.7Elementalテーマをパッケージ化してみました。

 

これにより、メインシステムへの依存が低くなり、バックアップや複製、移転なども容易になります。

 

こんな感じになります。上が従来のElementalで、下が、今回、パッケージ化したElementalです。

2015-01-25_18h42_37

 

実際適用しても、元のElementalと変わりありません。

2015-01-25_18h43_21

 

 

自分用の備忘録のため、その方法を以下に記述します。

 

始めに、パッケージ名を適当にCelementalとしました。

 

まず、packagesフォルダの下に、celementalというフォルダを作ります。

 

その下に、以下の内容の、controller.phpというファイルを作ります。
[php]
<?php
namespace Concrete\Package\Celemental;
use Package;
use PageTheme;
use BlockTypeSet;
use CollectionAttributeKey;
use Concrete\Core\Attribute\Type as AttributeType;

defined(‘C5_EXECUTE’) or die(_("Access Denied."));

class Controller extends Package
{

protected $pkgHandle = ‘celemental’;
protected $appVersionRequired = ‘5.7.1’;
protected $pkgVersion = ‘1.0’;

public function getPackageDescription()
{
return t("May your business be Celemental");
}

public function getPackageName()
{
return t("Celemental");
}

public function install()
{
$pkg = parent::install();

PageTheme::add(‘celemental’, $pkg);

$imgAttr = AttributeType::getByHandle(‘image_file’);
$thumb = CollectionAttributeKey::getByHandle(‘thumbnail’);
if(!is_object($thumb)) {
CollectionAttributeKey::add($imgAttr,
array(
‘akHandle’ =&gt; ‘thumbnail’,
‘akName’ =&gt; t(‘Thumbnail Image’),
),$pkg);
}
}
}

?>
[/php]
通常、同じフォルダ内に、icon.pngという名前でパッケージ用のアイコンを割り当てますが、無くても大丈夫です。

 

celementalの下にthemesフォルダを作ります。

 

さらに、そのthemesフォルダの下にcelementalフォルダを作ります。

 

そこに、/concrete/themes/elementalの中身を全てコピーします。

 

 

パッケージ用にコピーした中身を修正していきます。

 

page_theme.phpnamespaceを以下の内容に差し替えます。

 

元の記述
[php]
namespace Concrete\Theme\Elemental;
[/php]

修正した記述
[php]
namespace Concrete\Package\Celemental\Theme\Celemental;
[/php]
 

 

下記のmixins.lessファイルをコピーして、

/concrete/css/build/core/include/mixins.less

 

下記の位置に貼り付けます。

(buildの下にincludeというフォルダを事前に作ります。)

/packages/celemental/themes/celemental/css/build/include/

main.lessの以下の@importを差し替えます。

 

元の記述
[php]
@import "../../../css/build/core/include/mixins.less";
[/php]

修正した記述
[php]
@import "./build/include/mixins.less";
[/php]
 

 

このパッケージをアップします。

 

管理画面を出して、「concrete5を拡張」をクリックすると、下記のようにインストール待ちのところに作ったCelementalが設置されているので、インストールをクリックします。

2015-01-25_18h37_52

 

下記のような表示が出て、インストールが完了します。

2015-01-25_18h38_26

 

次に管理画面の「ページとテーマ」をクリックすると、下記のようにテーマが追加されているので、有効をクリックします。

2015-01-25_18h39_58

 

下記のように適用するか確認する画面が表示されるので、「はい」をクリックします。

2015-01-26_12h48_47

 

下記表示がでてきて、テーマの適用が完了します。

2015-01-25_18h42_01

 

 

一覧に戻ると、実際に適用されています。

2015-01-25_18h39_58

 

以上です。

 

 

あと、Elementalをバージョン5.6用のパッケージにもしてみましたが、これは、かなり複雑になりましたので、サンプルページの公開のみにいたします。

http://test.confeb.net/c56/

lessの移植は難しくなかったのですが、bootstrapの部分の移植がjqueryのバージョン違いなどがあり、かなり困難でした。)

ただ、メインのカルーセルの部分は移植していないので、見た目が全然違いますが、幅を縮めると、レスポンシブの動作をします。
それと、ブロック自体はVer5.6そのままなので、その分、少し挙動がおかしいです。