Как выбрать только опубликованные позиции в XSLT-Umbraco? - PullRequest
0 голосов
/ 12 марта 2012

У меня есть слайдер фотографий, есть кнопки «Вперед» и «Назад», и когда вы нажимаете на кнопку, появляется всплывающее окно с большим размером фотографий. При использовании Umbraco макрос xslt показывает узлы внутри Gallery folder.xslt выбирает узлы «Галерея / Фото». Когда я загружаю фотографию, если я ее не публикую, кнопки «Следующая / Предыдущая» ползунка не отображаются и всплывающие окна не работают. Как выбрать только опубликованные элементы в Xslt? Заранее спасибо

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Я вижу, что эта дискуссия возникла снова. Это не прямой ответ на проблему, но если вы немного лучше поймете Умбрако ...

Umbraco & XSLT

Хотя Umbraco запускает все свои данные преимущественно из базы данных MS SQL, он кеширует эти данные каждый раз, когда страница публикуется / не публикуется в «скрытом» XML-файле. Это освобождает разработчика от любого прямого редактирования XML и оставляет его Umbraco. Тем не менее, разработчик может легко забыть или даже не знать, что он там есть.

Файл можно найти в любом из следующих мест, в зависимости от используемой версии:

~/App_Data/umbraco.config
~/config/umbraco.config

Проблема

XSLT запускаются с использованием файла umbraco.config в качестве источника XML. Однако этот файл будет содержать только опубликованные узлы. Неопубликованные узлы будут полностью удалены из XML, поэтому XSLT вообще не должны иметь доступа к неопубликованным узлам.

Я подозреваю, что проблема может быть связана не с неопубликованными узлами.

0 голосов
/ 13 марта 2012

Не видя вашего XSLT, трудно угадать, что вы делаете. Однако, как утверждает @Goran, XSLT в Umbraco может получить доступ только к опубликованным узлам. Это связано с тем, что данные, к которым XSLT имеет доступ, являются кэшированной XML-структурой, найденной в umbraco.config.

Итак, вероятно, вы хотите исключить узлы, которым еще не назначено изображение (даже если сам узел опубликован).

Вы можете сделать это, используя что-то вроде:

$currentPage//GalleryNode [image != '']

При этом будут выбраны все элементы GalleryNode на текущей странице, которым назначено свойство изображения.

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

...