Popup OpenCart, jendela modal

Artikel oleh karyawan kami dari blog pribadinya.





Saat mengembangkan modul di panel admin, saya perlu menggunakan  modals OpenCart  untuk menampilkan informasi tertentu, serta untuk menampilkan formulir. Pengalaman frontend saya saat itu  biasa-biasa saja , tetapi seorang rekan menyarankan agar OpenCart menggunakan jquery (2.1.1), dan library ini memiliki dukungan untuk jendela popup. Tapi tidak semuanya sesederhana itu ...





Untuk memperjelas: modal == popup == popup .





Perpustakaan jendela modal

Tombol saat diklik di mana jendela modal ditampilkan
Tombol saat diklik di mana jendela modal ditampilkan

Untuk menggunakan  jendela modal OpenCart , Anda perlu menentukan  pustaka mana yang  menyediakan fungsionalitas yang digunakan di mesin ini untuk ini. Membongkar panel admin OpenCart 3.0 (di 2.3 tidak ada tombol seperti itu),



 sebuah tombol ditemukan di bagian tersebut  , ketika diklik di mana  jendela pop-up muncul .





Apa yang dibutuhkan, kita mulai parsing :)





Modal jendela di pengaturan Pengembang panel admin OpenCart
Modal jendela di pengaturan Pengembang panel admin OpenCart

Buka halaman "Status Bar", buka kode sumbernya dan lihat skrip di bagian akhir:





$('#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



.





Breakpoint pada metode modal
modal

 ( ), ,  bootstrap.min.js



.





Stack membawa bootstrap.min.js
bootstrap.min.js

OpenCart  bootstrap.





popup OpenCart

 , :





  • div



       modal-header



       h4



    ,





  • div



       modal-body



    ¨C11C





Melihat kode html dari jendela modal Opsi Pengembang
html

, , :





<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);
}

      
      



Setiap kali Anda masuk ke halaman edit order, jendela pop-up dengan daftar produk akan muncul.





Anda dapat memasukkan tombol ke dalam bilah tombol di panel admin (atau di mana pun), menggantung penangan klik pada tombol dan menampilkan jendela modal (seperti yang dilakukan di halaman 



). Namun, ini akan membutuhkan penggunaan ekspresi reguler  atau pengurai DOM .









Penulis: Vitaly Buturlin








All Articles