2012-11-27 22 views
5

對於我的基於ASP.Net-Tridion2011供電的現場,我需要更換標準產生< 的tridion:ComponentLink />一些< 定製: ComponentLink />。什麼是覆蓋在命名空間中的最簡單的方法<套上:ComponentLink />

(假設此自定義控件的語義是相同的,那就是:只需要更換命名空間部分)

會是怎樣做到這一點的最簡單和侵入性最小的方法是什麼?

我的猜測是我應該實施一個替代標準LinkTagHandler。這是對的嗎?

該解決方案唯一的[infinitesimal]缺點是它需要顯式配置cd_deployer_conf中的所有標記處理程序。

編輯

找到一個愚蠢的簡單的解決方案就走樣命名空間的非常具體的任務:

<TCDLEngine> 
    <Properties> 
     <Property Name="aspnet.tagprefix" Value="custom"/> 
    </Properties> 
</TCDLEngine> 

通過一個幸運的機會,我所有的<tcdl:../>標籤得到映射到<custom:../>,否則,這個小騙子不會工作。

總的來說,我比較贊成彼得和創建自定義戰術通用數據鏈標籤處理器的努諾的建議的..

(只需要我的懶惰:-)險勝。

EDIT 2

哎呀,剛纔注意到,該努諾表明正是以上!

回答

4

您可以通過在cd_deployer_conf(在TCDLEngine元素中)更改前綴來輕鬆控制前綴。

顯然,您需要照顧爲該前綴實現控件/標記處理程序,並重新發布每個應該使用它的頁面/ dcp。

5

是的,我建議創建自己的TCDL標記處理程序來輸出自定義控件而不是默認值。但是,還有一個潛在的缺點:您需要重新發布您的頁面/組件才能生效。

0

當然,你根本不需要使用TCDL。直接從您的模板發出所需的代碼。唯一需要爲此使用TCDL的時間是,如果您一般都需要針對多個前端平臺。

+0

多米尼克,這就是我最初做的。但是..還有另一個原因*不是*將技術特定的指令包含到模板中:RTF字段內的組件鏈接。它們默認由Link Resolver TBB進行處理,這是相當單片的代碼。因此,在CM方面保持技術不可知論似乎是理智的。 – esteewhy

+0

然後取出鏈接解析器。你不需要它 –

相關問題