Um artigo de nosso funcionário de seu blog pessoal.
Ao desenvolver o módulo no painel de administração, precisei usar os modais OpenCart para exibir certas informações, bem como para exibir o formulário. Minha experiência de front-end naquela época era razoável , mas um colega sugeriu que o OpenCart usasse jquery (2.1.1), e esta biblioteca tem suporte para janelas pop-up. Mas nem tudo é tão simples ...
Para esclarecer: modal == popup == popup .
Biblioteca de janela modal
Para usar a janela modal OpenCart , você precisa determinar qual biblioteca fornece a funcionalidade usada neste mecanismo para isso. Desmontando o painel de administração do OpenCart 3.0 (no 2.3 não existe tal botão),
foi encontrado um botão na seção , ao ser clicado, o qual uma janela pop-up apareceu .
O que é necessário, começamos a analisar :)
Vá para a página "Barra de status", abra seu código-fonte e veja o script no final:
$('#button-setting').on('click', function() {
$.ajax({
url: 'index.php?route=common/developer&user_token=D9aTD65JQVdyOY9pcVxcRUx0M3eTefnr',
dataType: 'html',
beforeSend: function() {
$('#button-setting').button('loading');
},
complete: function() {
$('#button-setting').button('reset');
},
success: function(html) {
$('#modal-developer').remove();
$('body').prepend('<div id="modal-developer" class="modal">' + html + '</div>');
$('#modal-developer').modal('show');
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
, id button-setting
, ajax , popup . :
$('#modal-developer').modal('show');
jquerymodal. bootstrap . - , modal
.
( ), , bootstrap.min.js
.
OpenCart bootstrap.
popup OpenCart
, :
div
modal-header
h4
,
div
modal-body
¨C11C
, , :
<div id="modal-window" class="modal">
<div class="modal-dialog">
<div class="modal-content">
<!-- -->
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title"></h4>
</div>
<!-- -->
<div class="modal-body"></div>
</div>
</div>
</div>
id modal-window
:
$('#modal-window').modal('show');
js. OpenCart. :
$this->model_extension_event->addEvent('modal_window', 'admin/view/sale/order_form/after', 'extension/module/modal_window/eventSaleOrderFormAfter');
:
public function eventSaleOrderFormAfter(&$route, &$args, &$output)
{
$idOrder = $args["order_id"];
$this->load->model('sale/order');
$this->load->model('catalog/product');
//
$aOrderProducts = $this->model_sale_order->getOrderProducts($args["order_id"]);
//
$sOrderProducts = "";
//
for($i=0; $i<count($aOrderProducts); ++$i)
{
$aProduct = $this->model_catalog_product->getProduct($aOrderProducts[$i]["product_id"]);
$sOrderProducts .= "<li>".$aProduct["name"]." - ".$aProduct["model"]." (".$aOrderProducts[$i]["quantity"]." .): ".round($aOrderProducts[$i]["total"], 2).". </li>";
}
$sOrderProducts = "<ul>$sOrderProducts</ul>";
//
$sModal = '
<div id="modal_window" class="modal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title"> </h4>
</div>
<div class="modal-body">
'.$sOrderProducts.'
</div>
</div>
</div>
</div>
<script>$("#modal_window").modal("show");</script>
';
// body
$iPos = strripos($output, "</body>");
$output = substr($output, 0, $iPos).$sModal.substr($output, $iPos);
}
Cada vez que você entrar na página de edição do pedido, uma janela pop-up com uma lista de produtos aparecerá.
Você pode inserir um botão na barra de botões no painel de administração (ou em qualquer outro lugar), pendurar um manipulador de cliques no botão e exibir uma janela modal (como é feito na página
). No entanto, isso exigiria o uso de expressões regulares ou um analisador DOM .