Сканирование папки веткой

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

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

2

Решение

Вы можете как обычно сканировать в 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>
3

Другие решения

Я столкнулся с той же проблемой и наткнулся на ваш вопрос.
После некоторых исследований я обнаружил, что 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 %}

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

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

1

По вопросам рекламы [email protected]