Создание списка загружаемых предметов в Orchard 1.6

Я новичок в Orchard, и меня интересует «лучший» способ создания базового списка документов со ссылкой для скачивания?

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

Моя текущая мысль состоит в том, чтобы через приборную панель

  1. создайте тип контента «Информационный бюллетень» с полем заголовка и полем выбора мультимедиа, используя поле выбора мультимедиа для загрузки файла PDF.
  2. Затем создайте запрос с фильтром по типу контента «Информационный бюллетень».
  3. Создайте проекцию, указывающую на запрос

Однако это дает мне только список элементов контента, показывающий их заголовок как ссылку на фактический элемент контента.

Я попытался добавить макет к запросу и настроить его для отображения свойств вместо содержимого. Делая это, я могу получить список, в котором я могу немного больше контролировать «выход». И я заставил его перечислить заголовок, и, выполнив Rewrite и вставив MediaPicker.Url, он также отобразил URL-адрес в списке. Это все хорошо, но здесь я застрял ..

Поскольку MediaPicker.URL выводит URL-адрес в формате, например ~/media/default/xyz/filename.pdf, я не могу просто поместить его в href, он не дает правильной ссылки для загрузки файла.

Итак, вопрос в том, думаю ли я и делаю это совершенно неправильно, или я упускаю что-то очевидное? Все идеи и предложения и многое другое приветствуются.


person Ola Karlsson    schedule 07.02.2013    source источник
comment
Вы пробовали какой-нибудь из этих модулей? gallery.orchardproject.net/List/   -  person Bertrand Le Roy    schedule 08.02.2013
comment
Просто примечание о средстве выбора мультимедиа: я думаю, что упомянутая вами ошибка исправлена ​​​​в ветке 1.x, и вы можете обойти ее в предыдущих версиях с помощью переопределения шаблона. Тильду впереди просто нужно убрать.   -  person Bertrand Le Roy    schedule 08.02.2013
comment
@Bertrand Le Roy, спасибо за предложения, и да, я попробовал модули из галереи, к сожалению, они либо не работают с 1.6, либо нестабильны, либо не учитывают то, что я пытаюсь сделать :/. Я пробовал с веткой 1.x, но, похоже, у нее та же проблема, поэтому сейчас я пытаюсь переопределить шаблон.   -  person Ola Karlsson    schedule 08.02.2013
comment
Если это все еще не исправлено в 1.x, отправьте сообщение об ошибке. Я копирую переопределение шаблона, которое я создал для сайта в ответе ниже.   -  person Bertrand Le Roy    schedule 09.02.2013
comment
Спасибо, @Bertrand Le Roy, см. проблему, представленную здесь orchard.codeplex.com/workitem/19442   -  person Ola Karlsson    schedule 11.02.2013


Ответы (1)


Используйте или адаптируйте следующее переопределение шаблона в своей теме:

@{
    var url = Model.ContentField.Url;
}
@if(Model.ContentField.Url != null) {
    if (url.StartsWith("~/")) {
        url = Href(url);
    }
    <div class="media-picker-field attachment-pdf">
        <a href="@url" class="pdf-download" title="@T("Download the PDF")"><span>download</span></a>
    </div>
}

Измените текст по мере необходимости. Этот шаблон был Fields.MediaPicker-PDF.cshtml, который использовался для поля средства выбора мультимедиа с именем PDF.

person Bertrand Le Roy    schedule 09.02.2013
comment
Спасибо за пример кода @Bertrand Le Roy, я думаю, что один важный момент заключается в том, что это работает, только если вы установили тип отображения как содержимое в своем макете запроса. Я установил для него свойство и пытался сделать это таким образом, теперь я понял, что перезапись шаблона контента, вероятно, лучший способ. Я нашел самый простой способ сделать это с помощью инструмента трассировки формы из модуля дизайнера. В полученном шаблоне код использует @Url.Content(Model.ContentField.Url) для разрешения URL-адреса. Но это тоже работает :) - person Ola Karlsson; 11.02.2013