Получение папки мультимедиа по имени или хэшу в Umbraco 7

#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

Удачи

Крейг