在Orchard CMS中自定义可包含的内容

时间:2011-07-21 18:40:30

标签: list content-type customization orchardcms containable

我目前正在尝试更多地了解Orchard如何处理自定义内容类型列表,我遇到了一些问题。

我创建了一个名为故事的内容类型,其中包含以下部分:

  • 正文
  • 通用
  • 中可容纳
  • 路线

我创建了一个包含这些项目的列表,我试图做的就是以这样的方式设置它们:

Story Title
Story Description (Basically a truncated version of the body?)

但是,我似乎无法弄清楚如何执行以下操作:

  1. 获取标题实际显示目前显示的是正文和更多链接
  2. 删除“更多”链接并将其更改为实际标题
  3. 我已经考虑过更改Placement.info,并试图查找每个项目中添加“更多”链接的位置。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

我终于弄清楚了 - 感谢Designer Tools Module,这让我们可以非常简单地了解页面生成期间幕后发生的事情。

基本上 - 完成此任务所需的只是对 Parts.Common.Body.Summary.cshtml 文件进行一些小的更改。 (通过../ Core / Common / Views / 找到)

最初类似于以下内容:

@{     

[~.ContentItem] contentItem = Model.ContentPart.ContentItem;
string bodyHtml = Model.Html.ToString();
var body = new HtmlString(Html.Excerpt(bodyHtml, 200).ToString()
               .Replace(Environment.NewLine,"</p>"+Environment.NewLine+"<p>")); 

}

<p>@body @Html.ItemDisplayLink(T("more").ToString(), contentItem)</p>

然而,通过进行一些更改(使用Designer工具),我将其更改为以下内容:

@{ 

[~.ContentItem] contentItem = Model.ContentPart.ContentItem;
string bodyHtml = Model.Html.ToString();
string title = Model.ContentPart.ContentItem.RoutePart.Title;
string summary = Html.Excerpt(bodyHtml, 100) + "...";

}

<div class='story'>
    <p>
    @Html.ItemDisplayLink(title, contentItem)
    </p>
    <summary>
    @summary
    </summary>
</div>

虽然它可以很容易地缩短一点 - 它确实使得造型更容易处理。无论如何 - 我希望这会有所帮助:)

答案 1 :(得分:2)

或者,您可以使用主题中的placement.info文件为“摘要”和“详细信息”视图指定不同的字段。它简单得多。

http://orchardproject.net/docs/Understanding-placement-info.ashx

但是,在我发现.info文件之前,我使用了相同的方法。它可以工作并让您很好地理解系统的工作原理,但placement.info文件似乎更容易。

此外,您可能不希望在Core中编辑视图文件。我认为您的意思是覆盖主题目录中的视图。