2015-04-02 3 views
1

Я довольно новичок в Silverstripe, хотя у меня есть неплохой опыт работы с PHP.Список 3 самых последних pdf-файлов из вкладки «Silverstripe Files»

Сейчас я работаю над получением файлов PDF, загруженных в Silverstripe CMS, на вкладке «Файлы».

У меня есть они хранятся в папке «Информационные бюллетени», и я хочу получить заголовок для каждого (чтобы я мог сделать загружаемую гиперссылку с ним) и дату, загруженную. До сих пор я нашел учебники о том, как загружать файлы, и я нашел этот кусок кода для получения изображения из каталога загрузки:

function getFrontPageImages() { 
     $folder = DataObject::get_one("Folder", "Filename = 'assets/myfrontpageimages'"); 
     return $folder ? DataObject::get("Image", "ParentID = '{$folder->ID}'") : false; 
    } 

Но это не совсем то, что я хочу, учитывая, что я хочу, чтобы получить 3 PDF-файлы. Есть ли хороший пример того, как это сделать?

Я предполагаю, что это что-то похожее на $[something].Title и $[something].LastEdited (или что-то подобное)?

+0

Что SilverStripe версия, которую вы с помощью? Код, который вы вставили, кажется немного устаревшим (был от 2,4 раза), если вы используете 3.1, вы должны сделать что-то вроде File :: get() -> filter(), чтобы получить последние файлы. См. Http://doc.silverstripe.org/en/developer_guides/model/data_model_and_orm/#filtering-results и http://doc.silverstripe.org/en/developer_guides/model/searchfilters/ – wmk

+0

Я использую Silverstripe 3.1. Пример, который я написал выше, был из онлайн-форума, и я не был уверен, что он все еще можно использовать. –

ответ

1

В вашем PHP (Page_Controller или суб-класса, как правило):

<?php 
class Page_Controller extends ContentController { 
    public function FeaturedPDFs() { 
     $folder = Folder::get()->filter('Filename', 'assets/featured-pdfs')->first(); 
     // Could do $folder->Children()->sort('Filename', 'ASC') to sort by filename, here I'm going to show the 3 most recently edited files 
     return $folder 
      ->Children() 
      ->sort('LastEdited', 'DESC') 
      ->limit(3); 
    } 
} 
?> 

В шаблоне (например, в данном случае, Page.ss):

<% if $FeaturedPDFs %> 
    <ul> 
     <% loop $FeaturedPDFs %> 
      <%-- Here, you're in the scope of a `File` object --%> 
      <li>$Title.XML (last edited on $LastEdited.Format('Y-m-d') at $LastEdited.Time)</li> 
     <% end_loop %> 
    <ul> 
<% end_if %> 
+0

Я дал этот снимок, но когда я пытаюсь загрузить страницу, он полностью пуст. Удаление вышеуказанного кода позволяет ему снова работать. Я не вижу ошибок в инструментах разработчика Chrome, но что-то должно быть не так. Похоже, это должно сработать. Я только изменил активы/featured-pdfs на активы/информационные бюллетени. –

+0

Scratch that - мне, наконец, удалось заставить его работать. Были проблемы с установкой даты и времени в моей системе. –

Смежные вопросы