Orchard CMS:为List项创建书签

时间:2012-01-23 12:08:36

标签: list orchardcms bookmarks

我们正在使用“列表”内容类型在Orchard CMS中创建一个页面。我们想在列表顶部添加一些超链接,这些超链接会将页面跳转到列表中的特定项目。

我们特别不希望仅链接到列表项的单个页面,而是跳到列表中的位置,并且因为列表项使用相同的View部分呈现,我们不能当然只是对书签进行硬编码。

我们一直在自定义VS中的View Part,并且知道列表项标题是使用代码生成的:

    @Display(Model.Header)

这会产生< h1>和< a>像这样包围标题的标签:

< h1 shape-id =“5”>< a href =“/ Orchard / Contents / Item / Display / 36”shape-id =“5”> Marketing< / a>< / h1>

但是,我们找不到一种方法来让Display()方法包含一个'name ='子句,然后我们可以将它用作书签。

我们还尝试在现有代码上方添加一个新标记,例如:

    < a name="@Model.Header" >< /a >

    @Display(Model.Header)

但是当然Model.Header是一个对象引用,而不是一些文本,所以这个失败了。在此之后,我们迷失了各种方法,试图找到Model对象的属性来获取标题作为文本,但不能。

必须有一种方法可以重载Display()方法以使其包含'name ='子句,任何人都有任何想法?

2 个答案:

答案 0 :(得分:0)

尝试:

<a name="@Model.Header.Items[0].Title" />

它并不漂亮,但是当我将其放在我创建的传记内容类型的备用模板中时,它对我有用(Views / Content-Bio.Summary.cshtml)。

根据Bertrand的建议,您可以尝试:

<a name="@Model.Title" /> 

在您的模板中替代。

答案 1 :(得分:0)

Model.Header只是一个区域。真正呈现标题的是添加到该区域的形状。您应该使用Shape Tracing(Designer Tools模块的一部分)来了解形状的层次结构。您不需要“重载显示方法”。你需要的是覆盖渲染标题的形状的模板(不是Model.Header,而是里面的东西)。 您可能需要阅读此内容:http://weblogs.asp.net/bleroy/archive/2011/03/27/taking-over-list-rendering-in-orchard.aspx和此http://weblogs.asp.net/bleroy/archive/2011/05/23/orchard-list-customization-first-item-template.aspx