2015-10-25 2 views
2

Я делаю свои первые шаги с помощью GRAV CMS и просто вступаю в контакт с веточкой (также мои первые шаги).Сканировать папку с веточкой

Для моего шаблона я хотел бы сканировать папку и эхо каждого файла в ней. Обычно я бы использовал обычные PHP и scandir и foreach, но кажется, что я не могу использовать обычные PHP-функции в своем базовом twig-файле. Есть ли возможность использовать скандир или что-нибудь еще для сканирования папки с веточкой?

ответ

3

Вы можете ScanDir, как в PHP обычно работают на жидком файле, а затем отправить данные на веточку шаблону

в yourphpfile.php

$dir = '/tmp'; 
$array_files = scandir($dir); 
$template = $twig->loadTemplate('index.html'); 
echo $template->render(array('files' => $array_files)); 

и в index.html:

<!DOCTYPE html> 
    <html> 
     <head> 
      <title>My Webpage</title> 
     </head> 
    <body> 
     <ul> 
      {% for file in files %} 
       <li>{{ file }}</li> 
      {% endfor %} 
     </ul> 
    </body> 
</html> 
+0

Звучит хорошо, спасибо. Но когда я создаю файл PHP, как я могу сказать GRAV для выполнения функции? – jpfaller93

1

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

Первое: Добавить content к переднему вопросу
user/pages/pagename/pagename.md

content: 
    items: '@root' 
    order: 
     by: folder 
     dir: desc 

Второе: Добавить список в план
user/themes/themename/blueprints/pagename.yaml

title: Downloads 

'@extends': 
    type: default 
    context: blueprints://pages 

form: 
    fields: 
    tabs: 
     type: tabs 
     active: 1 

     fields: 
     options: 
      type: tab 
      title: PLUGIN_ADMIN.OPTIONS 

      fields: 

      filelist: 
       type: section 
       title: File List 
       underline: true 

       fields: 
       header.folders: 
        name: folders 
        type: list 
        style: vertical 
        label: Folders 
        fields: 

        .folder: 
         type: pages 
         label: Folder 
         show_all: false 
         show_modular: false 
         show_root: false 

В-третьих: Петля внутри шаблона.
user/themes/themename/templates/pagename.html.twig

{% extends 'partials/base.html.twig' %} 

{% block content %} 

    {% for current in header.folders %} 

     <h3>{{ page.find(current['folder']).title }}</h3> 

     {% if page.find(current['folder']).media.files %} 
      <h4>Files:</h4> 
      {% for pFile in page.find(current['folder']).media.files %} 

       {{ pFile.filename }} 

       <br/> 

      {% endfor %} 
     {% endif %} 

     {% if page.find(current['folder']).media.images %} 
      <h4>Images:</h4> 
      {% for pImage in page.find(current['folder']).media.images %} 

       {{ pImage.filename }} 

       <br/> 

      {% endfor %} 
     {% endif %} 

    {% endfor %} 

{% endblock %} 

Так что же делать?

В приведенном выше коде вы можете выбрать определенные папки и перечислить каждый файл и изображение внутри него. Видео и аудио игнорируются.
Если у вас установлена ​​панель администратора, вы можете выбрать страницы на вкладке «Параметры» каждой страницы с выбранным шаблоном.
Поскольку у вас есть регулярные объекты гравитационных, вы можете легко получить доступ к их path, file names и т.д.

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