2016-08-22 3 views
3

Еще на моем пути к Silverstripe 3.4 Я натыкаюсь на вызов, который я не могу решить.Silverstripe | Вставить html shortcode - специальная страница

Несколько страниц на моем сайте должны включать в себя аудиоплеер, который позволяет посетителям воспроизводить самостоятельно размещенную дорожку, которая относится конкретно к просматриваемой странице. Обычно я вставлял следующий html в движок игрока прямо в код страницы, но с редактором WYSIWYG от Silverstripe, который не является вариантом, поскольку он отвергает включение кода «скопированного кода» в режиме просмотра 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», чтобы страницы могли содержать несколько игроков.

Может ли кто-нибудь поделиться какой-либо мудростью о том, как достичь этого лучше всего, либо посредством коротких кодов, либо посредством вмешательства WYSIWYG?

Куча благодарностей заранее!

+1

Вы пробовали подход к короткому замыканию? – bummzack

+0

yup, shortcode - это путь. Документы здесь: https://docs.silverstripe.org/en/3.4/developer_guides/extending/shortcodes/ Некоторые короткие коды для Youtube и Vimeo могут стать основой вашего успеха: https://github.com/studiobonito/silverstripe-shortcodes ... Я бы поместил html в шаблон и ввел его с помощью короткого кода, как в примерах. Получаете ли вы данные из DataObjects? Или вы просто вставляете вручную все поля (подверженные ошибкам ...)? – wmk

+0

Этот модуль подходит для коротких кодов. Он добавляет кнопку, а затем позволяет выбрать короткий тип кода, а затем короткий код. Это хорошо работает с объектами данных. https://github.com/sheadawson/silverstripe-shortcodable –

ответ

0

Я бы реализовать

  • аудиоплеер DataObject с отношениями к трекам и воспроизведению
  • AudioPlayerAdmin управлять AudioPlayer объектов
  • разметки страницы, то будет иметь отношение HAS_ONE AudioPlayer

Оказать у вас есть следующие возможности:

  • Шаблон страницы может использовать переменную $ AudioPlayer (имя отношения, которая возвращает объект), и вы визуализируете объект в AudioPlayer :: forTemplate()
  • Используйте короткий код [audioplayer] на странице Content field. Обработчик может проверить текущий аудиоплеер на странице: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. Обработчик может проверить существующий аудиоплеер по ID: AudioPlayer :: get() -> byID ($ id)
0

Прошу прощения за смехотворную задержку моего ответа Грега, но это выглядит полезно. Проблема в том, что я должен подтянуть себя шорт-кодами SS, прежде чем я смогу получить № 2 и № 3 для работы. Я буду пахать отсюда.

Большое спасибо!

Смежные вопросы