Create your own funnel template
You can convert any HTML file into a funnel template by following these steps:
1. Create the HTML Structure
2. Add the necessary attributes to be replaced with the product information dynamically, combined with data-vvveb-disabled
Add checkout-form
id to render the checkout form
<form data-vvveb-disabled id="checkout-form">
// rest of the code remains the same
</form>
Add "x-checkout-btn
id to render the checkout button
The x-checkout-btn can be used without the data-vvveb-disabled
attribute
<button id="x-checkout-btn">Buy Now - Cash on Delivery</button>
Add totalCost
id to render the total cost of the order
<div>
<span data-vvveb-disabled id="totalCost"> EGP2,254.33 </span>
</div>
Add price, salePrice, basePrice, discountPercent
ids to render the product's price and the variants of the product will render automatically
<div data-vvveb-disabled id="price">
<p id="salePrice">EGP100</p>
<p id="basePrice">EGP150</p>
<div class="percentage" id="discountPercent"><span> -40% </span></div>
</div>
add fixed-price, salePrice, basePrice, discountPercent
ids to render only the product's price
<div data-vvveb-disabled id="price">
<p id="salePrice">EGP100</p>
<p id="basePrice">EGP150</p>
<div class="percentage" id="discountPercent"><span> -40% </span></div>
</div>
Add x-bundles-title
id to render the bundle section title
<div data-vvveb-disabled id="x-bundles-title">
// rest of the code remains the same
</div>
Add x-bundles
id to render the bundle section
<div data-vvveb-disabled id="x-bundles">
// rest of the code remains the same
</div>
Render the product's images in the carousel
create a div with the id carouselExampleIndicators
<div
id="carouselExampleIndicators"
data-vvveb-disabled
data-ride="carousel"
></div>
create a script tag with the id gallery-template
as following
<script id="gallery-template" type="text/html">
<div class="carousel-container">
{{# slides}}
<div class="carousel-item {{#isFirst}} active {{/isFirst}}">
<img class="d-block w-100" src="{{url}}" alt="" />
</div>
{{/ slides}}
</div>
<div>
<ol class="thumbnails-container">
{{# slides}}
<li
data-bs-target="#carouselExampleIndicators"
data-bs-slide-to="{{index}}"
class=" {{#isFirst}} active {{/isFirst}} thumbnail-item"
>
<img class="d-block object-fit-cover" src="{{url}}" alt="" />
</li>
{{/ slides}}
</ol>
</div>
</script>
the final HTML structure should look like this
<div>
<div
id="carouselExampleIndicators"
data-vvveb-disabled
data-ride="carousel"
></div>
<script id="gallery-template" type="text/html">
<div class="carousel-container">
{{# slides}}
<div class="carousel-item {{#isFirst}} active {{/isFirst}}">
<img class="d-block w-100" src="{{url}}" alt="" />
</div>
{{/ slides}}
</div>
<div>
<ol class="thumbnails-container">
{{# slides}}
<li
data-bs-target="#carouselExampleIndicators"
data-bs-slide-to="{{index}}"
class=" {{#isFirst}} active {{/isFirst}} thumbnail-item"
>
<img class="d-block object-fit-cover" src="{{url}}" alt="" />
</li>
{{/ slides}}
</ol>
</div>
</script>
</div>
It will be replaced with the product's images automatically
use the carousel-container
class to style the carousel and the carousel-item
class to style the carousel-item.
You can use thumbnails-container
class to style the thumbnails container and the thumbnail-item
class to style the thumbnails.
The classes provided are for demonstration purposes only. Feel free to use any classes you prefer, but ensure the specified IDs remain unchanged.
3. Add the necessary scripts to the HTML file
<!-- Vendor JS Files -->
<script src="https://files.easy-orders.net/funnels-assets/souq/assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="https://files.easy-orders.net/funnels-assets/souq/assets/vendor/swiper/swiper-bundle.min.js"></script>
<!-- Template Main JS File -->
<script src="https://files.easy-orders.net/funnels-assets/souq/assets/js/main.js"></script>
<!-- header timer -->
<script src="https://files.easy-orders.net/funnels-assets/souq/assets/js/timer.js"></script>
<!-- jquery -->
<script
src="https://code.jquery.com/jquery-3.7.1.js"
integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
crossorigin="anonymous"
></script>
<!-- fade-up animation [aos] -->
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script>
// check if AOS is defined recursively
function checkAOS() {
if (typeof AOS !== "undefined") {
const arr = AOS.init({
duration: 500,
duration: 800,
mirror: false,
once: true,
});
if (!arr) {
setTimeout(checkAOS, 100);
}
} else {
setTimeout(checkAOS, 100);
}
}
checkAOS();
</script>
<!-- <script src="https://files.easy-orders.net/funnels-assets/souq/assets/js/aos.js"></script> -->
<!-- Initialize Swiper -->
<script src="https://files.easy-orders.net/funnels-assets/souq/assets/js/swiper.js"></script>
<script src="https://unpkg.com/mustache@latest"></script>
<script id="product-data">
function initMustache() {
if (!window.Mustache) {
return setTimeout(initMustache, 50);
}
//begin-slides
const slides = [
{
url: "https://files.easy-orders.net/placeholder.webp",
index: 0,
isActive: true,
},
{
url: "https://files.easy-orders.net/placeholder.webp",
index: 1,
isActive: false,
},
{
url: "https://files.easy-orders.net/placeholder.webp",
index: 2,
isActive: false,
},
{
url: "https://files.easy-orders.net/placeholder.webp",
index: 3,
isActive: false,
},
{
url: "https://files.easy-orders.net/placeholder.webp",
index: 4,
isActive: false,
},
];
//end-slides
const template = document.getElementById("gallery-template").innerHTML;
const rendered = Mustache.render(template, {
name: "Luke",
slides,
isFirst: function () {
return this.index === 0;
},
});
document.getElementById("carouselExampleIndicators").innerHTML = rendered;
}
initMustache();
</script>
4. Add your html code to the funnel code editor
Open any created funnel or create a new one
Click on the funnel code editor
Paste your html code
summary
The total size of the html file or any other file should not exceed 80kb
Don't add internal css or js. instead, use external files you can go to Upload assets to upload your css and js files and then put the link in the head tag
The base html template that you can start with
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
<title>your product name</title>
<meta content="" name="description" />
<meta content="" name="keywords" />
<!-- Vendor CSS Files -->
<link
href="https://files.easy-orders.net/funnels-assets/souq/assets/vendor/bootstrap/css/bootstrap.min.css"
rel="stylesheet"
/>
<link
href="https://files.easy-orders.net/funnels-assets/souq/assets/vendor/swiper/swiper-bundle.min.css"
rel="stylesheet"
/>
<!-- fade-up animation [aos] -->
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet" />
<!-- editor sections styles -->
<link
href="https://files.easy-orders.net/funnels-assets/sections-assets/css/style.css"
rel="stylesheet"
/>
<!-- reviews file -->
<link
href="https://files.easy-orders.net/funnels-assets/reviews/css/style.css"
rel="stylesheet"
/>
<!-- Template Main CSS File -->
<!-- add your external css link here -->
</head>
<body>
<header>
<h1>Welcome to Our Product</h1>
</header>
<main>
<!-- demo content -->
<section>
<h2>Features</h2>
<article>
<h3>Feature 1</h3>
<p>Details about feature 1.</p>
</article>
<article>
<h3>Feature 2</h3>
<p>Details about feature 2.</p>
</article>
<article>
<h3>Feature 3</h3>
<p>Details about feature 3.</p>
</article>
</section>
</main>
<footer>
<p>© 2023 Your store Name. All rights reserved.</p>
</footer>
<!-- Vendor JS Files -->
<script src="https://files.easy-orders.net/funnels-assets/souq/assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="https://files.easy-orders.net/funnels-assets/souq/assets/vendor/swiper/swiper-bundle.min.js"></script>
<!-- jquery -->
<script
src="https://code.jquery.com/jquery-3.7.1.js"
integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
crossorigin="anonymous"
></script>
<!-- fade-up animation [aos] -->
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script>
// check if AOS is defined recursively
function checkAOS() {
if (typeof AOS !== "undefined") {
const arr = AOS.init({
duration: 500,
duration: 800,
mirror: false,
once: true,
});
if (!arr) {
setTimeout(checkAOS, 100);
}
} else {
setTimeout(checkAOS, 100);
}
}
checkAOS();
</script>
<!-- Initialize Swiper -->
<script src="https://files.easy-orders.net/funnels-assets/souq/assets/js/swiper.js"></script>
<script src="https://unpkg.com/mustache@latest"></script>
<script id="product-data">
function initMustache() {
if (!window.Mustache) {
return setTimeout(initMustache, 50);
}
//begin-slides
const slides = [
{
url: "https://files.easy-orders.net/placeholder.webp",
index: 0,
isActive: true,
},
{
url: "https://files.easy-orders.net/placeholder.webp",
index: 1,
isActive: false,
},
{
url: "https://files.easy-orders.net/placeholder.webp",
index: 2,
isActive: false,
},
{
url: "https://files.easy-orders.net/placeholder.webp",
index: 3,
isActive: false,
},
{
url: "https://files.easy-orders.net/placeholder.webp",
index: 4,
isActive: false,
},
];
//end-slides
const template = document.getElementById("gallery-template").innerHTML;
const rendered = Mustache.render(template, {
name: "Luke",
slides,
isFirst: function () {
return this.index === 0;
},
});
document.getElementById("carouselExampleIndicators").innerHTML =
rendered;
}
initMustache();
</script>
</body>
</html>