2013-02-07 1 views
2

나는 오차드를 처음 사용하고 있으며 다운로드 링크가있는 문서의 기본 목록을 만드는 "최상의"방법에 대해 궁금해하십니까?오차드 1.6에서 다운로드 할 수있는 아이템 목록 만들기

시나리오가 이렇다고 가정하면 뉴스 레터 목록을 만들고 싶습니다. 뉴스 레터는 PDF 형식이므로 사용자는 목록보기에서 곧바로 다운로드 할 수 있습니다. 관리자는 새 뉴스 레터를 쉽게 추가 할 수 있어야하며 목록에 나타나야합니다.

생각의 나의 현재 열차는

  1. 는 PDF 파일을 업로드 미디어 선택기 필드를 사용하여, 제목 필드와 미디어 선택기 필드 콘텐츠 형식 "뉴스 레터"를 만들고, 모든 대시 보드를 통해,에있다 .
  2. 는 다음 링크와 같은 자신의 제목을 보여주는이는 나에게 콘텐츠 항목의 목록을 제공,

그러나 쿼리에 투사 가리키는 만들기

  • "뉴스"콘텐츠 유형에 필터, 쿼리를 만들 실제 콘텐츠 항목으로 돌아갑니다.

    레이아웃에 쿼리를 추가하고 콘텐츠 대신 속성을 표시하도록 설정했습니다. 이렇게하면 "출력"을 좀 더 제어 할 수있는 목록을 얻을 수 있습니다. 제목을 나열하고 다시 쓰기를 수행하고 MediaPicker.Url을 삽입하면 URL이 목록에 표시됩니다. 이것은 모두 좋지만 여기 붙어 있습니다.

    MediaPicker.URL은 ~/media/default/xyz/filename.pdf와 같은 형식으로 url을 출력하기 때문에 aa href에 넣을 수 없습니다. 파일에 대한 올바른 다운로드 링크를 제공하지 않습니다.

    Soo, 질문은 내가 완전히 잘못된 방식으로 생각하고 있습니다. 아니면 분명하지 않은 것이 있습니까? 모든 아이디어와 제안을 환영합니다.

  • +0

    이러한 모듈을 사용해 보셨습니까? http://gallery.orchardproject.net/List/Search?packageType=Modules&searchTerm=document –

    +0

    미디어 선택기에 대한 참고 사항 : 언급 한 버그는 1.x 지점에서 수정되었으며 이전 버전에서 해결할 수 있다고 생각합니다. 템플릿이 재정의 된 버전 앞에있는 틸데는 그냥 제거해야합니다. –

    +0

    @Bertrand Le Roy, 제안에 감사 드리며, 갤러리에서 모듈을 시험해 보았습니다. 안타깝게도 1.6으로 작동하지 않거나, 불안정하거나, 내가하려고하는 작업에 대해 언급하지 않았습니다. 나는 1.x 지점으로 시도했지만 동일한 문제가있는 것 같습니다. 그래서 이제 템플릿을 재정의하는 중입니다. –

    답변

    0

    사용 또는 테마에 다음 템플릿 재정의 적응 : 필요에 따라

    @{ 
        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> 
    } 
    

    텍스트를 수정합니다. 이 템플릿은 PDF이라는 미디어 선택기 필드에 사용 된 Fields.MediaPicker-PDF.cshtml입니다.

    +0

    코드 샘플 @ Bertrand Le Roy를 보내 주셔서 감사합니다. 중요한 점은, 쿼리 레이아웃에서 "표시 유형"을 "내용"으로 설정하십시오. Property에 설정했고 그런 식으로하려고했는데 이제는 콘텐츠 템플릿을 과도하게 정리하는 것이 더 좋은 방법이라는 것을 깨달았습니다. 내가 찾은 가장 쉬운 방법은 디자이너 모듈의 Shape 추적 도구를 사용하는 것이 었습니다. 템플릿에서 얻을 수있는 코드는 @Url.Content (Model.ContentField.URL)을 입력하여 URL을 확인하십시오. 하지만 이것도 잘 작동합니다 :) –