2012-02-22 10 views
1

私はホームページにいくつかの画像を持っており、クライアントが時々画像を変更できるようにしたい。今彼らは、ハードのようにコーディングされています。私は、彼らが写真を変更することができ、新たなブロック領域に設定するとConcrete5ブロックアトリビュート

<img src="<?=$this->getThemePath()?>/img/welcomePhoto1.jpg" alt="" class="welcome-photo" />

、私は彼らが画像を変更するたびにブロックがクラスを保持することを確認することができます。 UIを使ってクラスを追加するのは本当に好きではありません(良い習慣だとは思わない)。私はあなたがこのようにブロックをラップすることができます知っている:

<?php 
$a = new Area('sidebar'); 
$a->setBlockWrapperStart('<div class="box">'); 
$a->setBlockWrapperEnd('</div>'); 
$a->display($c); 
?> 

$a->setBlockClass('welcome-photo');ような彼らの何かか?

+0

C5でこれを行う適切な方法は、コードサンプルのようにsetBlockWrapperStartとsetBlockWrapperEndを使用することです。そのアプローチであなたが抱えている問題は何ですか? –

答えて

0

setBlockWrapperStart()setBlockWrapperEnd()を使用しても何も問題はありません。これはそのためのものです。

しかし何らかの理由で代替ソリューションが必要な場合は、代わりにファイルセットをハードコードし、ユーザーがファイルマネージャを使用してそのセットのイメージをスワップさせることができます。

またはスクラップブックブロック(5.4以下の場合)またはスタック(5.5以上を使用する場合)をハードコードし、ユーザーにダッシュボードスクラップブック(5.4)またはダッシュボードスタック(5.5)画面で画像を編集させることができます。

これらのアプローチのいずれかのコードサンプルが必要な場合は、教えてください。私はその答えを修正します。しかし、あなたのオリジナルのsetBlockWrapperの方法で問題を説明してください。そのため、あなたは特定の問題を理解しています。

+0

私はちょうどクラスを 'img'要素に追加したいと思っていましたが、コード出力をよりきれいに保つためにdivのすべてを投げることはありません。私は 'setBlockWrapperStart'と' setBlockWrapperEnd'を必要としません、私はちょうどあなたが各要素にそのクラスを持たせることができる同様のアプローチがあるのだろうかと思っていました。申し訳ありませんが私は十分に明確でない場合。それは私の心の中でもちろん理にかなっていますが、私はそれを私が推測することはできません! :) – ansarob

+0

ブロックごとに異なるHTML出力があるため、テンプレート自体からブロックのクラスを設定する方法はありません。しかし、画像ブロックのテンプレートをカスタマイズすることができます。 'SITEROOT/concrete/blocks/image/view.php'を' SITEROOT/blocks/image/view.php'にコピーしてください(最初にブロック/イメージディレクトリを作成する必要があります)。 。しかし、私はそれがブロックの周りにラッパーdivを持っていることは悪いとは思わない - あなたの好みが異なるかもしれないことを理解します。 –

2

ええ、あなたは、AreaクラスのsetCustomTemplateメソッドによって何をしようとしているのかを達成する方法があるかもしれません。あなたが望むよう

$m = new Area('Main'); 
$m->setCustomTemplate('image','templates/welcome-photo.php'); 
$m->display($c); 

は、その後、あなたのテンプレート/歓迎-photo.phpファイル内で、あなたはそれらのイメージの周りにラッパーを設定することができます。ただし、これは、その領域の 'image'タイプのブロック(この例では)のデフォルトテンプレートを設定するだけですが、編集インタフェースで上書きすることができます。