自從今天上午以來,我一直在試圖解決這個問題,並且我知道我錯過了某些明顯的東西,但我似乎無法找到它。在組件鏈接中使用翻譯字符串
我們正在使用發佈到服務器的XML文件,該文件包含所有標準單詞的翻譯,例如'閱讀更多'。它是一個組件在適當的出版物中本地化的頁面。
在我們的Razor模板中,我們在普通新聞摘要項下面使用以下代碼,然後鏈接到完整的項目。
<a tridion:href="@news.ID" class="more" ><%=DefaultLabels.TranslatedTerm(((HomePage)Page).Location, "read_more")%></a>
事情是,服務器標籤工作得很好,但被解析爲
<tridion:ComponentLink runat="server" PageURI="tcm:15-407-64" ComponentURI="tcm:15-1475" TemplateURI="tcm:0-0-0" AddAnchor="false" LinkText="<%= DefaultLabels.TranslatedTerm(((HomePage)Page).Location, "read_more") %>" LinkAttributes=" class="more"" TextOnFail="true"/>
正如你可能已經注意到,它就會被寫在頁面上純文本(這並不足爲奇,因爲連結文字參數根據liveDocs首先聲明爲String)。
如果我帶走
tridion:href
在第一個例子
,並把它寫成
href
它工作正常,代碼解析爲翻譯後的字符串和它甚至鏈接...無非是組件的TCM ID,而不是包含全部新聞項目的正確頁面。
我試過在Razor中創建一個函數,試圖替換linkText,試圖在模板本身中設置ComponentLink,但無濟於事。我覺得應該對這個模板的代碼做一些小的調整,但是我沒有看到它,並且我開始考慮定製的TBB來處理代碼。
任何人都有一個想法如何解決這個問題?
編輯:
克里斯的回答竟是一個我一直在尋找在這個特殊的情況,但我覺得我應該指出的是,Priyank的功能是什麼,也應該被看作是這樣。所以謝謝你們的幫助,現在讓我的生活更輕鬆一些!
Chris,你能解釋爲什麼我不應該使用默認模板來解析鏈接,而是使用這個語法嗎?那麼輸出TCDL呢?謝謝。 – MDa
默認的「解析鏈接TBB」查找所有包含TCM URI的鏈接,並將它們轉換爲TCDL,稍後將其轉換爲REL,JSP,ASP.NET等。它通過將鏈接文本放入屬性中來構建TCDL這對你而言並不是由你的ASP.NET控件執行的)。爲了讓代碼執行,最簡單的方法是在標籤主體(而不是屬性)中使用鏈接文本(或者在您的情況下使用一些代碼)。我提供的代碼直接提供了對ComponentLink服務器控件的引用,如果該控件不在屬性中,它將從控件正文加載鏈接文本。 –