2016-08-17 102 views
1

我已經(在我的部分很少一把umbraco知識)繼承了一把umbraco系統,我目前通過「品牌」的文件看網站目前動態CSS樣式

的品牌/造型被控制的性能類型,它允許網站管理員指定背景顏色,字體等

作爲一個普遍的問題,人們如何實現這種類型的樣式,而無需網站一直進行查找以獲取各種文檔類型屬性的值?

ie:如果網站管理員將「品牌」文檔的背景顏色從紅色更改爲藍色,然後重新發佈網站/發佈網頁,那麼更改是如何傳遞給網站的CSS文件的使用?

該網站似乎是使用較少幾乎做到了「實時查詢」反對一把umbraco,這是不是很高性能的

+0

不看代碼就很難說。我的猜測是這些值沒有被合併到一個CSS文件中,而是一個內容節點被用作CSS文件,應用了一個模板?只是一個猜測,但如果我錯了,請在這裏澄清一下。 關於性能,它不應該是壞的。你有分析過嗎? Umbraco編譯成內存緩存,所以每次都沒有數據庫查找,並且在那裏的性能(一般來說)是好的。有了正確的HTTP頭文件,CSS文件也可以理想地緩存在客戶端,但這當然需要首先存在這些頭文件。 – trnelson

回答

1

作爲一個普遍的問題,人們如何實現這種類型的樣式,而無需網站一直進行查找以獲取各種文檔類型屬性的值?

如果您希望內容編輯者通過umbraco控制樣式,您肯定必須在某個時間點查看這些值。問題是如何最好地緩存數據以及如何最好地查詢它。我不會在這裏花費盡可能多的時間來緩存。根據設置的方式,您可能只能使用Html.CachedPartial(...)。至於你如何從umbraco查詢,我看到了很多代碼,看起來像這樣:

var cs = ApplicationContext.Current.Services.ContentService; 
var node = cs.GetById(nodeId); 
var value = node.GetValue("backgroundColorHex"); 

使用ContentService將命中數據庫。你不想那樣。它會減慢你的網站很多。如果您打算以編程方式編輯內容,則應該只使用ContentService。這裏將是一個更好的方式來查詢一把umbraco數據:

var node = Umbraco.TypedContent(nodeId); 
var value = node.GetPropertyValue<string>("backgroundColorHex"); 

上面的代碼使用UmbracoHelper查詢一把umbraco。由於它利用了很多umbraco內置的緩存,因此速度明顯更快。

如果網站管理員將「品牌」文檔的背景顏色從紅色更改爲藍色,然後重新發布該網站/發佈該網頁,那麼這些更改是如何傳遞給網站使用的CSS文件的?

如果你可以把它關閉,一個選項是使用剃鬚刀分配不同的類到你的html元素。您的LESS可以選擇這些課程並分配適當的樣式。這很整潔,因爲你不必編寫任何內聯的CSS。訣竅是,如果內容編輯者可以輸入ANY十六進制顏色,他們可以想象,編寫邏輯可以將這些十六進制值轉換爲類,這可能會非常嚴重。

@* Some logic here that gets the hex values from umbraco and converts the data to classes maybe? This depends on what the color data looks like *@ 
<div class="@bgColorClass @fontColorClass @borderClass"> 
    ... 
</div> 

否則,你可以寫這樣的事情

<div style="background-color:@bgColor;"> 
    ... 
</div> 

你覺得呢?讓我知道這是否會觸及現場,或者如果我錯過了您真正想知道的內容,或者我是否跳過了您感興趣的內容。