【问题标题】:Orchard CMS: Creating bookmark for List itemOrchard CMS:为列表项创建书签
【发布时间】:2012-01-23 12:08:35
【问题描述】:

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

我们特别不想只链接到列表项的单个页面,而是跳到列表中的位置,并且由于列表项使用相同的视图部分呈现,我们不能当然只是硬编码书签。

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

    @Display(Model.Header)

这会生成 和 标签来环绕标题,如下所示:

营销

但是,我们无法找到让 Display() 方法包含“name=”子句的方法,然后我们可以将其用作书签。

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

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

    @Display(Model.Header)

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

必须有一种方法可以重载 Display() 方法以使其包含“name=”子句,有人有什么想法吗?

【问题讨论】:

    标签: list orchardcms bookmarks


    【解决方案1】:

    Model.Header 只是一个区域。真正呈现标题的是添加到该区域的形状。您应该真正使用形状跟踪(设计器工具模块的一部分)来了解形状的层次结构。您不需要“重载显示方法”。您需要的是覆盖呈现标题的形状的模板(不是 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

    【讨论】:

    • 感谢 Bertrand,我会阅读这些文章并进一步追踪它,感谢您的帮助。
    • 我不确定的一件事是,如果 Model.Header 是一个区域,Display 方法如何知道要渲染什么。换句话说,这个@Display(Model.Header) 是如何变成 HTML 的

      标签和 标签的?

    • 感谢@bertrand,我使用了错误的模板文件,我现在找到了正确的模板,并按照建议使用形状跟踪对其进行了排序。
    【解决方案2】:

    试试:

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

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

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

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

    在您的模板备用中。

    【讨论】:

    • 谢谢约翰,我试过 但没有成功。我会查看 Bertrand 发布的文章并尝试 建议:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    相关资源
    最近更新 更多