Умбрако, бритва и галерея изображений - PullRequest
2 голосов
/ 25 мая 2011

Я новичок в Умбрако. Я создаю галерею изображений (называется Клиенты). У клиента есть логотип, который является изображением.

My Umbraco Content

Как создать макрос для бритвы, который выводит список логотипов клиентов?

Я после кода cshtml, вероятно, что-то вроде этого:

@inherits umbraco.MacroEngines.DynamicNodeContext
@foreach (var customer in Content.Customers) {
  <img src="@customer.logo.umbracoFile" alt="@customer.Name"/>
}

Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 25 мая 2011

Я предполагаю, что скрипт выполняется на странице Customers , и что тип содержимого, содержащий log и url, называется Customer :

@foreach(var customer in Model.Customer)
{
    <img src="@customer.Media("logo", "umbracoFile")" alt="@customer.Name"/>
}

Model.Customer предоставит вам список всех дочерних элементов текущей страницы, которые Customer s (тип содержимого).

1 голос
/ 25 мая 2011

Вот код, который работает

@inherits umbraco.MacroEngines.DynamicNodeContext
@foreach (var customer in Model.NodeById(1062).Children) {
  <img src="@umbraco.IO.IOHelper.ResolveUrl(customer.logo)" alt="@customer.Name"/>
}
0 голосов
/ 05 марта 2014

для использования динамического расположения (макропараметры) вы можете сделать две вещи:

1. установив это в своем корневом документе, чтобы пользователь мог изменить расположение ползунка клиента (если вы этого хотите):

var RootNode = @Model.NodeById(@Model.AncestorOrSelf(1).HeaderRoot);

Где HeaderRoot - это имя свойства в вашем начальном файле (root)

2. Использование параметра в вашем скрипте бритвы

var rootNode = @Parameter.RootNode;

и используйте что-то вроде:

@Model.NodeById(rootNode).Children();

так в вашем коде это будет выглядеть примерно так (не проверено):

@inherits umbraco.MacroEngines.DynamicNodeContext

@{ var rootNode = @Parameter.RootNode;}
@foreach (var customer in Model.NodeById(rootNode).Children()) {
  <img src="@umbraco.IO.IOHelper.ResolveUrl(customer.logo)" alt="@customer.Name"/>
}
...