Fotorama как встроить iframe?

Нужно добавить iframe в галерею fotorama.

Изображение вкладки можно исправить. Src должен быть параметром для передачи.

Обратите внимание, что это на Magento 2.0


person Liam Mitchell    schedule 23.06.2018    source источник


Ответы (1)


Сначала получите доступ к элементу dom и объекту API.

// Get the Dom Element.
var $fotorama = jQuery('div.gallery-placeholder > div.fotorama');

// Get the API object.
var fotorama = $fotorama.data('fotorama');

Прослушайте событие fotorama:load и замените содержимое iframe.

// On load handler for fotorama.
$fotorama.on('fotorama:load', function fotorama_onLoad(e, fotorama, extra) {
    if (extra.frame.type === 'iframe') {
        // Replace the contents with the iframe.
        extra.frame.$stageFrame.html('<iframe type="text/html" width="100%" height="100%" src="' + extra.frame.src + '" frameborder="0" scrolling="no" allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe>');
    }
});

Затем вы можете отправить новые данные для iframe следующим образом.

fotorama.push({ img: 'iframe.png', thumb: 'iframe.png', 'src': 'http://someurlforiframe', type: 'iframe' });

Примечание. Вы хотите, чтобы iframe.png или другое изображение с уменьшенным размером было готово к загрузке.

Я использовал 80х80.

Мне удалось успешно встроить 3dvieweronline в галерею, используя этот код из шаблона в пользовательском модуле с работающей полноэкранной функциональностью.

person Liam Mitchell    schedule 23.06.2018
comment
Привет @liam, Ваш код работает нормально, но он будет работать только с функцией fotoroma:load. Не могли бы вы помочь мне при работе с настраиваемым продуктом, так как при загрузке продукта он работает нормально, но когда я меняю любой цвет или изменение атрибута размера тогда этот видео iframe не приходил или не работал, так как уже есть видео для этого конкретного продукта с параметрами цвета / размера. - person Nayan Baraiya; 10.07.2020
comment
Извините, я не знаю, как это работает для настраиваемых продуктов, так как я использовал его только для простых продуктов. Конечно, было бы интересно узнать, заработаете ли вы, хотя @NayanBaraiya Вероятно, потому что каждый настраиваемый продукт может иметь свои собственные изображения / носители. Возможно, вы сможете использовать миксин или что-то еще? чтобы изменить поведение при изменении параметра и установке галереи настраиваемых продуктов. - person Liam Mitchell; 11.07.2020
comment
Мне действительно интересно, возможно ли заменить Fotorama чем-то совершенно другим. - person Liam Mitchell; 11.07.2020
comment
См. app\code\Magento\ConfigurableProduct\view\frontend\web\js\configurable.js _changeProductImage _addFotoramaVideoEvents Они добавляют изображения. они вызывают галерею.updateData(images) lib\web\fotorama\fotorama.js имеет метод updateData, но событие не генерируется. Поэтому, возможно, потребуется расширить configurable.js, чтобы делать то, что вы хотите, с добавлением iframe или других вещей, которые вы хотите встроить, в зависимости от настраиваемых параметров/артикул продукта. - person Liam Mitchell; 11.07.2020
comment
Привет @liam, спасибо за ответ, я попробую отладить fotorama.js и дам вам знать. - person Nayan Baraiya; 15.07.2020