Markdown (OrchardCore.Markdown)¶
Theming¶
Shapes¶
The following shapes are rendered when the MarkdownBodyPart is attached to a content type:
| Name | Display Type | Default Location | Model Type |
|---|---|---|---|
MarkdownBodyPart |
Detail |
Content:5 |
MarkdownBodyPartViewModel |
MarkdownBodyPart |
Summary |
Content:10 |
MarkdownBodyPartViewModel |
BodyPartViewModel¶
The following properties are available on the MarkdownBodyPartViewModel class.
| Property | Type | Description |
|---|---|---|
Markdown |
string |
The Markdown value after all tokens have been processed. |
Html |
string |
The HTML content resulting from the Markdown source. |
ContentItem |
ContentItem |
The content item of the part. |
MarkdownBodyPart |
MarkdownBodyPart |
The MarkdownBodyPart instance. |
TypePartSettings |
MarkdownBodyPartSettings |
The settings of the part. |
MarkdownBodyPart¶
The following properties are available on MarkdownBodyPart:
| Name | Type | Description |
|---|---|---|
Markdown |
The Markdown content. It can contain Liquid tags so using it directly might result in unexpected results. Prefer rendering the MarkdownBodyPart shape instead. |
|
Content |
The raw content of the part. | |
ContentItem |
The content item containing this part. |
MarkdownField¶
This shape is rendered when a MarkdownField is attached to a content part.
The shape base class is of type MarkdownFieldViewModel.
The following properties are available on the MarkdownFieldViewModel class.
| Property | Type | Description |
|---|---|---|
Markdown |
string |
The Markdown value once all tokens have been processed. |
Html |
string |
The HTML content resulting from the Markdown source. |
Field |
MarkdownField |
The MarkdownField instance. |
Part |
ContentPart |
The part this field is attached to. |
PartFieldDefinition |
ContentPartFieldDefinition |
The part field definition. |
Editors¶
The Markdown Part editor can be different for each content type. In the Markdown Part settings of a content type, just select the one that needs to be used.
There are two predefined editor names:
Defaultis the editor that is used by default.Wysiwygis the editor that provides a WYSIWYG experience.
Custom Editors¶
Customizing the editor can mean to replace the predefined one with different experiences, or to provide new options for the user to choose from.
To create a new custom editor, it is required to provide two shape templates, one to provide the name of the editor (optional if you want to override an existing one), and a shape to render the actual HTML for the editor.
Declaration¶
To declare a new editor, create a shape named Markdown_Option__{Name} where {Name} is a value
of your choosing. This will be represented by a file named Markdown-{Name}.Option.cshtml.
Sample content:
@{ string currentEditor = Model.Editor; } <option value="Wysiwyg" selected="@(currentEditor == "Wysiwyg")">@T["Wysiwyg editor"]</option>
HTML Editor¶
To define what HTML to render when the editor is selected from the settings, a shape named
Markdown_Editor__{Name} corresponding to a file Markdown-{Name}.Editor.cshtml can be created.
Sample content:
@using OrchardCore.Markdown.ViewModels; @model MarkdownBodyPartViewModel <fieldset class="form-group"> <label asp-for="Markdown">@T["Markdown"]</label> <textarea asp-for="Markdown" rows="5" class="form-control"></textarea> <span class="hint">@T["The markdown of the content item."]</span> </fieldset>
Overriding the predefined editors¶
You can override the HTML editor for the Default editor by creating a shape file named
Markdown.Editor.cshtml. The WYSIWYG editor is defined by using the file named
Markdown-Wysiwyg.Editor.cshtml.
Razor Helper¶
To render a Markdown string to HTML within Razor use the MarkdownToHtmlAsync helper extension method on the view's base Orchard property, e.g.:
@await Orchard.MarkdownToHtmlAsync((string)Model.ContentItem.Content.MarkdownParagraph.Content.Markdown)
In this example we assume that Model.ContentItem.Content.MarkdownParagraph.Content represents an MarkdownField, and Markdown is the field value, and we cast to a string, as extension methods do not support dynamic dispatching.
This helper will also parse any liquid included in the Markdown.
CREDITS¶
Markdig¶
https://github.com/lunet-io/markdig
Copyright (c) 2016, Alexandre Mutel
BSD-2
SimpleMDE¶
https://github.com/sparksuite/simplemde-markdown-editor
Copyright (c) 2015 Next Step Webs, Inc.
MIT