Получить настраиваемое поле сообщения блога в заголовке шаблона - Sitefinity
Мне нужно установить несколько значений метатега в заголовке страницы на значения, заданные в пользовательских полях блога.
Как получить доступ к представлению модели блога из головы?
Я создал отдельный фрагмент представления MVC для своей пользовательской головы и сослался на него в макете моего шаблона, это очень хорошо работает.
Пытался
Я использую такие же значения настраиваемых полей в шаблоне блога с помощью ссылок, таких как Model.Item.Fields.MyFieldName.Fields.Title
,
Добавление этой же строки в шаблон головы приводит к System.Web.HttpCompileException
с небольшой полезной информацией прилагается. Я несколько ожидал этого, так как подозреваю, что viewmodel для поста в блоге существует только в контексте виджета блога.
В итоге мне нужно пересобирать после каждого изменения в файле cshtml head или я получаю эту ошибку. Видя, что это примерно четырехминутный процесс с Sitefinity (15 секунд на сборку, 3:45 на то, что Sitefinity делает в течение примерно четырех минут), это ужасно и ужасно.
Тем не менее Model
является нулевым на этом уровне.
Также попробовал
Вечно полезный и хорошо осведомленный @Veselin Vasilev, я пытался передать данные через MetaDataFields. Я не видел эти параметры в своем разделе администратора для виджета. Чтобы уточнить, я использую встроенный виджет "Сообщения блога" с настроенным файлом представления.
Но если это возможно, это дает мне надежду, что есть способ передать больше данных, даже если это потребует некоторой работы.
1 ответ
РЕДАКТИРОВАТЬ: Sitefinity v.10.2 и выше:
Существует более простой способ добиться того, что вы пытаетесь - в режиме редактирования страницы, в виджете "Сообщения блога" нажмите "Изменить", а затем "Дополнительно". Тогда вы должны увидеть кнопку MetaDataFields. Нажмите на нее, и вы увидите несколько полей, связанных с метаданными. В поле MetaTitle введите имя своего настраиваемого поля и сохраните.
Также из документов:
Если вы оставите поле MetaTitle пустым, Sitefinity CMS добавляет его значение из поля "Заголовок" элемента статического содержимого или из поля идентификатора элемента динамического содержимого. В противном случае тег заполняется содержимым поля, которое вы ввели в поле MetaTitle.
Более подробная информация здесь: https://docs.sitefinity.com/configure-meta-title-and-meta-description-on-widget-level
Sitefinity 10.1 и ниже:
Проверьте эту статью
По сути, вы видите ссылку на объект Page, а затем обновляете его заголовок метаданными, которые вам нужны.