Как в Orchard CMS отобразить сообщение, если запрос не возвращает записей для проекции

Используя админку на Orchard CMS, я создал следующее:

  1. Тип контента, называемый CalendarEvent, содержит несколько полей, включая EventDate;
  2. Запрос с двумя фильтрами: один по типу контента (= CalendarEvent), а другой по дате события. Для режима отображения на макете установлено значение «Свойства»;
  3. Проекция для отображения запроса при щелчке по пункту меню.

Проблема в том, что на основе EventDate мы отображаем только предстоящие события, а не прошлые. Если по какой-то причине события для отображения отсутствуют, пользователь получает только пустую страницу без какой-либо информации.

У меня вопрос: как изменить свой запрос или проекцию, чтобы отобразить что-то вроде: «Нет текущих запланированных событий»?

Я знаю, что свойства в макете запроса позволяют мне указать «Нет результата», но это означает, что запись присутствует, а фактическое свойство пусто. Однако в моем примере записи нет.

Спасибо всем заранее.

Рафаэль

Кстати, я использую последнюю версию Orchard 1.6.


person Medeiros    schedule 08.04.2013    source источник
comment
Кстати, я использую последнюю версию Orchard 1.6.   -  person Medeiros    schedule 08.04.2013


Ответы (2)


Я создал фигуру и использовал ее в качестве представления в моем запросе. Затем фигура будет иметь оператор if, чтобы проверить, дает ли возвращаемый запрос какие-либо результаты.

Пример:

@using Orchard.ContentManagement
@using Orchard.Utility.Extensions

@{
    var dealsTerms = ((IEnumerable<ContentItem>)Model.ContentItems).ToList();
}
@if (dealsTerms.Any() )
{
    <div>
        @foreach (var dealTerm in dealsTerms)
        {
            var contentManager = dealTerm.ContentManager;
            <div>
                @Display(contentManager.BuildDisplay(dealTerm, "Summary"))
            </div>
        }
    </div>
}
else
{
   <p>No deals found</p>
}

Я использовал эту статью как ссылку: http://www.ideliverable.com/blog/ways-to-render-lists-of-things

Удачи

person risiepit    schedule 14.06.2017

Если ваши проекции являются элементами Layouts, вы можете создать файл Projection.cshtml в папке Views / Elements вашей темы со следующим:

@{
    var list = Model.List;
    var pager = Model.Pager;

    if (list != null)
    {
        @Display(list)

        if (list.Items.Count == 0)
        {
            <div>There are currently no items.</div>
        }
    }

    if (pager != null)
    {
        @Display(pager)
    }
}

Это копия шаблона по умолчанию с добавленным разделом if (list.Items.Count == 0). При необходимости отредактируйте.

person wentz    schedule 02.06.2020