2012-05-09 37 views
17

我試圖在Tridion 2011 SP1中創建一個自定義部署器,該部署器可以將組件索引到solr實例一旦發佈。一切工作正常,但我已經遇到了索引組件字段的方式有點問題。從自定義部署器訪問組件的字段

我可以通過使用Component.getCustomMeta()方法並解析XML來訪問元數據字段。但是,如果不讀入正在輸出的文件並解析輸出,則訪問正常字段似乎是不可能的。這不是完全可行的,因爲標記可能會發生變化,而且似乎還有很長的路要走(希望)做一件簡單的事情。

我有一個拖網通過文檔,似乎沒有任何可用的字段值,所以我在這裏輸了,將需要解析輸出或我在某處丟失的東西?

回答

12

內容字段在傳遞方面沒有公開,內容暴露爲「內容」,這並不奇怪。

如果你真正需要的字段,你需要:

  1. 產生「可解析」的輸出爲組件演示
  2. 解析組件演示,因爲他們得到了出版。

查看類似方法的實現,如DD4T

總之 - 你不能這樣做,因爲Tridion不會將它暴露在外。唯一的方法是通過模板更改內容輸出格式。

4

我們已經完成了替代解決方法來實現類似的要求。實現中的一個缺點是額外呈現XML中的組件呈現和代理中的xml存儲的副本。

這是我們所做的:

  1. 創建一個動態CT(內容XML表示)GetComponentAsXML並映射到所有模式
  2. 所有的頁面模板有一個C#TBB中查找的內容我們需要推到SOLR
  3. C#TBB確實與上述動態CT GetComponentAsXML的RenderComponentPresentation,這推動XML(engine.RenderComponentPresentation(component.Id,componentTemplateURI)
  4. 部署現在得到XML格式的內容,在除了其他類型的組件演示文稿(如ascx,emebedded頁面等)。

希望此信息有所幫助。

+0

感謝拉姆,這看起來像一個合理的方式去。我目前正在研究事件系統來綁定頁面和動態CP的發佈/取消發佈事件處理程序。它似乎會好起來,但如果它失敗了,我會看看你所描述的東西 – ajwhitehead88

相關問題