Drupal - пользовательская тема не разбирает разметку медиа модуля
У меня проблема с модулем Media для Drupal 7, он отлично работает на всем сайте, кроме созданного мной пользовательского модуля. Поле, которое используется этим модулем, использует то же форматирование текста, что и остальная часть сайта, оно правильно отображает жирный шрифт, таблицы, все вещи TinyMCE. Но так или иначе это не может обработать изображения, вставленные медиа-плагином.
Если я добавлю обычный тип содержимого статьи, то все будет нормально. Только поля, представленные моим модулем, не анализируются.
Итак, я отображаю поле:
echo '<p class="product-section-content">' . $element['value'] . '</p>'."\n";
но вместо изображения я получаю:
[[{"type":"media","view_mode":"media_large","fid":"71","attributes":{"alt":"","class":"media-image","typeof":"foaf:Image"}}]][[{"type":"media","view_mode":"media_large","fid":"63","attributes":{"alt":"","class":"media-image","typeof":"foaf:Image"}}]]
Как мне позвонить, чтобы разобрать эту разметку тегов?
5 ответов
Для модуля Media (только ветка 1.x) вы обычно можете использовать функцию media_filter:
print media_filter(html);
Это потому, что в модуле Media есть новый фильтр ввода, который по умолчанию не активирован. Этот фильтр необходим для анализа тегов мультимедиа.
Вы должны пойти в admin/config/content/formats
отредактируйте текстовый формат (ы), который вы хотите использовать с медиа, и включите Converts Media tags to Markup
флажок для каждого.
Тогда это будет работать:)
Если кто-либо использует ветку Media module 2.x, вы должны использовать:
print media_wysiwyg_filter(html);
Похоже, вам нужно использовать функцию render(), а не просто распечатывать значение для элемента.
http://api.drupal.org/api/drupal/includes--common.inc/function/render/7
поэтому ваш код должен выглядеть примерно так:
echo '<p class="product-section-content">'.render($element).'</p>'."/n";
Помогло бы иметь немного больше контекста о вашем модуле. Вы пытаетесь распечатать этот элемент в файле шаблона? Ваша цель - просто отредактировать HTML-код для элемента? и т.п.
Эй, вам нужно использовать drupal "safe_value" вместо "value"