Рейтинг:0

Программно изменить режим просмотра медиаполя

флаг cn

Я пытаюсь программно изменить режим просмотра медиа-поля. Я создал режим просмотра под названием «модальный». Я создал хук mytheme_preprocess_media и попытался изменить режим просмотра различными способами, например

mytheme_preprocess_media(&$переменные) {
    $variables['view_mode'] = 'модальный';
    $variables['elements']['#view_mode'] = 'modal';
    $variables['content']['field_media_oembed_video']['#view_mode'] = 'modal';
}

но ни один не работает. Используя xdebug, я точно знаю, что этот хук срабатывает, но по какой-то причине он всегда использует режим просмотра по умолчанию.

Как программно изменить режим просмотра медиаполя?

sonfd avatar
флаг in
Вы пробовали [hook_entity_view_mode_alter()](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21entity.api.php/function/hook_entity_view_mode_alter/9.3.x)?
Matt avatar
флаг cn
@sonfd У меня есть, но этот хук не запускается моим медиа-полем.
4uk4 avatar
флаг cn
У полей нет режимов просмотра, которые есть у визуализированных сущностей. Значения, указанные в вопросе, предназначены только для информации, вы не можете их изменить. Однако, если поле отображает ссылочные объекты, вы можете попробовать изменить режим просмотра тех, если вы найдете их в дельтах поля. Но это зависит от того, как настроено поле, и тогда вам также нужно изменить ключи кеша.
4uk4 avatar
флаг cn
ОК, только что проверил имя поля и обнаружил, что это основное предустановленное поле, а тип поля не является полем ссылки. Я думаю, что вы полностью потерялись и вам нужно начать на один уровень выше в узле (если носитель относится к типу контента).
Matt avatar
флаг cn
@ 4uk4 меня смущает то, что если поле не поддерживает режимы просмотра, почему оно позволяет мне добавлять режимы просмотра в интерфейсе администратора? Кроме того, СМИ не является сущностью? Это то, к чему я могу добавить поля.
4uk4 avatar
флаг cn
Да, вы можете добавлять поля в медиа-объект, и поле в примере кода также является таким полем. Что сбивает с толку в вопросе, так это то, что вы подразумеваете под медиа-полем, такое поле, к которому вы можете получить доступ в хуке кода пример или поле в другом объекте, которому нужен другой хук?
Matt avatar
флаг cn
В моем wysiwyg я встраиваю медиаобъекты. Когда я встраиваю медиа-объект, я хочу иметь возможность изменить используемый режим просмотра.
Рейтинг:2
флаг cn

В моем wysiwyg я встраиваю медиаобъекты. Когда я встраиваю медиа-объект, я хочу иметь возможность изменить используемый режим просмотра.

Когда вы встраиваете медиаобъект в WYSIWYG, вы можете выбрать режим просмотра.Если вы хотите изменить это позже программно, вы должны изменить в <drupal-media> пометить атрибут режим просмотра данных. Если вы не указали режим просмотра, этот атрибут отсутствует, и вы должны его добавить.

Если вы хотите использовать хук предварительной обработки темы, используйте хук шаблона, содержащего поле WYSIWYG, а не шаблона мультимедиа. Найдите поле WYSIWYG в $переменные['контент'] и измените источник HTML, который вы найдете в '#текст'.

sonfd avatar
флаг in
В настройках формата текста, например./admin/config/content/formats/manage/full_html (Конфигурация > Создание контента > Текстовые форматы и редакторы > [Формат]) вы должны увидеть вкладку внизу под названием «Встроить медиа», где вы можете настроить, какие пакеты медиа могут быть встроены , какие режимы просмотра разрешены и какой режим просмотра используется по умолчанию.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.