2012-05-31 126 views
4

在自定義ContentPart的模塊中,如何將字段設置爲文本字段?Orchard CMS 1.4:將文本字段添加到自定義ContentPart

在我migrations.cs類,我創建了表的一部分:

public int UpdateFrom1() 
     { 
      SchemaBuilder.CreateTable("RightContentPartRecord", table => 
       table.ContentPartRecord() 
        .Column<string>("Html"));              
      return 2; 
     } 

所以,我有一個稱爲HTML列。我想使用所見即所得的編輯器,所以我被告知我需要一個文本字段才能使它「開箱即用」。

但是,這不會發生在我身上,所以我需要做些什麼才能將名爲Html的列轉換爲零件上的文本字段?

我該如何配置它以使用所見即所得的編輯器?

回答

5

文本字段與部件屬性不同。字段不作爲自己的數據庫列存儲。下面是如何將一個字段從遷移添加到零件的例子:

 ContentDefinitionManager.AlterPartDefinition("Product", 
      builder => builder.WithField("ProductImage", fieldBuilder => fieldBuilder.OfType("MediaPickerField").WithDisplayName("Product Image"))); 

對於文本字段,你想也需要通過添加.WithSetting("Flavor", "html")到外地生成器來設置風味設置。

+0

謝謝我已經到了那裏,現在我的問題是,由於該字段不是該部分的模型的一部分,因此它不是該形狀的一部分。所以當我嘗試放置零件時(使用Pete Hurst的ZoneProxy代碼),結果表明該字段是具有通用名稱的不同形狀的一部分,所以不能放置。有沒有辦法讓場地成爲形狀的一部分?或者控制字段的形狀名稱,以便我可以單獨精確放置它(並且不要將所有其他字段形狀放在頁面上,並且名稱相同,例如Field_Common_Text)? – awrigley

+0

或者有沒有辦法使一個領域的一部分屬性,以便它共享形狀... – awrigley

+0

不。那不是你需要的領域。看看身體部位是如何構建的並將其複製到您的身上。 –

8

如果您希望將自己的自定義內容部分的屬性顯示爲htmleditor,請在部件的editortemplate中將其配置爲如下形式。

@Script.Require("OrchardTinyMce") 
@Html.TextAreaFor(x => x.Header, new { @class = "html tinymce" }) 

在這種情況下,'Header'屬性顯示爲一個html編輯器。

如果您需要更多的部分,可以考慮爲它編寫一個Html擴展或編輯器模板。

+1

這非常好,適用於零件上的任意'string'屬性。對於我來說,一個輕微的「陷阱」,我必須在調用'@ Script.Require'之前定義javascript vars'mediaPickerEnabled'和'mediaLibraryEnabled' *以保持TinyMce腳本的快樂。 – kaveman

+0

(順便說一句,未來的讀者,我有這個工作在1.7.2安裝) – kaveman

相關問題