記事にカスタムテンプレートを指定すると、concrete5のシステム全部にテンプレートが適用される

2017年9月28日 at 1:16

concrete5-8.2.1/application/blocks/content/templates/text_h1/
に、view.php 、view.cssを配置

その後、一つの記事ボックスにカスタムテンプレート『text_h1』を適用。
何故か、システムにまで、適用される。(添付画像参照)
その記事のカスタムテンプレートの指定を解除しても、元の状態に戻らない。
キャッシュクリア済み。

理由がお分かりでしたら、教えてください。

以下のフォルダは触っていません。
concrete5-8.2.1/concrete/blocks/content/


view.php
<?php
defined('C5_EXECUTE') or die("Access Denied.");
$c = Page::getCurrentPage();
if (!$content && is_object($c) && $c->isEditMode()) {
?>
<div class="content-text-h1"><?php echo t('Empty Content Block.')?></div>
<?php
} else {
echo $content;
}


view.css
p{
font-size: 1.6rem;
text-align: center;
background: linear-gradient(transparent 50%, #E4BC96 0%);
line-height: 1.3em;
border-radius: 5px 10px 5px 10px;
}

添付: 07.png
タグ:

Re: 記事にカスタムテンプレートを指定すると、concrete5のシステム全部にテンプレートが適用される

2017年9月28日 at 10:36
aboさま

何故か、システムにまで、適用される。

カスタムテンプレートを適用すると view.css を読み込みます。
そのページのすべての『p』タグにスタイルが適用されますので、動作としては正常です。

カスタムテンプレートを適用していないページは、スタイルは適用されません。
カスタムテンプレートの『p』タグだけにスタイルを適用するのであれば、『.hogehoge p』のような記述にする必要があります。

その記事のカスタムテンプレートの指定を解除しても、元の状態に戻らない。

試してみましたが、カスタムテンプレートを解除するだけで、元に戻りました。

よろしくお願いします。
 

Re: 記事にカスタムテンプレートを指定すると、concrete5のシステム全部にテンプレートが適用される

2017年9月29日 at 0:40
nipper様

ご返答ありがとうございます。

ブロックに対するカスタムテンプレートの適用は、何も指示(指定)しなくても
その指定したブロック内にのみ適用されるのかと思っていました。

カスタムテンプレートの指定を解除後、
「変更を保存」を行ったところ、画面上の表示も解除されました。
別なカスタムテンプレートを指定すれば「変更を保存」しなくても、
表示上、適用されるのに解除はダメなんですね。

どちらも何となく変な気がしますが元に戻せたので良しとします。

有難うございました。
 

Re: 記事にカスタムテンプレートを指定すると、concrete5のシステム全部にテンプレートが適用される

2017年9月29日 at 10:09
aboさま

その指定したブロック内にのみ適用されるのかと思っていました。

普通はそう思いますよね。
でも、これは concrete5というより、スタイルシート(css)に関係することですから、『p』タグを使っているところ全部に提要されちゃいます。
 

Re: 記事にカスタムテンプレートを指定すると、concrete5のシステム全部にテンプレートが適用される

2017年9月29日 at 0:59
以下の様に『.content-text-h1 p』
ブロック内の記事のみに指定しようとしてみましたが、
なぜか適用されません。
何がまちがっているのでしょうか。

view.css
.content-text-h1 p{
font-size: 1.6rem;
text-align: center;
background: linear-gradient(transparent 50%, #E4BC96 0%);
line-height: 1.3em;
border-radius: 5px 10px 5px 10px;
}
 

Re: 記事にカスタムテンプレートを指定すると、concrete5のシステム全部にテンプレートが適用される

2017年9月29日 at 2:26
view.php を下記の様に修正したら『記事』のみに適用出来ました。
なんだか無理やりの様な気がしますが合っているのでしょうか。

<?php
defined('C5_EXECUTE') or die("Access Denied.");
$c = Page::getCurrentPage();
if (!$content && is_object($c) && $c->isEditMode()) {
?>
<div class="ccm-edit-mode-disabled-item"><?php echo t('Empty Content Block.')?> </div>
<?php
} else {
?>
<div class="content-text-h1"><?php echo $content ?></div>
<?php
}
 

Re: 記事にカスタムテンプレートを指定すると、concrete5のシステム全部にテンプレートが適用される

2017年9月29日 at 2:29
view.php を下記の様に修正したら『記事』のみに適用出来ました。
なんだか無理やりの様な気がしますが合っているのでしょうか。

<?php
defined('C5_EXECUTE') or die("Access Denied.");
$c = Page::getCurrentPage();
if (!$content && is_object($c) && $c->isEditMode()) {
?>
<div class="ccm-edit-mode-disabled-item"><?php echo t('Empty Content Block.')?> </div>
<?php
} else {
?>
<div class="content-text-h1"><?php echo $content ?></div>
<?php
}
 

Re: 記事にカスタムテンプレートを指定すると、concrete5のシステム全部にテンプレートが適用される

2017年9月29日 at 10:14
aboさま

いいと思いますよ。
もしくは、
<?php
defined('C5_EXECUTE') or die("Access Denied.");
$c = Page::getCurrentPage();
?>
<div class="content-text-h1">

<?php if (!$content && is_object($c) && $c->isEditMode()) {
?>
<div class="ccm-edit-mode-disabled-item"><?php echo t('Empty Content Block.')?></div>
<?php
} else {
echo $content;
}
?>
</div>

ですかね。
 

Re: 記事にカスタムテンプレートを指定すると、concrete5のシステム全部にテンプレートが適用される

2017年9月30日 at 1:27
nipper様

ご返信ありがとうございます。

そういう挟み方もありなんですね、ご提示の方法の方がシンプルの様な気がします。

ブロック単位で指定するようにできているなら、
カスタムテンプレートにおけるCSSの指定はブロックのみに適応されて、
その結果がconcrete5から出力されるべきだと思いますが。
class属性をconcrete5が強制的に書き換えてでも。