GRAV 显示所有 page.media 项
GRAV display all page.media items
我正在使用 GRAV cms 创建一个网站,我偶然发现了一个我需要帮助的问题...我创建了一个页面,我希望它列出我在 GRAV 中上传的所有 pdf 文件。我希望输出看起来像这样:
纯硬编码的 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-s 的数量...
grav 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:
值为“.”的意外标记 "punctuation" ("operator" 预期值为 "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>
标签是空的(看起来像这样):
<a href="" class="action-btn m-0" download=""></a>
我怎样才能实现这个或者我的代码有什么问题?
<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/";
如果您需要进一步的帮助,请回复我。祝你好运
我正在使用 GRAV cms 创建一个网站,我偶然发现了一个我需要帮助的问题...我创建了一个页面,我希望它列出我在 GRAV 中上传的所有 pdf 文件。我希望输出看起来像这样:
纯硬编码的 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-s 的数量...
grav 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: 值为“.”的意外标记 "punctuation" ("operator" 预期值为 "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>
标签是空的(看起来像这样):
<a href="" class="action-btn m-0" download=""></a>
我怎样才能实现这个或者我的代码有什么问题?
<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/"; 如果您需要进一步的帮助,请回复我。祝你好运