Miva Merchant Modules and Development
Want to start an online store? We work with you from start to finish, from commerce platform to design to SEO.
Experience counts, and we have a lot.

BOOTSTRAP 5 MODAL: Display Data Attributes

Scot Ranney • April 09, 2024


Easy way to display data attribute data in a Bootstrap 5 modal so that you can make one modal to rule them all. Includes product image loading based on image load order.

HTML

<mvt:foreach iterator="product" array="products">
	<mvt:do file="g.Module_Library_DB" name="l.settings:imagetotal" value="ProductImageList_Load_Product( l.settings:product:id,l.settings:productimages )" />
	<mvt:do file="g.Module_Library_DB" name="l.settings:imagetotal" value="Image_Load_ID( l.settings:productimages[1]:image_id,l.settings:firstimage )" />

	<p>
		<a href="&mvt:product:uri;" data-bs-toggle="modal" data-bs-target="#product-modal" data-desc="&mvte:product:descrip;" data-title="&mvte:product:name;" data-image="&mvt:firstimage:image;" >
	</p>
</mvt:foreach>

<mvt:comment>
#
# modal
#
</mvt:comment>

<div class="modal fade" id="product-modal" tabindex="-1" aria-labelledby="productDetails" aria-hidden="true">
  <div class="modal-dialog modal-lg">
	<div class="modal-content">
	  <div class="modal-header">
		<h1 class="modal-title fs-5 product-modal-title"></h1>
		<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
	  </div>
	  <div class="modal-body">
	<div class="row">
	<div class="col-sm-6">
			<img id="product-modal-image">
	</div>
	<div class="col-sm-6">
			<p class="product-modal-title fw-bold"></p>
			<div id="product-modal-description"></div>
	</div>
	</div>
	  </div>
	  <div class="modal-footer">
			<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
	  </div>
	</div>
  </div>
</div>

SCRIPT (jquery)

We use a class for the product title since it's being displayed in more than one place, otherwise an ID is more common for this stuff.

<script>
const myModalEl = document.getElementById('product-modal')
myModalEl.addEventListener('show.bs.modal', event => {
	var button = $(event.relatedTarget);
	var title = button.data('title');
	var desc = button.data('desc');
	var image = '/mm5/' + button.data('image');
	$(".product-modal-title").text(title);
	$("#product-modal-description").html(desc);
	$("#product-modal-image").attr("src", image);
})
</script>

https://www.scotsscripts.com/mvblog/bootstrap-5-modal-display-data-attributes.html

mvkb_dataattributes mvkb_bootstrap mvkb_modal