2012-12-10 34 views
5

在Tridion 2011中 - 什麼是實現以下目標的最佳方式: 在創建編輯現有頁面的新頁面時,當編輯器選擇頁面模板時,我們是否可以自動設置關聯的頁面元數據模式。因此,基本上定義一個PT和元數據模式的一對一關聯作爲使用它。在選擇頁面模板時填充頁面元數據模式

+0

有趣的問題,我們會感興趣您在提交到[51區外表套上具體提案](http://area51.stackexchange.com/proposals/38335/tridion?referrer=gPujQMxthNCNn9xqeeO2NA2)。如果您有時間,請使用同一個SO帳戶註冊。 –

+0

完成了,已經巴特:)我完全支持 –

回答

7

我可以看到這些選項:

  1. 事件處理程序,請參閱該文檔here(登錄所需)
  2. 數據擴展器,請參閱該文檔here(登錄需要)
  3. 客戶端端GUI擴展

這些擴展點中的每一個在StackOverflow和外部博客文章中的前面的問題中都有介紹。這些可能會成爲他們每個人可能/可行的附加「文檔」。

所有這些都有自己的優點和缺點。哪一個最適合你,實際上取決於你的具體要求,你對教育用戶的意願以及最終實現和維護它的開發者的技能。

事件處理程序和數據擴展程序在服務器上運行,並用C#編寫,這意味着它們通常更易於開發和調試。客戶端GUI擴展爲用戶提供了對用戶界面的全面控制,但是這種控制是有代價的:它們對於大多數開發人員來說具有更高的學習曲線。

更新 要在GUI中的頁面模板的變化作出反應,就可以使用這樣的事情:

var c = $display.getView().properties.controls; 
$evt.addEventHandler(c.PageTemplate, 'change', function() { 
    console.log(c.PageTemplate.getValue()); // the newly selected Page Template 
    c.MetaSchemaDropdown.setValue('tcm:10-2103-8'); // the corresponding Metadata Schema 
}); 
+0

謝謝弗蘭克。事件系統沒有像:OnPagetemplateSelectPre。所以這可能不是問題。第二個地方是數據擴展器,看起來像是一個很好的鉤子來放置我的代碼,併爲每個PT返回一個稱爲元數據模式的額外字段。問題是如何修改數據擴展器返回的元數據模式的問題。我在客戶端安圭拉的例子有幾個鏈接,並寫了幾個。但是在這個主題附近還沒有得到任何安圭拉的例子,例如自動更新元數據模式。如果你有或可以找到任何會很棒的。 –

+1

您可能可以創建一個Anguilla事件處理程序,用於監聽頁面模板下拉列表中的更改(「更改」事件),然後基於此執行。編輯器選擇模板後,請注意改變的內容,填寫一些元數據,然後選擇一個不同的模板(您可能會覆蓋以前的數據) –

+0

關於事件系統:我將檢查的事件是LoadEventArg。 – Quirijn