저는 magento2를 처음 사용합니다. 새 양식에 대한 팝업 모달을 만들려고합니다. 잘 작동하지만 모달을 만들 수없는 팝업을 만들었습니다.
다음은 페이지로드시로드되는 팝업 코드입니다.
require([
'jquery',
'Magento_Ui/js/modal/alert'
],
function($, alert) {
alert({
title: "Some title",
content: "we can show popuop based on cookies later",
autoOpen: true,
clickableOverlay: false,
focus: "",
actions: {
always: function(){
console.log("modal closed");
}
}
});
}
);
모달을 만들 수 있도록 도와주세요. 도움을 주셔서 감사합니다.
답변
아래 코드를 사용해보십시오 :
<div id="popup-modal">
<h1> Hi I'm here.... </h1>
</div>
<script>
require(
[
'jquery',
'Magento_Ui/js/modal/modal'
],
function(
$,
modal
) {
var options = {
type: 'popup',
responsive: true,
innerScroll: true,
title: 'popup modal title',
buttons: [{
text: $.mage.__('Continue'),
class: '',
click: function () {
this.closeModal();
}
}]
};
var popup = modal(options, $('#popup-modal'));
$('#popup-modal').modal('openModal');
}
);
</script>
답변
Magento_Ui / js / modal / modal 위젯을 사용해야합니다. 공식 문서
예 에서 자세한 내용을 참조하십시오 .
require([
'jquery',
'jquery/ui',
'Magento_Ui/js/modal/modal'
], function($){
$('<div />').html('Modal Window Content')
.modal({
title: 'My Title',
autoOpen: true,
closed: function () {
// on close
},
buttons: [{
text: 'Confirm',
attr: {
'data-action': 'confirm'
},
'class': 'action-primary',
click: clickCallback
}]
});
});
답변
헤더 영역의 모달 창 팝업
<a href="#" id="click-header">
View Video
</a>
<div id="header-mpdal" style="display:none;">
<div class="videoWrapper">
<iframe allow="encrypted-media" allowfullscreen="" frameborder="0" gesture="media" height="315" src="https://www.youtube.com/embed/P45AMKIW0ok" width="560">
</iframe>
</div>
</div>
스크립트는 다음과 같습니다 :-
<script>
require(
[
'jquery',
'Magento_Ui/js/modal/modal'
],
function(
$,
modal
) {
var options = {
type: 'popup',
responsive: true,
innerScroll: true,
title: '',
buttons: [{
text: $.mage.__('Close'),
class: '',
click: function () {
this.closeModal();
}
}]
};
var popup = modal(options, $('#header-mpdal'));
$("#click-header").on('click',function(){
$("#header-mpdal").modal("openModal");
});
}
);
</script>
이 사이트는 반응 형 사이트에 있으므로 비디오 래퍼를 추가하여 반응 형인지 확인했습니다.
이를 수행하기위한 CSS는 다음과 같습니다.
.videoWrapper { position: relative;padding-bottom: 56.25%; /* 16:9 */padding-top: 25px;height: 0;
iframe {position: absolute;top: 0;left: 0;width: 100%;height: 100%;}
}
답변
정적 블록을 만들고 다음을 삽입하십시오.
<html>
<head>
<style>
.modalDialog {
position: fixed;
font-family: Arial, Helvetica, sans-serif;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0,0,0,0.8);
z-index: 99999;
opacity:0;
-webkit-transition: opacity 400ms ease-in;
-moz-transition: opacity 400ms ease-in;
transition: opacity 400ms ease-in;
pointer-events: none;
}
.modalDialog:target {
opacity:1;
pointer-events: auto;
}
.modalDialog > div {
width: 400px;
position: relative;
margin: 10% auto;
padding: 5px 20px 13px 20px;
border-radius: 10px;
background: #fff;
background: -moz-linear-gradient(#fff, #999);
background: -webkit-linear-gradient(#fff, #999);
background: -o-linear-gradient(#fff, #999);
}
.close {
background: #606061;
color: #FFFFFF;
line-height: 25px;
position: absolute;
right: -12px;
text-align: center;
top: -10px;
width: 24px;
text-decoration: none;
font-weight: bold;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
-moz-box-shadow: 1px 1px 3px #000;
-webkit-box-shadow: 1px 1px 3px #000;
box-shadow: 1px 1px 3px #000;
}
button {
background-color: #0ea3d6;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
.close:hover { background: #00d9ff; }
</style>
</head>
<body>
<div class="row">
<a href="#urlid"><button>Button</button></a>
<div id="urlid" class="modalDialog">
<div>
<a href="#close" title="Close" class="close">X</a>
<h2>Hand Tools</h2>
<p>This is a sample modal box that can be created using the powers of CSS3.</p>
<p>You could do a lot of things here like have a pop-up ad that shows when your website loads, or create a login/register form for users.</p>
</div>
</div>
</div>
</body>
</html>
답변
<script>
require(['Magento_Ui/js/modal/confirm'],
function(confirm) {
confirm({
title: 'Confirm Dialog',
content: "We need your confirmation there",
actions: {
confirm: function() { console.log('confirmed') },
cancel: function() { console.log('canceled') }
}
});
);
</script>