GRAV показать все элементы page.media - PullRequest
0 голосов
/ 05 октября 2018

Я создаю веб-сайт с помощью GRAV cms и наткнулся на проблему, с которой мне нужна помощь ... Я создал страницу, для которой я хочу, чтобы она перечисляла все pdf-файлы, которые я загружаю в GRAV.Я хочу, чтобы вывод выглядел примерно так: enter image description here

Чисто жестко закодированный HTML для этого выглядит так:

    <div class="container pt-5 pb-5">
        <div class="row">
            <div class="col-6">
                <ul class="downloads">
                    <li class="download-item pb-3">
                        <i class="fas fa-file-pdf fa-lg"></i>
                        <a href="./assets/downoads/file.pdf" class="action-btn m-0" download</a>
.
. etc...
.
                    </li>
    </ul>
    </div>
    </div>
    </div>

и <li></li> повторяется столько раз, сколько указано в pdf-с ...

Гравитационная комбинация HTML и Twig выглядит следующим образом:

<div class="container pt-5 pb-5">
    <div class="row">
        <div class="col-12">
            <ul class="downloads">
                {% for pdf in page.media %}
                    <li class="download-item pb-3">
                        <i class="fas fa-file-pdf fa-lg"></i>
                        <a href="{{ pdf.url }}" class="action-btn m-0" download></a>
                    </li>
                {% endfor %}
            </ul>
        </div>
    </div>
</div>

Теперь этот код не работает, он генерирует эту ошибку: Twig_Error_Syntax: Неожиданный токен "пунктуация" значения "."(ожидается «оператор» со значением «in»).

Я также пробовал это:

<div class="container pt-5 pb-5">
    <div class="row">
        <div class="col-12">
            <ul class="downloads">
                {% for manuals in page.media %}
                    <li class="download-item pb-3">
                        <i class="fas fa-file-pdf fa-lg"></i>
                        {% set pdf = manuals.media %}
                        <a href="{{ pdf.url }}" class="action-btn m-0" download></a>
                    </li>
                {% endfor %}
            </ul>
        </div>
    </div>
</div>

и это:

<div class="container pt-5 pb-5">
    <div class="row">
        <div class="col-12">
            <ul class="downloads">
                <li class="download-item pb-3">
                    <i class="fas fa-file-pdf fa-lg"></i>

                    <a href="{{ page.media.url('/pdf') }}" class="action-btn m-0" download></a>
                </li>
            </ul>
        </div>
    </div>
</div>

Оба этих результата не генерировали ошибку, подобную приведенной выше ... страница загружена, но в режиме проверки элемента тег <a></a> был empy (выглядел так):

<a href="" class="action-btn m-0" download=""></a>

Как мне добиться этого или что не так с моим кодом ??

1 Ответ

0 голосов
/ 05 октября 2018

<div class="container pt-5 pb-5">
    <div class="row">
        <div class="col-12">
            <ul class="downloads">
<?PHP
    $path = "./filespath/"; //set the path of the folder that contains the files
    $dir_handle = @opendir($path) or die("Unable to open $path");
    while ($file = readdir($dir_handle)) 
    {if($file!="." && $file!=".." && is_file($path.$file)){$f[] = $file;}}
    closedir($dir_handle);
	if(count($f)>0){
    sort($f);//Set an order of the files
    $newpath=substr($path,2);//this takes out the ./ of the path
    foreach ($f as $val) {
    echo '
    <li class="download-item pb-3">
    <i class="fas fa-file-pdf fa-lg"></i>
    <a href="'.$newpath.$val.'" class="action-btn m-0" download>'.substr($val,0,-4).'</a><br>
    </li>
    ';
    }
	}
?>
                
            </ul>
        </div>
    </div>
</div>

Я не знаю, как работает GRAV, но этот код PHP должен вам помочь.Вам нужно только изменить путь к файлу, где находятся ваши файлы.Путь к папкам, в которых находятся ваши файлы, например: falconimogollon.com/here/there/filesarehere/ вы устанавливаете только $ path = "./here/there/filesarehere/";Если вам нужна дополнительная помощь, ответьте мне.Удачи

...