Повторное использование сетки Umbraco с пользовательской моделью

Я новичок в новой функциональности Umbraco Grid, и у меня есть вопрос по этому поводу.

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

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

Я могу получить продукт, который продается на этой странице, но теперь я также хочу показать изображение и текст на этой странице. Я создал список с настраиваемой моделью просмотра, чтобы хранить содержимое для каждого продукта, который продается. Проблема заключается в предоставлении JObject функции GetGridHtml. Эта функция хочет строку, и я предоставляю свойство, которое приводит к ошибке.

Каков наилучший способ получить содержимое для сетки, чтобы показать на этой отдельной странице?

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
     var home = CurrentPage.Site();

     List<ForSaleItemsViewModel> forSaleItemsVM = new List<ForSaleItemsViewModel>();

     if(home.Children.Any())
     {        
         foreach(var childPage in home.Children)
         {
             if(childPage.Children.Any())
             {
                 foreach(var child in childPage.Children)
                 {
                     if(child.HasProperty("ForSale") && child.ForSale)
                     {
                           forSaleItemsVM.Add(new ForSaleItemsViewModel
                                            {
                                                ID = 1,
                                                Content = child.Content,
                                                Sold = child.Sold
                                            });
                     }
                }
            }
         }
    }
}

<div class="container">
    @foreach(var item in forSaleItemsVM)
    {
        if (item.Sold)
        {
            <span>SOLD!</span>
        }
        CurrentPage.GetGridHtml(item.Content.ToString(), "bootstrap3");
    }
</div>

1 ответ

Решение

Согласно форуму Umbraco это невозможно сделать. Я получил этот ответ:

Если вы видите документацию по лучшим методикам расположения сетки, https://our.umbraco.org/Documentation/Using-Umbraco/Backoffice-Overview/Property-Editors/Built-in-Property-Editors-v7/Grid-Layout-Best-Practices: есть глава об ограничениях для разметки сетки https://our.umbraco.org/Documentation/Using-Umbraco/Backoffice-Overview/Property-Editors/Built-in-Property-Editors-v7/Grid-Layout-Best-Practices. И из ограничений использования макета сетки является то, что это не для повторно используемого контента.

В нем говорится: "Не существует управляемого API для детализации содержимого сетки и нацеливания на конкретное содержимое ячейки, поэтому макет сетки не является рекомендуемым хранилищем повторно используемого содержимого - он просто не предназначен для этого сценария. Если вы хотите повторно использовать контент на нескольких страницах, все равно рекомендуется хранить эти фрагменты контента как отдельные узлы контента, чтобы их можно было хранить, кэшировать и запрашивать как обычно.

Другие вопросы по тегам