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

时间:2016-08-22 09:06:10

标签: html html5-audio wysiwyg silverstripe shortcode

仍在前往集合Silverstripe 3.4的路上我遇到了一个我无法解决的挑战。

我网站上的许多页面必须包含一个音频播放器,允许访问者播放专门与所查看页面相关的自托管曲目。通常情况下,我会将以下html嵌入到播放器的引擎中直接进入页面的代码,但是使用Silverstripe的WYSIWYG编辑器不是一个选项,因为它拒绝在html查看模式中包含“复制”代码。

我还没有调查是否可以修改编辑器以接受'复制'代码;不确定这是否也是一种选择......

所以,我现在正在寻找通过我的WYSIWYG在适当的页面中注入代码的方法 - 例如以下内容:

<!-- 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 -->

注意:对于它的价值,每个audioplayer都有自己的ID“AUDIOPLAYER_ID”,以确保页面可以容纳多个玩家。

任何人都可以通过短代码或所见即所得的干预方式分享如何实现这一目标的任何智慧吗?

提前谢谢!

2 个答案:

答案 0 :(得分:0)

我会实施

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

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

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

答案 1 :(得分:0)

很抱歉我的回应荒谬延迟Greg,但看起来很有帮助。问题是:在我能够让#2和#3工作之前,我需要用SS的短代码进行自我提升。我将从这里与伙伴一起耕作。

非常感谢!