#umbraco #umbraco7
#umbraco #umbraco7
Вопрос:
Я использую Umbraco 7.4.
Я хотел бы перечислить все файлы из папки мультимедиа («Images Splash»).
Пользовательскому классу я передаю ссылку на экземпляр UmbracoHelper из контроллера и могу получить папку следующим образом:
var folder = _umbraco.Media(333);
333 — идентификатор нужной мне папки мультимедиа.
Как я могу получить эту папку по ее хэшу или по ее имени?
Я бы не хотел использовать идентификатор, поскольку это не гарантирует, что он будет одинаковым в разных средах (dev, staging, production).
Ответ №1:
Как оказалось, вы можете получить папку мультимедиа по имени, используя UmbracoHelper (_umbraco):
var mediaService = _umbraco.UmbracoContext.Application.Services.MediaService;
var imagesFolder = (IPublishedContent)mediaService.GetRootMedia().FirstOrDefault(m => m.Name.InvariantEquals("Images"));
var folder = imagesFolder?.Children().FirstOrDefault(c => c.Name.InvariantEquals("Splash"));
Ответ №2:
Я не думаю, что вы можете:-/ Но вы могли бы сделать это свойством где-нибудь на сайте (или параметром в макросе), чтобы вам не приходилось жестко кодировать идентификатор где угодно.
Ответ №3:
Вы не можете получить элемент мультимедиа по имени с помощью помощников Umbraco.
Я делаю это с помощью преобразований Web.config, чтобы установить разные идентификаторы узлов для каждой среды (например, Local, Staging amp; Live и т. Д.).
<add key="HomeNodeId" value="xxxx" />
Затем создайте класс для вызова этих разных NodeID.
Смотрите следующую статью: https://weblogs.asp.net/srkirkland/common-web-config-transformations-with-visual-studio-2010
Удачи
Крейг