我正在使用GRAV CMS完成我的第一步,只是与树枝接触(以及我的第一步)。
对于我的模板,我想扫描一个文件夹并回显其中的每个文件。通常我会使用普通的PHP和scandir以及foreach,但似乎我不能在我的base-twig文件中使用常用的PHP函数。 是否有可能使用scandir或其他任何东西用树枝扫描文件夹?
答案 0 :(得分:3)
你可以在php文件中使用scandir,然后将数据发送到twig模板
yourppfile.php中的
void pattern(unsigned int n) {
// Going up
count << n << endl;
if (n <= 4242) {
pattern(n*2);
}
// this will be called "on the way back down"
count << n << endl;
}
并在index.html中:
$dir = '/tmp';
$array_files = scandir($dir);
$template = $twig->loadTemplate('index.html');
echo $template->render(array('files' => $array_files));
答案 1 :(得分: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 %}
那又做什么?
上面的代码允许您选择某些文件夹并列出其中的每个文件和图像。视频和音频被忽略。
如果安装了管理面板,则可以使用所选模板选择每个页面的“选项”选项卡中的页面
由于您拥有常规GRAV对象,因此您可以轻松访问其path
,file names
等。