2012-02-22 56 views
1

我在主頁上有幾張圖片,我希望客戶端能夠不時更改圖像。現在他們都硬編碼爲:具體5塊屬性

<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

像在代碼示例中那樣使用setBlockWrapperStart和setBlockWrapperEnd是在C5中執行此操作的正確方法。用這種方法你遇到了什麼問題? – 2012-02-22 20:42:51

回答

0

我沒有看到使用setBlockWrapperStart()setBlockWrapperEnd()這是他們的目的。

但是,如果因爲某種原因需要備用解決方案,則可以改爲對文件集進行硬編碼,並讓用戶通過文件管理器替換該設置的映像。

或者您可以對剪貼簿塊(如果使用5.4或更低版本)或堆棧(如果使用5.5或更高版本)進行硬編碼並讓用戶通過儀表板剪貼簿(5.4)或儀表板堆棧(5.5)屏幕編輯圖像。

如果你想要這些方法的代碼示例,讓我知道,我會修改我的答案。但請首先使用原始的setBlockWrapper方法解釋問題,以便我瞭解您遇到的具體問題。

+0

我只是想將這個類添加到'img'元素而不把它們全部放在div中,以保持代碼輸出更清晰。我不需要'setBlockWrapperStart'和'setBlockWrapperEnd',我只是想知道是否有類似的方法,你可以讓每個元素都有這個類。對不起,如果我不夠清楚。當然這在我看來是有道理的,但我猜不出來! :) – ansarob 2012-02-22 21:40:09

+0

無法從模板本身設置塊的類,因爲每個塊都有不同的HTML輸出。但是,您可以自定義圖像塊的模板。將'SITEROOT/concrete/blocks/image/view.php'複製到'SITEROOT/blocks/image/view.php'(你需要先創建blocks/image目錄),然後在那裏編輯文件並修改HTML 。但我不認爲在這些街區附近有一個包裝師的東西真的不好 - 我知道你的口味可能會有所不同。 – 2012-02-23 22:31:06

2

是的,可能有一種方法可以通過setCustomTemplate方法爲Area類實現您正在嘗試執行的操作。

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

然後在您的templates/welcome-photo.php文件中,您可以根據需要爲這些圖像設置一個包裝。但請注意,這只是爲該區域中的任何類型的圖像塊(在此示例中)設置了默認模板,但可以通過編輯界面覆蓋它。