Неопубликованные / запрещенные элементы в Sitecore, показывающие стандартные значения - PullRequest
3 голосов
/ 18 февраля 2010

Можно ли в визуализациях usercontrols / xslt проверить, ограничен ли элемент публикации или недоступен для публикации в Sitecore CMS?В некоторых ситуациях мы объясняем пользователям CMS, как устанавливать ограничения на публикацию, и отвечаем на вопросы об элементах, показывающих стандартные значения на веб-сайте.Например:

  • У меня есть предмет, и он содержит поля с информацией.
  • Я публикую этот предмет, и все в порядке.Содержимое отображается на веб-сайте.
  • Я изменяю ограничения на публикацию и говорю, что его можно публиковать только с 23-02-2010 по 25-02-2010.
  • Что происходит сейчас, это когдая снова публикую веб-сайт, элемент, который был показан правильно ранее, теперь показывает стандартные значения.

РЕДАКТИРОВАТЬ:

  • У элемента, о котором я говорю, есть только одна версия.(Голландский - версия 1) Изделие просто сделано посредством вставки из шаблона и заполнено информацией.После того, как он заполнен информацией, устанавливаются ограничения на публикацию.Когда это сделано, и элемент не попадает в дату этого ограничения, я вижу стандартные значения @ front.

Ограничения на публикацию могут использоваться, чтобы гарантировать, что информация отображается только в некоторый период времени, верно?Это то, что мы можем исправить в нашем коде?Можем ли мы проверить, находится ли предмет вне публичных ограничений / неопубликован?

Ответы [ 2 ]

2 голосов
/ 19 февраля 2010

Итак, еще раз, чтобы дать другим пользователям возможность проверить ответ на этот вопрос, я отвечу на свой собственный вопрос.

Если пользователь в CMS Sitecore указывает диапазон, в котором элемент может быть опубликовани перед вами появляется стандартное значение:

  • Найдите класс / рендеринг, который отображает информацию
  • Убедитесь, что ваш код проверяет наличие доступных версий

Если доступна только одна версия, как в моем случае, и нет других версий, в то время как сегодняшняя дата выходит за пределы диапазона, указанного с помощью простого Item.Empty проверки будет достаточно.

Всякий раз, когда у вас есть элемент Sitecore, который вам нужно обработать:

элемент имеет версии на языке контекста ??-> item.Versions.Count

пункт может быть опубликован ??-> !item.Publishing.IsValid(DateTime.Today, false)

пункт имеет макет ??-> item.Visualization.GetLayout(Sitecore.Context.Device)

Надеюсь, однажды эта информация кому-нибудь пригодится!

0 голосов
/ 19 февраля 2010

Вот возможное объяснение поведения, которое вы описали. У вас есть несколько версий вашего элемента, и когда вы накладываете ограничения на публикацию для версии, с которой работаете (обычно это последняя версия), она становится неопубликованной. Если одна из предыдущих версий, которая теперь доступна для публикации, не переопределяет стандартные значения, вы увидите эти стандартные значения в интерфейсе.

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

Что касается вашего начального вопроса, любое поле элемента может быть адресовано из пользовательского элемента управления / рендеринга XSL (например, функция sc: fld). Но имейте в виду, что вы запрашиваете веб-базу данных от рендеринга. Если установлены ограничения на публикацию, и элемент не подлежит публикации, вы не получите этот элемент и его поля из рендеринга / подслоя.

Надеюсь, это поможет.

...