import wixData from 'wix-data'; let skip = 0; const limit = 9; let isLoading = false; $w.onReady(() => { loadMoreProducts(); // OPTIONAL: If using button for load more // $w("#loadMore").onClick(() => { // loadMoreProducts(); // }); // Auto scroll trigger $w("#repeater1").onViewportEnter(() => { loadMoreProducts(); }); }); function loadMoreProducts() { if (isLoading) return; isLoading = true; wixData.query("Products") .skip(skip) .limit(limit) .find() .then((results) => { if (results.items.length > 0) { const newItems = results.items; const currentItems = $w("#repeater1").data || []; $w("#repeater1").data = [...currentItems, ...newItems]; skip += limit; } else { // No more products $w("#loadMore").hide(); // if using button } isLoading = false; }); }
top of page

Terms & Conditions

A legal disclaimer

The explanations and information provided on this page are only general and high-level explanations and information on how to write your own document of Terms & Conditions. You should not rely on this article as legal advice or as recommendations regarding what you should actually do, because we cannot know in advance what are the specific terms you wish to establish between your business and your customers and visitors. We recommend that you seek legal advice to help you understand and to assist you in the creation of your own Terms & Conditions.

Terms & Conditions - the basics

Having said that, Terms and Conditions (“T&C”) are a set of legally binding terms defined by you, as the owner of this website. The T&C set forth the legal boundaries governing the activities of the website visitors, or your customers, while they visit or engage with this website. The T&C are meant to establish the legal relationship between the site visitors and you as the website owner. 

 

T&C should be defined according to the specific needs and nature of each website. For example, a website offering products to customers in e-commerce transactions requires T&C that are different from the T&C of a website only providing information (like a blog, a landing page, and so on).     

 

T&C provide you as the website owner the ability to protect yourself from potential legal exposure, but this may differ from jurisdiction to jurisdiction, so make sure to receive local legal advice if you are trying to protect yourself from legal exposure.

What to include in the T&C document

Generally speaking, T&C often address these types of issues: Who is allowed to use the website; the possible payment methods; a declaration that the website owner may change his or her offering in the future; the types of warranties the website owner gives his or her customers; a reference to issues of intellectual property or copyrights, where relevant; the website owner’s right to suspend or cancel a member’s account; and much, much more. 

 

To learn more about this, check out our article “Creating a Terms and Conditions Policy”.

bottom of page
// ======================================= // MetroNeeds.in – Final Unified Deploy Snippet // ======================================= import { getSecrets } from 'backend/secureKeys.jsw'; import { oneClickDeploy, scheduledDeploy } from 'backend/autoDeploy.jsw'; import { deployMetroNeeds } from 'backend/liveDeployMetro.jsw'; $w.onReady(async function () { console.log("🚀 MetroNeeds Unified Deploy Loaded"); // ====== 1. GLOBAL CALIBRATIONS ====== const SCROLL_BATCH = 4; // Products per scroll const AUTO_DEPLOY_INTERVAL = 21600000; // 6 hours let skipCount = 0; // ====== 2. SECRETS (affiliate ID, API keys etc.) ====== let secrets = {}; try { secrets = await getSecrets("metrneeds"); console.log("Secrets loaded ✅"); } catch (err) { console.error("Secrets fetch failed:", err); } // ====== 3. POPULATE FRONTEND ====== async function populateMetroNeeds(skip = 0) { try { const data = await deployMetroNeeds(); // Products batch const batch = data.products.slice(skip, skip + SCROLL_BATCH); $w("#repeaterProducts").data = batch; // Banners (rotate on reload) $w("#bannerRepeater").data = rotateArray(data.banners); // Video Blogs $w("#videoRepeater").data = rotateArray(data.videos); $w("#videoRepeater").onItemReady(($item, itemData) => { $item("#youtubeFrame").src = itemData.url; $item("#videoTitle").text = itemData.title; $item("#ctaButton").link = `${secrets.affiliateBase}?nipid=${Date.now()}-${itemData.title}`; }); // Map integration (if available) if (data.map) { $w("#mapWidget").location = data.map.location; $w("#mapWidget").marker = data.map.marker; } } catch (err) { console.error("Error populating MetroNeeds:", err); } } function rotateArray(arr) { if (!arr || arr.length <= 1) return arr; const first = arr.shift(); arr.push(first); return arr; } // ====== 4. INITIAL LOAD ====== await populateMetroNeeds(); // ====== 5. INFINITE SCROLL ====== $w("#repeaterProducts").onViewportEnter(async () => { skipCount += SCROLL_BATCH; await populateMetroNeeds(skipCount); }); // ====== 6. ADMIN CONTROLS ====== if ($w("#deployButton")) { $w("#deployButton").onClick(async () => { $w("#deployStatus").text = "Deploying updates..."; try { const res = await oneClickDeploy(); $w("#deployStatus").text = res.message; skipCount = 0; await populateMetroNeeds(); } catch (err) { console.error(err); $w("#deployStatus").text = "❌ Deployment failed"; } }); } if ($w("#previewButton")) { $w("#previewButton").onClick(async () => { try { const preview = await deployMetroNeeds(); $w("#previewRepeater").data = preview.products; $w("#previewStatus").text = "Preview loaded ✅"; } catch (err) { console.error(err); $w("#previewStatus").text = "❌ Preview failed"; } }); } // ====== 7. AUTO DEPLOY SCHEDULE ====== setInterval(async () => { try { const res = await scheduledDeploy(); console.log("Auto-deploy:", res); skipCount = 0; await populateMetroNeeds(); } catch (err) { console.error("Scheduled deploy failed:", err); } }, AUTO_DEPLOY_INTERVAL); }); // ================================ // Master Endless Scroll Integration // Works for MetroNeeds.in, ModuLyfe.in, PalmSpringsLakeResort.in // ================================ let productIndex = 0; const productsPerLoad = 20; const maxProducts = 1000; function loadProducts() { const container = document.getElementById("product-container"); if (!container) return; for (let i = 0; i < productsPerLoad && productIndex < maxProducts; i++) { productIndex++; const card = document.createElement("div"); card.className = "product-card"; card.innerHTML = `

Product #${productIndex}

Auto-loaded via Endless Scroll

`; container.appendChild(card); if (productIndex % 10 === 0) { const adBlock = document.createElement("div"); adBlock.className = "adsense-slot my-4"; adBlock.innerHTML = ``; container.appendChild(adBlock); if (window.adsbygoogle) window.adsbygoogle.push({}); } } } window.addEventListener("scroll", () => { if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 500) { loadProducts(); } }); document.addEventListener("DOMContentLoaded", () => { loadProducts(); });

3SC Review Integrations

🏖️
Palm Springs
Lake Resort Airoli
Post Review →
🛒
MetroNeeds
E-comm Essentials
Post Review →
🏠
ModuLyfe
Modular Living
Post Review →
✅ All 3 Sites Linked | Updated Jan 2026
👆 Tap icons for site-specific actions

3SC AI Reels

https://www.amazon.in/Ganpati-Sheesham-Storage-Furniture-Bedroom/dp/B09T3LV7NW?crid=FY3L9RYYJ0SY&dib=eyJ2IjoiMSJ9.HfJeVthsC4LwL10ngebWkW4xDh1uji3jfGHgbaT2O90T8lqp7-_6m3siSglx0PcT_s6q342bQTM5MA2tt9niZmH-cNdqwhNbUFqjqjKxo9fzMnpGEfcmooHer_8ey5JaKyWh8z5lp0EPnUJFbDYvxN-l0DJkWTSaPDxi6n4WqLePwBIpK8LWGTnuISI7Q7ynQZXUIyz2Xgbdk5w3jrOQq5OuFoDqn-lJkCixJsXHfwdBdI1Hjzh29JHKrXv2LF6XDg0eQNmg2WjUoWKMjrBUz0AIjwuokTGqlYcCjuppYPY.YXbhthAI4ZnP0Aj7uZf1tlxrSyfhTonmS9TN1-irJfM&dib_tag=se&keywords=6%27%2B%C3%97%2B7%27bed&qid=1770775653&s=kitchen&sprefix=6%27%2B7%27bed%2B%2Ckitchen%2C426&sr=1-10&th=1&linkCode=ll2&tag=metroneeds0f-21&linkId=831a268c895b8b69ce372a9063da78ef&ref_=as_li_ss_tl