[レイアウトをプリセットとして保存]を非表示にしたい

2020年7月16日 at 18:50

以下を参考にpage_theme.phpでレイアウトプリセットを追加し、プルダウンから選択・追加できるようにしました。
http://concrete5-japan.org/help/5-7/developer/designing-for-concrete5/adding-complex-custom-layout-presets-in-your-theme/

この機能自体は問題なく動作しているのですが、追加したレイアウトで[レイアウトをプリセットとして保存]をクリックし、新規プリセットとして保存すると、ページの表示がおかしくなったと指摘がありました。
確認するとレイアウトを設置したページはすべて以下のような状態でした。

・読み込みが遅い
・アセットに登録したCSSやJSが読み込まれていない
・レイアウト設置部分以降が出力されていない

これはできなくても良い操作ですので、安全のため[レイアウトをプリセットとして保存]を非表示にしたいのですが、どのような方法があるでしょうか。


# concrete5 バージョン
8.5.1

# PHP バージョン
PHP7.4.4

# サーバー
エックスサーバー

タグ:

Re: [レイアウトをプリセットとして保存]を非表示にしたい

2020年7月16日 at 19:45
/concrete/elements/block_area_footer.php

/application/elements/
以下にコピぺしてオーバーライド状態に。

上記オーバーライドファイルの74行目をコメントアウト
<li><a class="dialog-launch" href="<?= URL::to('/ccm/system/dialogs/area/layout/presets', $arLayout->getAreaLayoutID()) ?>" dialog-title="<?= t('Save Layout as Preset') ?>" dialog-width="360" dialog-height="300" dialog-modal="true"><?= t("Save Layout as Preset") ?></a></li>

ってな感じでいかがでしょうか。
 

Re: [レイアウトをプリセットとして保存]を非表示にしたい

2020年7月17日 at 12:06
aniya様

ご教示いただきました方法で[レイアウトをプリセットとして保存]を非表示にすることができました。
今回もありがとうございました。


本件とは直接関わりないのですが1点お尋ねしてもよろしいでしょうか。
この環境は8.5.1ですが、8.5.4の当該ファイルでは19行目が変更されているようです。

$u = new User();

$u = Core::make(Concrete\Core\User\User::class);

こうした変更の意味するところは当方には勉強不足で分からないのですが、オーバーライドでセキュリティに関わる重要な変更が適用されなくなる可能性はあるのでしょうか。

現在オーバーライドしているファイルでは、本体アップデートの度にコアの差分を確認し取り込むよう努めていますが、オーバーライド箇所が増えるとなかなかの作業量です…
ブロックでもデフォルトテンプレートをコピーしてオーバーライドしたり、カスタムテンプレートとして追加している方は大勢いらっしゃると思います。
皆さんも同じような手順で保守をされているのでしょうか?
 

Re: Re: [レイアウトをプリセットとして保存]を非表示にしたい

2020年7月17日 at 14:34
> オーバーライドでセキュリティに関わる重要な変更が適用されなくなる可能性はあるのでしょうか。

私も勉強不足で分からないのですが、意味もなく変更することはないと思いますので、
アップデート時にはオーバーライドしたファイルも更新した方が良いと思います。

で、私はあまりオーバーライドもカスタムテンプレートの追加もしない方でして、
というかbootstrapもjQueryも基本的に使わない全く参考にならない人なので…
皆さんの動向もよくわかっておりません。
保守の手順などはユーザーグループのコアの方々とかエバンジェリストの方々とか翻訳とか勉強会開いている方々にお任せしたいと思います。
ごめんなさい。

本筋に戻りますが、非表示にするだけでしたらcssで行うことも可能です。
メンテを考えたらオーバーライドよりも楽かも?

a[href*="/ccm/system/dialogs/area/layout/presets/"] {
display: none !important;
}

上記を現在適用しているcss(less)ファイルに書き込んでください。
ただ上記だけだと「プリセットを管理」も非表示になってしまいますので、
「プリセットを管理」を表示したい場合は下記も加えてください。

a[href*="/ccm/system/dialogs/area/layout/presets/manage"] {
display: block !important;
}

con5バージョンアップの際、復活して表示されるようでしたら
適宜URLを書き換えてください。

ってな感じでいかがでしょうか。
 

Re: [レイアウトをプリセットとして保存]を非表示にしたい

2020年7月17日 at 19:47
CSSでも非表示にすることができました。
仰る通りアップデートに伴う仕様変更で参照先が部分一致しなくなる可能性はありますが、コアの差分を確認してオーバーライドファイルへ取り込むよりは手軽に対応できそうです。
小さな作業でも積もれば割とまとまった工数になりますので、とても参考になりました。

当方のレベルですと、できる・できないで言えばできるものの、実際やると保守が大変というケースに遭遇することが多く悩ましいです…
度々お付き合いいただきましてありがとうございました。