Orchard CMS: создание закладки для элемента списка - PullRequest
0 голосов
/ 23 января 2012

Мы создаем страницу в Orchard CMS, используя тип контента «Список». Мы хотим добавить несколько гиперссылок вверху списка, чтобы перейти вниз по странице к определенным элементам в списке.

В частности, мы не хотим просто ссылаться на отдельную страницу для элемента списка, а просто перейти вниз, где он находится в списке, и поскольку элементы списка отображаются с использованием одной и той же части просмотра, мы не можем Конечно, просто жестко закодировать закладки.

Мы настраивали View Part в VS и знаем, что заголовок элемента списка генерируется с помощью кода:

    @Display(Model.Header)

И это генерирует теги

и для обтекания заголовка следующим образом:

Маркетинг

Однако мы не можем найти способ заставить метод Display () включить предложение name =, которое мы можем затем использовать в качестве закладки.

Мы также пытались добавить новый тег чуть выше выходного кода, например ::

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

    @Display(Model.Header)

Но, конечно, Model.Header - это ссылка на объект, а не какой-то текст, так что это не удалось. После этого мы заблудились, пытаясь найти свойство объекта Model для получения заголовка в виде текста, но не смогли.

Должен быть способ перегрузить метод Display (), чтобы он включал в себя предложение 'name =', у кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 24 января 2012

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

0 голосов
/ 24 января 2012

Попробуйте:

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

Это не красиво, но у меня получилось, когда я уронил его в альтернативный шаблон для созданного мной типа контента биографии (Views / Content-Bio.Summary.cshtml).

Основываясь на предложении Бертрана, вместо этого вы можете попробовать:

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

в альтернативном шаблоне.

...