用树枝扫描文件夹

时间:2015-10-25 13:15:54

标签: php twig scandir grav

我正在使用GRAV CMS完成我的第一步,只是与树枝接触(以及我的第一步)。

对于我的模板,我想扫描一个文件夹并回显其中的每个文件。通常我会使用普通的PHP和scandir以及foreach,但似乎我不能在我的base-twig文件中使用常用的PHP函数。 是否有可能使用scandir或其他任何东西用树枝扫描文件夹?

2 个答案:

答案 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对象,因此您可以轻松访问其pathfile names等。