Неопубликованные/ограниченные элементы в Sitecore со стандартными значениями

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

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

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

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

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


person Younes    schedule 18.02.2010    source источник


Ответы (2)


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

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

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

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

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

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

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

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

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

person Younes    schedule 19.02.2010
comment
Короче говоря, если вы ограничиваете публикацию всех версий элемента, вы в конечном итоге отображаете свои стандартные значения, которые буквально представляют собой версию «0» элемента содержимого. - person Paul George; 29.10.2012

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

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

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

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

person Yan Sklyarenko    schedule 19.02.2010
comment
Я отредактировал свой вопрос, чтобы быть еще более ясным! Спасибо за ответ, но перепроверьте мой вопрос, плз - person Younes; 19.02.2010
comment
Что касается последней части вашего ответа: я понимаю, что когда элемент не опубликован, я не смогу отображать значения из этого конкретного элемента. Как я могу убедиться, что мой код не будет пытаться. Есть ли способ проверить код, если элемент доступен для публикации / подпадает под дату ограничения публикации? Таким образом, я могу запретить элементам переходить в режим значений по умолчанию, когда я отменяю публикацию/ограничиваю. - person Younes; 19.02.2010
comment
Я вижу, что у каждого элемента есть возможность проверить, где он пуст. Когда я использую эту опцию, я могу скрыть стандартные значения, когда у элемента нет версии! - person Younes; 19.02.2010
comment
›› Я вижу, что у каждого элемента есть возможность проверить, где он пуст. О какой опции вы говорите? Где вы его нашли? Кажется, я потерял смысл здесь... - person Yan Sklyarenko; 19.02.2010