2017-03-17 52 views
0

我們目前使用博客,新聞和事件的oob頁面類型。我們爲每種類型都有一個頁面,其中包括一箇中繼器以顯示該類型的頁面列表。我們還希望有一個包含一個轉發器的頁面,該轉發器可在一個地點顯示所有博客,新聞和活動頁面,並按其創建日期排序。
我在devnet上看到了一些舊的評論(here,here),表示儘管重複器可以呈現多個頁面類型,但在每個頁面類型中呈現的字段必須相同。建議的解決方法是在每個頁面類型中創建相同的字段,或者創建自定義SQL查詢並使用查詢中繼器來呈現數據。我已經完成了這項工作,它工作得很好,但創建起來很麻煩,而且很難維護。 (例如,如果我們想添加其他頁面類型。)任何人都可以在Kentico 10中提供更多開箱即用的方法嗎?Kentico 10 - 使用中繼器顯示多種頁面類型

更新:

我想爲布蘭登·述做到這一點,但我遇到了麻煩。 我的頁面結構如下:

Root 
.RollupPage (CMS.MenuItem) 
..BlogPosts (CMS.Blog) 
...January 2017 (CMS.BlogMonth) 
....blog post 1 (CMS.BlogPost) 
...February 2017 (CMS.BlogMonth) 
....blog post 2 (CMS.BlogPost) 
..Events (CMS.MenuItem) 
...Event1 (CMS.BookingEvent) 
...Event2 (CMS.BookingEvent) 

我已經嘗試使用通用瀏覽器,但未能得到它返回任何數據。

Path: /RollupPage/% 
Page types: CMS.BlogPost;CMS.BookingEvent 
Hierarchical Transformation: CMS.MenuItem.HierTrans1 

HierTrans1具有以下變換::

我與被配置它

CMS.BlogPost.Default (Item transformation for type CMS.BlogPost) 
CMS.BookingEvent.EventCalendarItem (Item transformation for type CMS.BookingEvent) 

這些不是在所有定製;他們是標準的OOB轉換,所以我可以看到它的工作。

當我查看RollupPage時,通用查看器不顯示任何內容。

我試圖使用具有與通用查看器相同的設置的分層瀏覽器。它很有用。它顯示我的預訂活動,但沒有顯示任何博客文章。然而,使用具有分級查看器的同一博客文章轉換(CMS.BlogPost.default),其Path設置爲/RollupPage/BlogPosts/%可以正確顯示我的博客文章,但顯然未顯示我的預訂活動。

到目前爲止,我得到的結果讓我覺得a)關於我創建頁面的方式是阻止通用查看器遍歷整個樹和/或b)分層查看器要麼只是一對夫婦或者它也可能被阻止穿越樹...當我編輯或查看這些Web部件時,沒有記錄任何事件。

任何想法我可能做錯了什麼?

回答

1

可以使用層次觀衆通用觀衆分配改造,如布蘭登·Kehren提到,要實現你所描述的目標。

配置時,必須選擇所有包含在層次結構中的頁面類型,在你的情況下,網絡部分:CMS.MenuItem,CMS.Blog,CMS.BlogMonth,CMS.BlogPostCMSBookingEvent

創建分層改造與您的瀏覽器使用,並添加項目改造每個要顯示的項目。還要確保每個轉換的級別設置正確(-1將轉換應用於所有級別)。

對於通用觀衆有必要檢查屬性加載分層數據在部分擴展設定的配置時

作爲附加說明,如果您正在查看當前頁面的子文檔,可以將路徑屬性留空。

爲了參考也有在內容樹路徑示例> Web部件>清單和觀衆>頁數>分層觀察者(或通用觀察者)的公司網站例如位點的例子。

希望這會有所幫助!

3

對於此場景使用通用查看器。原因在於您可以創建一個分層轉換,對每個獨特的頁面類型進行不同的轉換。根本不會使用層次結構,但可以爲不同的頁面類型簡單地添加3個不同的項目轉換。

-1

其他途徑此

  1. 評估權fieldname通過檢查對象classname改造中,並分配相應的值。

  2. 動態通過檢查對象的類名

+0

在顯示對象列表時,您無法檢查中繼器屬性中的類名,它將始終獲取顯示列表的頁面的類名,而不是單個對象。 此外,做一個條件轉換將會起作用,而且我已經完成了它,但是如果一個開箱即用的webpart(通用查看器)可以在沒有任何編碼的情況下執行此操作,則無需編寫該代碼。 –