我已經爲PageList塊創建了自定義模板,並且需要使用它來獲得所需的視覺效果。用戶需要有可能將頁面的新實例添加到頁面中(它們被用作輪播插件的幻燈片),但在這種情況下,他需要記住每次在新塊實例(新建)時將塊模板從默認更改爲自定義塊幻燈片)被添加。Concrete5 - 如何強制自定義模板?
有什麼辦法強制concrete5自動使用自定義塊模板,而不是默認的嗎?
我已經爲PageList塊創建了自定義模板,並且需要使用它來獲得所需的視覺效果。用戶需要有可能將頁面的新實例添加到頁面中(它們被用作輪播插件的幻燈片),但在這種情況下,他需要記住每次在新塊實例(新建)時將塊模板從默認更改爲自定義塊幻燈片)被添加。Concrete5 - 如何強制自定義模板?
有什麼辦法強制concrete5自動使用自定義塊模板,而不是默認的嗎?
是的,你可以在每個區域基礎上執行此操作。在主題的頁面類型模板中,找到您想要強制執行此自定義模板的可編輯區域的代碼,並調用setCustomTemplate
函數。例如:
$a = new Area('Main');
$a->setCustomTemplate('page_list', 'templates/your_custom_template');
$a->display($c);
第一個參數是要將此應用到塊blocktype手柄,第二個參數是自定義模板(注意,不一個.php
延伸在結束 - C5系統會自動添加)。
這很可能,前段時間我做了這個工作。希望下面的鏈接可以幫助你開始。在中間附近有一個叫Override and Modify的部分,儘管你可能需要瀏覽其他部分才能知道他們指的是什麼。
這也可能會有所幫助:
http://www.concrete5.org/documentation/how-tos/designers/change-how-a-block-looks-templates/
所以,你的意思是簡單地將我的自定義模板代碼放入 –
'/ blocks/block_name/view.php'而不是'/ blocks/block_name/templates/template_name/view.php'會解決這個問題嗎? –
如果是的話,那肯定是值得記住的事情,但在這種情況下,它不會是理想的解決方案 - 這是關於在多個地方使用的PageList塊,我有兩個自定義模板用於網站的不同位置用於旋轉木馬插件的不同模板以及不同的部分內的最新文章的典型列表)。我希望能夠使用它們,覆蓋將與編輯原始的'view.php'文件幾乎相同(當CMS正在更新時,沒有被覆蓋的風險) –
,當我使用第二個參數作爲'templates/your_custom_template'時,這個問題解決爲'ROOT/blocks/block_name/templates/your_custom_template' - 我的理解是否正確? –
使用通常的C5級聯覆蓋規則解決第二個參數...首先,它在'ROOT/blocks/block_name /'中查找,如果它沒有找到任何內容,那麼它會在ROOT/packages/*/blocks/block_name /',如果它沒有在任何包中找到任何東西,那麼它會在'ROOT/concrete/blocks/block_name /'中查找。在這些目錄中,它會查找'/ templates/your_custom_template.php',因爲我們傳遞了'templates/your_custom_template'。請注意,在這種情況下,'templates'目錄沒有什麼特別之處......只是因爲我們把'templates /'放在第二個arg中。 –
謝謝,那就是我一直在尋找的。 –