2012-05-22 52 views
8

可以說我有使用一組模式的組件,並且該組件用於具有兩個相對的分量模板中,例如連接:動態成分使用2個模板

組件:產品A

模板中的一個:產品營銷

模板二:產品支持

通過動態鏈接部分,我希望能夠使用該組件的中醫URI指定一個超鏈接內容所在(使用Dreamweaver模板,即<a href="tcm:11-xxxx">Link text</a>

問題是,如果鏈接正在生成到我正在處理的網站的錯誤部分,即鏈接到產品營銷部分中的產品支持,反之亦然。

我已經嘗試設置模板的鏈接優先級......都設置爲高....但Tridion似乎使用最後發佈的模板來決定鏈接應該去哪裏。

另外,如果我將其中一個模板設置爲中等,另一個設置爲高,則只需使用具有最高優先級的模板鏈接到內容(即所有鏈接都轉到產品支持,即使在產品營銷部分)

有誰知道如何解決這個問題?謝謝!

回答

8

除了Chris的評論,您可以使用tridion:excludetemplateuri屬性來精確地控制您可以鏈接到哪個組件模板,具體取決於您的需求是營銷還是支持。

在DWT ..你可以使用這樣的東西。

<a tridion:href="tcm:8-299" tridion:excludetemplateuri="tcm:8-420-32">linkText</a> 

這裏是link for reference

+0

這就是我要找的!感謝Chris的解釋,它有助於評估問題是什麼,因爲我有其他使用產品模式的模板需要優先級調整 –

+1

請小心使用excludetemplateuri屬性。在實施Tridion的12年中,我從未需要它。在我看來,它只能用於異常管理的極端情況。模板中的硬編碼URI可能會在遷移和調試時引入各種遷移問題 - 僅需我的2美分 –

+2

Chris,我們在我們的項目中使用了它們,並且具有類似用例的獨特需求。我們沒有對它們進行硬編碼,但是我們有一個C#TBB,它具有帶有webdav URL的參數架構,該URL解析爲TCM ID並設置一個包變量。 @Richard,正如克里斯提到的,你不應該在DWT中硬編碼模板ID。您應該使用Webdav URL和C#TBB將WebDav URL轉換爲TCMID。 –

8

您的問題與發佈的組件演示的上下文有關。支持SDL Tridion解決爲目標CP的優先級如下(其中只移動到下一個步驟,如果有一個以上的比賽):

  1. 查找具有最高優先級的CP(你有2個優先級高)
  2. 通過查看當前結構組(SG),子SG,兄弟SG等(您在此處似乎也有2個),查找離當前頁面最近的一個。
  3. 最後的後備場景是它鏈接到最近發表的一個(這是你所看到的)

這是常模由於您有一個動態組件演示文稿(DCP)實際上不在頁面上,或者由於某種原因頁面ID未在您的鏈接代碼中設置,因此它無法計算當前CP的位置,因此必須從上面跳過步驟(2)。

這可能不會幫助你解決你的問題,但它確實解釋了你所看到的。因此,我可以提供更多的幫助,請解釋您發佈的內容(是DCP嗎?),並可能查看發佈的代碼,並檢查是否已將Page URI添加到鏈接代碼中(並確保它不是tcm :0-0-0)。

+2

事實上,「近水樓臺」的算法可能是一個不錯的選擇這裏。帶有鏈接的頁面是否與需要鏈接的渲染位於網站的相同部分中? –

+2

我在CreateAndBreak.net上描述了鄰近順序(http://www.createandbreak.net/2012/05/how-to-remember-tridion-dynamic-linking.html)。不過,我不知道關係。好信息! –