1

在使用 Twig 的 Grav 模板中,我有

<audio controls>
    <source src="{{ page.find('/mp3s').media['{{ page.header.samplename }}.mp3'] }}">
</audio>

什么都没有渲染,当我查看源代码时,我看到的是

<audio controls>
   <source src="">
</audio>

我知道它page.header.samplename包含 MP3 文件的有效名称。如果我用{{ page.header.samplename }}MP3 文件的显式名称替换,代码就可以工作。所以我一定有语法错误。我尝试过各种烫发,也搜索过 Stack Overflow。

代码应该是什么?

4

2 回答 2

1

DarkBee 提供了一个有效的答案,但请注意,您也可以使用以下方法输出标签:

{{ page.media['myaudiofile.mp3'].html() }}

这将输出:

<audio controls>
   <source src="http://example.com/youraudiofile.mp3">
</audio>

如果您希望您的用户能够从管理员那里选择音频文件,您可以使用:

{{ page.media[header.yourfilepicker].html() }}

这假设您在管理员中有一个匹配的文件选择器字段,例如:

yourfilepicker:
  type: filepicker
  folder: 'page@:/mp3s'
  label: Select an audio file
  preview_images: true
  accept:
    - .mp3
于 2017-10-11T08:24:52.897 回答
1

DarkBee 提供了这个答案

<source src="{{ page.find('/mp3s').media[page.header.samplename~'.mp3'] }}"> – DarkBee yesterday 

(而且效果很好)

于 2017-10-10T16:58:25.840 回答