Silverstripe | 插入HTML短代码 - 页面特定

3

我正在尝试使用Silverstripe 3.4,但遇到一个无法解决的挑战。

我的网站上有许多页面需要包含音频播放器,让访客播放与所浏览页面相关的自托管音轨。通常情况下,我会将以下HTML代码嵌入到页面代码中的播放器引擎中,但由于Silverstripe的所见即所得编辑器不接受在HTML查看模式下复制粘贴的代码,这不是一个选项。

我还没有调查过是否有可能修改编辑器以接受复制粘贴的代码;不确定这是否也是一个选项...

因此,我现在正在寻找通过我的所见即所得编辑器在适当的页面中注入代码的方法,例如以下代码:

<!-- Start of audio player body section html codes -->
<div id="AUDIOPLAYER_ID" style="display:block;position:relative;width:360px;height:auto;margin:0px auto 0px;">
<ul class="AUDIOPLAYER_CLASS" style="display:none;">
<li data-artist="TRACK_ARTIST" data-title="TRACK_TITLE" data-album="ALBUM_NAME" data-info="TRACK_INFO" data-image="TRACK_IMAGE" data-duration="TRACK_MINS">
<div class="TRACKSOURCE" data-src="SELF_HOST_TRACK_URL" data-type="audio/mpeg" />
</li>
</ul>
</div>
<!-- End of body section HTML codes -->

注意:每个音频播放器都有自己的ID“AUDIOPLAYER_ID”,以确保页面可以容纳多个播放器。
请问是否有人能分享如何通过短代码或WYSIWYG干预来实现最佳效果?
提前致谢!

1
你尝试过短代码的方法吗? - bummzack
是的,短代码是正确的选择。文档在这里:https://docs.silverstripe.org/en/3.4/developer_guides/extending/shortcodes/ 一些用于Youtube和Vimeo的短代码可以成为您成功的蓝图:https://github.com/studiobonito/silverstripe-shortcodes ... 我会将HTML放入模板中,并通过短代码像示例中那样插入。您是从DataObjects获取数据吗?还是手动插入所有字段(容易出错...)? - wmk
这个模块适用于短代码。它会添加一个按钮,然后允许您选择一个短代码类型,再选择一个短代码。这在数据对象方面表现良好。https://github.com/sheadawson/silverstripe-shortcodable - Gavin Bruce
2个回答

0

抱歉回复迟到了,Greg。但是看起来很有帮助。问题是:在我能让第二和第三个工作之前,我需要提升自己的SS短代码技能。我会继续努力的。

非常感谢!


0

我会实现以下内容:

  • 具有与曲目和播放列表相关系的AudioPlayer数据对象
  • AudioPlayerAdmin用于管理AudioPlayer对象
  • 一个页面将拥有has_one AudioPlayer关系

要呈现音频播放器对象,您有以下选项:

  • 页面模板可以使用$AudioPlayer变量(返回对象的关系名称),并在AudioPlayer :: forTemplate()中呈现该对象
  • 在页面内容字段中使用短代码[audioplayer]。处理程序可以从Director :: get_current_page()-> AudioPlayer()检查当前页面的audioplayer
  • 在页面内容字段中使用短代码[audioplayer,id = XXX]。处理程序可以通过ID检查现有的音频播放器:AudioPlayer :: get()-> byID($ id)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接