SELECT 
  cscart_bm_snapping.grid_id as grid_id, 
  cscart_bm_snapping.block_id as block_id, 
  IFNULL(
    dynamic_object_content.content, 
    default_content.content
  ) as content, 
  IFNULL(
    dynamic_object_content.object_id, 
    default_content.object_id
  ) AS object_id, 
  IFNULL(
    dynamic_object_content.object_type, 
    default_content.object_type
  ) AS object_type, 
  cscart_bm_block_statuses.object_ids as object_ids, 
  cscart_bm_snapping.*, 
  cscart_bm_blocks.*, 
  cscart_bm_blocks_descriptions.* 
FROM 
  cscart_bm_snapping 
  LEFT JOIN cscart_bm_blocks ON cscart_bm_blocks.block_id = cscart_bm_snapping.block_id 
  LEFT JOIN cscart_bm_block_statuses ON cscart_bm_snapping.snapping_id = cscart_bm_block_statuses.snapping_id 
  AND cscart_bm_block_statuses.object_type LIKE 'categories' 
  LEFT JOIN cscart_bm_blocks_descriptions ON cscart_bm_blocks.block_id = cscart_bm_blocks_descriptions.block_id 
  LEFT JOIN cscart_bm_blocks_content AS default_content ON cscart_bm_blocks.block_id = default_content.block_id 
  AND cscart_bm_blocks_descriptions.lang_code = default_content.lang_code 
  AND default_content.snapping_id = 0 
  AND default_content.object_id = 0 
  AND default_content.object_type like '' 
  LEFT JOIN cscart_bm_blocks_content AS dynamic_object_content ON cscart_bm_blocks.block_id = dynamic_object_content.block_id 
  AND cscart_bm_blocks_descriptions.lang_code = dynamic_object_content.lang_code 
  AND dynamic_object_content.object_id = 3 
  AND dynamic_object_content.object_type like 'categories' 
WHERE 
  cscart_bm_snapping.grid_id IN (
    526, 527, 528, 529, 530, 531, 532, 533, 
    534, 535, 731, 734, 740, 732, 735, 736, 
    737, 738, 739, 741, 733, 742, 743, 753, 
    754, 755, 756
  ) 
  AND cscart_bm_blocks_descriptions.lang_code = 'en' 
ORDER BY 
  cscart_bm_snapping.order, 
  cscart_bm_snapping.block_id

Query time 0.00124

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost": 0.789419224,
    "nested_loop": [
      {
        "read_sorted_file": {
          "filesort": {
            "sort_key": "cscart_bm_snapping.`order`, cscart_bm_snapping.block_id",
            "table": {
              "table_name": "cscart_bm_snapping",
              "access_type": "range",
              "possible_keys": ["grid_id"],
              "key": "grid_id",
              "key_length": "4",
              "used_key_parts": ["grid_id"],
              "loops": 1,
              "rows": 67,
              "cost": 0.09458824,
              "filtered": 100,
              "index_condition": "cscart_bm_snapping.grid_id in (526,527,528,529,530,531,532,533,534,535,731,734,740,732,735,736,737,738,739,741,733,742,743,753,754,755,756)"
            }
          }
        }
      },
      {
        "table": {
          "table_name": "cscart_bm_blocks",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "4",
          "used_key_parts": ["block_id"],
          "ref": ["u428615623_ecartifygonje.cscart_bm_snapping.block_id"],
          "loops": 67,
          "rows": 1,
          "cost": 0.06402348,
          "filtered": 100
        }
      },
      {
        "table": {
          "table_name": "cscart_bm_blocks_descriptions",
          "access_type": "eq_ref",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "10",
          "used_key_parts": ["block_id", "lang_code"],
          "ref": ["u428615623_ecartifygonje.cscart_bm_snapping.block_id", "const"],
          "loops": 67,
          "rows": 1,
          "cost": 0.06484268,
          "filtered": 100,
          "attached_condition": "cscart_bm_blocks_descriptions.lang_code = 'en'"
        }
      },
      {
        "table": {
          "table_name": "cscart_bm_block_statuses",
          "access_type": "ref",
          "possible_keys": ["snapping_id"],
          "key": "snapping_id",
          "key_length": "4",
          "used_key_parts": ["snapping_id"],
          "ref": ["u428615623_ecartifygonje.cscart_bm_snapping.snapping_id"],
          "loops": 67,
          "rows": 1,
          "cost": 0.06544539,
          "filtered": 100,
          "attached_condition": "trigcond(cscart_bm_snapping.snapping_id = cscart_bm_block_statuses.snapping_id and cscart_bm_block_statuses.object_type like 'categories')"
        }
      },
      {
        "table": {
          "table_name": "default_content",
          "access_type": "ref",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "18",
          "used_key_parts": ["block_id", "snapping_id", "lang_code", "object_id"],
          "ref": [
            "u428615623_ecartifygonje.cscart_bm_snapping.block_id",
            "const",
            "u428615623_ecartifygonje.cscart_bm_blocks_descriptions.lang_code",
            "const"
          ],
          "loops": 67,
          "rows": 1,
          "cost": 0.11951259,
          "filtered": 100,
          "attached_condition": "trigcond(default_content.object_type like '')"
        }
      },
      {
        "table": {
          "table_name": "dynamic_object_content",
          "access_type": "ref",
          "possible_keys": ["PRIMARY"],
          "key": "PRIMARY",
          "key_length": "4",
          "used_key_parts": ["block_id"],
          "ref": ["u428615623_ecartifygonje.cscart_bm_snapping.block_id"],
          "loops": 67,
          "rows": 5,
          "cost": 0.16319659,
          "filtered": 100,
          "attached_condition": "trigcond(dynamic_object_content.lang_code = cscart_bm_blocks_descriptions.lang_code and dynamic_object_content.object_id = 3 and dynamic_object_content.object_type like 'categories')"
        }
      }
    ]
  }
}

Result

grid_id block_id content object_id object_type object_ids snapping_id wrapper user_class order status type properties company_id storefront_id lang_code name
754 4 0 1200 blocks/wrappers/onclick_dropdown.tpl top-my-account 0 A my_account a:1:{s:8:"template";s:21:"blocks/my_account.tpl";} 0 1 en My Account
753 5 0 1197 0 D template a:2:{s:8:"template";s:32:"blocks/static_templates/logo.tpl";s:11:"enable_link";s:1:"Y";} 0 1 en Logo
526 6 0 796 0 D call_request a:1:{s:8:"template";s:44:"addons/call_requests/blocks/call_request.tpl";} 0 1 en Call Request
755 8 0 1202 top-cart-content 0 A cart_content a:4:{s:8:"template";s:23:"blocks/cart_content.tpl";s:22:"display_bottom_buttons";s:1:"Y";s:20:"display_delete_icons";s:1:"Y";s:19:"products_links_type";s:5:"thumb";} 0 1 en Cart content
756 8 0 1205 hidden-desktop top-cart-content 0 D cart_content a:4:{s:8:"template";s:23:"blocks/cart_content.tpl";s:22:"display_bottom_buttons";s:1:"Y";s:20:"display_delete_icons";s:1:"Y";s:19:"products_links_type";s:5:"thumb";} 0 1 en Cart content
533 10 0 803 0 A breadcrumbs a:1:{s:8:"template";s:22:"common/breadcrumbs.tpl";} 0 1 en Breadcrumbs
741 18 0 1170 0 A template a:1:{s:8:"template";s:37:"blocks/static_templates/copyright.tpl";} 0 1 en Copyright
534 30 a:1:{s:5:"items";a:2:{s:7:"filling";s:8:"manually";s:8:"item_ids";s:0:"";}} 0 805 blocks/wrappers/sidebox_important.tpl 0 D product_filters a:1:{s:8:"template";s:48:"blocks/product_filters/for_category/original.tpl";} 0 1 en Product filters
534 31 a:1:{s:5:"items";a:2:{s:7:"filling";s:15:"recent_products";s:5:"limit";s:1:"3";}} 0 806 blocks/wrappers/sidebox_important.tpl 0 A products a:3:{s:8:"template";s:40:"blocks/products/products_small_items.tpl";s:11:"item_number";s:1:"N";s:23:"hide_add_to_cart_button";s:1:"Y";} 0 1 en Recently Viewed
735 128 0 1164 blocks/wrappers/footer_general.tpl 0 D template a:1:{s:8:"template";s:39:"blocks/static_templates/quick_links.tpl";} 0 1 en My account
736 130 a:1:{s:7:"content";s:611:" <ul id="demo_store_links"> <li class="ty-footer-menu__item"><a href="{"pages.view?page_id=2"|fn_url}">About us</a></li> <li class="ty-footer-menu__item"><a href="{"pages.view?page_id=30"|fn_url}">Contact us</a></li> <li class="ty-footer-menu__item"><a href="{"gift_certificates.add"|fn_url}">Gift certificates</a></li> <li class="ty-footer-menu__item"><a href="{"product_features.view_all?filter_id=10"|fn_url}">Our brands</a></li> <li class="ty-footer-menu__item"><a href="{"sitemap.view"|fn_url}">Sitemap</a></li> <li class="ty-footer-menu__item"><a href="{"pages.view?page_id=7"|fn_url}">Blog</a></li> </ul>";} 0 1166 blocks/wrappers/footer_general.tpl footer-no-wysiwyg 0 D safe_smarty_block a:1:{s:8:"template";s:28:"blocks/safe_smarty_block.tpl";} 0 1 en Quick Links
737 131 a:1:{s:7:"content";s:705:" <ul id="customer_service_links"> <li class="ty-footer-menu__item"><a href="{"orders.search"|fn_url}">About your order</a></li> {if $addons.wishlist && $addons.wishlist.status == 'A'} <li class="ty-footer-menu__item"><a href="{"wishlist.view"|fn_url}">Wishlist</a></li> {/if} {if $settings.General.enable_compare_products == 'Y'} <li class="ty-footer-menu__item"><a href="{"product_features.compare"|fn_url}">Comparison list</a></li> {/if} </ul>";} 0 1167 blocks/wrappers/footer_general.tpl footer-no-wysiwyg 0 D safe_smarty_block a:1:{s:8:"template";s:28:"blocks/safe_smarty_block.tpl";} 0 1 en Customer Service
533 141 a:1:{s:5:"items";a:1:{s:7:"filling";s:8:"manually";}} 0 804 0 A product_filters a:1:{s:8:"template";s:56:"blocks/product_filters/for_category/selected_filters.tpl";} 0 1 en Selected product filters
535 169 a:1:{s:7:"content";s:299:"<style> .hero-banner { width: 100%; max-width: 100%; overflow: hidden; margin-bottom: 30px; } .hero-banner img { width: 100%; height: auto; display: block; } </style> <div class="hero-banner"> <img src="https://backendapi.gonje.com/public/vendor-banner-1.png" alt="Hero Banner"> </div>";} 0 807 0 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Vendor hero banner
739 178 a:1:{s:7:"content";s:3486:"<p> <title>Gonje Footer Quick Links</title></p> <style> .footer { position: relative; top: -50px; font-family: Arial, sans-serif; color: #333; text-align: center; font-size: 13px; padding-bottom: 20px; font-weight: normal; /* Or use 400 */ } .footer .quick-links-container { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; max-width: 1200px; margin: 0 auto; text-align: left; } .footer .quick-links { color: #fff; list-style-type: none; padding: 0; margin: 0; } .footer .quick-links li { color: #ffffff; margin: 10px 0; } .footer .quick-links a { color: #ffffff; text-decoration: none; transition: color 0.3s ease; } .footer .quick-links a:hover { color: #70ab4b; } .footer h3 { color: #bdc3c7; margin-bottom: 10px; } .gonje-text-style { color: #fff; } /* Media Queries for smaller screens */ @media (max-width: 768px) { .footer { position: relative; top: -20px; } .footer .quick-links-container { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 480px) { .footer .quick-links-container { grid-template-columns: 1fr; text-align: left; } .footer .quick-links { text-align: left; } .footer .quick-links li { margin: 5px 0; } } </style> <footer class="footer"> <br><br> <div class="quick-links-container"> <div> <h3>Gonje Market</h3> <p class="gonje-text-style">We connect buyers and sellers of natural, organic, environmentally sound products.</p> </div> <div> <h3>The Company</h3> <ul class="quick-links"> <li><a href="https://gonje.com/aboutUs">About Us</a></li> <li><a href="https://gonje.com/terms">Terms & Conditions</a></li> <li><a href="https://gonje.com/terms#privacy">Privacy Policy</a></li> <li><a href="https://gonje.com/terms#refunds">Refunds Policy</a></li> </ul> </div> <div> <h3>Customer Service</h3> <ul class="quick-links"> <li><a href="https://gonje.com/contactUs">Help & Contact Us</a></li> <li><a href="https://gonje.com/faq">FAQ</a></li> </ul> </div> <div> <h3>Address</h3> <p class="gonje-text-style">ABN - 46 649 251 007<br> Unit 12, 442 Geelong Road, West Footscray, Victoria, 3013<br> Parcel Collect 10143 43082, 341 Barry Road, Campbellfield VIC 3061<br> Tel – 0399692891<br> Email – operations@gonje.com</p> </div> </div> </footer>";} 0 1169 0 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Gonje Footer
527 207 a:1:{s:7:"content";s:805:"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>URL Redirect</title> <script> document.addEventListener('DOMContentLoaded', function() { // The URL to check for const targetUrl = "https://marketplace.gonje.com/suppliers-en/"; // The URL to redirect to if the condition is met const redirectUrl = "https://marketplace.gonje.com/suppliers/"; // Check if the current page URL matches the target URL if (window.location.href === targetUrl) { // Redirect to the specified URL window.location.href = redirectUrl; } }); </script> </head> <body> </body> </html> ";} 0 798 0 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Redirect to supplier page
742 356 a:1:{s:7:"content";s:9408:"<script> // Mobile Bottom Navigation Script with CS-Cart auth check document.addEventListener('DOMContentLoaded', function() { // Check if user is logged in (CS-Cart specific check) if (typeof Tygh === 'undefined' || !Tygh.$('.cm-auth-container').length || Tygh.$('.cm-auth-container').hasClass('logged-in')) { // Only proceed if user is logged in // First, ensure Font Awesome is loaded if (!document.querySelector('link[href*="font-awesome"]')) { const faLink = document.createElement('link'); faLink.rel = 'stylesheet'; faLink.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css'; document.head.appendChild(faLink); } // Create the navigation container const mobileNav = document.createElement('div'); mobileNav.className = 'g-bottom-nav'; // Create the navigation items container const navItems = document.createElement('ul'); navItems.className = 'g-bottom-nav__items'; navItems.style.listStyle = 'none'; navItems.style.margin = '0'; navItems.style.padding = '0'; // Navigation items data with CS-Cart URLs const navLinks = [ { url: fn_url('companies.apply_for_vendor'), faIcon: 'fas fa-store', fallbackIcon: '&#x1F3EA;', text: 'Vendor', show: true }, { url: fn_url('orders.search'), faIcon: 'fas fa-clipboard-list', fallbackIcon: '&#x1F4CB;', text: 'Orders', show: typeof Tygh !== 'undefined' && Tygh.auth.orders_count > 0 }, { url: fn_url('wishlist.view'), faIcon: 'fas fa-heart', fallbackIcon: '&#x2665;', text: 'Planner', show: true }, { url: fn_url('checkout.cart'), faIcon: 'fas fa-shopping-cart', fallbackIcon: '&#x1F6D2;', text: 'Cart', show: true, badge: typeof Tygh !== 'undefined' && Tygh.cart.amount > 0 ? Tygh.cart.amount : null }, { url: fn_url('pages.view?page_id=XX'), // Replace XX with actual page ID faIcon: 'fas fa-hands-helping', fallbackIcon: '&#x1F91D;', text: 'Initiative', show: true } ]; // Get current URL and clean it for comparison const currentUrl = new URL(window.location.href); const currentPath = currentUrl.pathname + currentUrl.search; // Create navigation items navLinks.forEach(link => { if (!link.show) return; const navItem = document.createElement('li'); navItem.className = 'g-bottom-nav__li'; navItem.style.listStyle = 'none'; navItem.style.margin = '0'; navItem.style.padding = '0'; const navLink = document.createElement('a'); navLink.href = link.url; // Check if this link matches current page const linkUrl = new URL(link.url); const linkPath = linkUrl.pathname + linkUrl.search; const isActive = currentPath === linkPath || (currentPath.startsWith(linkPath) && linkPath !== '/'); navLink.className = `g-bottom-nav__item ${isActive ? 'active' : ''}`; // Create icon container const iconContainer = document.createElement('span'); iconContainer.className = 'g-bottom-nav__icon'; // Create Font Awesome icon const faIcon = document.createElement('i'); faIcon.className = link.faIcon; faIcon.style.display = 'inline-block'; // Create fallback with HTML entity const fallback = document.createElement('span'); fallback.className = 'g-bottom-nav__icon-fallback'; fallback.innerHTML = link.fallbackIcon; fallback.style.display = 'none'; // Add both to container iconContainer.appendChild(faIcon); iconContainer.appendChild(fallback); // Create text label const text = document.createElement('span'); text.className = 'g-bottom-nav__text'; text.textContent = link.text; navLink.appendChild(iconContainer); navLink.appendChild(text); // Add badge if needed if (link.badge) { const badge = document.createElement('span'); badge.className = 'g-bottom-nav__badge'; badge.textContent = link.badge; navLink.appendChild(badge); } navItem.appendChild(navLink); navItems.appendChild(navItem); // Check if Font Awesome loaded properly setTimeout(() => { if (faIcon.offsetWidth === 0 && faIcon.offsetHeight === 0) { faIcon.style.display = 'none'; fallback.style.display = 'inline-block'; } }, 100); }); // Add items to navigation mobileNav.appendChild(navItems); // Add navigation to body document.body.appendChild(mobileNav); // Add CSS styles const style = document.createElement('style'); style.textContent = ` .g-bottom-nav { display: none; position: fixed; bottom: 0; left: 0; right: 0; background: white; box-shadow: 0 -2px 10px rgba(0,0,0,0.1); z-index: 1000; padding: 8px 0; } .g-bottom-nav__items { display: flex; justify-content: space-around; align-items: center; list-style: none !important; margin: 0 !important; padding: 0 !important; } .g-bottom-nav__li { list-style: none !important; margin: 0 !important; padding: 0 !important; } .g-bottom-nav__item { display: flex; flex-direction: column; align-items: center; text-decoration: none; color: #555; font-size: 10px; padding: 5px 8px; border-radius: 8px; transition: all 0.2s ease; position: relative; } .g-bottom-nav__icon { display: inline-block; width: 20px; height: 20px; text-align: center; margin-bottom: 4px; font-size: 20px; line-height: 1; } .g-bottom-nav__item i { font-size: 20px; display: inline-block; width: 100%; height: 100%; } .g-bottom-nav__icon-fallback { font-size: 20px; display: none; width: 100%; height: 100%; } .g-bottom-nav__item.active { color: #28A745; background: rgba(40, 167, 69, 0.1); } .g-bottom-nav__item.active i, .g-bottom-nav__item.active .g-bottom-nav__icon-fallback { color: #28A745; } .g-bottom-nav__item:hover { background: rgba(40, 167, 69, 0.1); } .g-bottom-nav__badge { position: absolute; top: -5px; right: -5px; background: #28A745; color: white; border-radius: 50%; width: 16px; height: 16px; font-size: 10px; display: flex; align-items: center; justify-content: center; } @media (max-width: 768px) { .g-bottom-nav { display: block; } body { padding-bottom: 70px; } } `; document.head.appendChild(style); // Add click handler to set active state document.querySelectorAll('.g-bottom-nav__item').forEach(item => { item.addEventListener('click', function(e) { document.querySelectorAll('.g-bottom-nav__item').forEach(navItem => { navItem.classList.remove('active'); }); this.classList.add('active'); }); }); } }); </script>";} 0 1188 0 D safe_smarty_block a:1:{s:8:"template";s:28:"blocks/safe_smarty_block.tpl";} 0 1 en Smarty Bottom Nav
742 358 a:1:{s:7:"content";s:7210:"<script> // Mobile Bottom Navigation Script with Font Awesome + HTML entity fallbacks document.addEventListener('DOMContentLoaded', function() { // First, ensure Font Awesome is loaded if (!document.querySelector('link[href*="font-awesome"]')) { const faLink = document.createElement('link'); faLink.rel = 'stylesheet'; faLink.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css'; document.head.appendChild(faLink); } // Create the navigation container const mobileNav = document.createElement('div'); mobileNav.className = 'mobile-bottom-nav'; // Create the navigation items container const navItems = document.createElement('ul'); navItems.className = 'mobile-nav-items'; // Navigation items data with both Font Awesome and HTML entity fallbacks const navLinks = [ { url: 'https://marketplace.gonje.com/index.php?dispatch=companies.catalog', faIcon: 'fas fa-store', fallbackIcon: '&#x1F3EA;', // ???? text: 'Vendor', active: false }, { url: 'https://marketplace.gonje.com/orders/', faIcon: 'fas fa-clipboard-list', fallbackIcon: '&#x1F4CB;', // ???? text: 'Orders', active: false }, { url: 'https://marketplace.gonje.com/wishlist/', faIcon: 'fas fa-heart', fallbackIcon: '&#x2665;', // ♥ text: 'Planner', active: false }, { url: 'https://marketplace.gonje.com/cart', faIcon: 'fas fa-shopping-cart', fallbackIcon: '&#x1F6D2;', // ???? text: 'Cart', active: false }, { url: 'https://marketplace.gonje.com/what-we-do', faIcon: 'fas fa-hands-helping', fallbackIcon: '&#x1F91D;', // ???? text: 'What we do', active: false } ]; // Get current URL and clean it for comparison const currentUrl = new URL(window.location.href); const currentPath = currentUrl.pathname + currentUrl.search; // Create navigation items with both icon types navLinks.forEach(link => { const navItem = document.createElement('li'); const navLink = document.createElement('a'); navLink.href = link.url; // Check if this link matches current page const linkUrl = new URL(link.url); const linkPath = linkUrl.pathname + linkUrl.search; // Compare paths to determine if this is the active link const isActive = currentPath === linkPath || (currentPath.startsWith(linkPath) && linkPath !== '/'); navLink.className = `mobile-nav-item ${isActive ? 'active' : ''}`; // Create icon container const iconContainer = document.createElement('span'); iconContainer.className = 'nav-icon'; // Create Font Awesome icon const faIcon = document.createElement('i'); faIcon.className = link.faIcon; faIcon.style.display = 'inline-block'; // Create fallback with HTML entity const fallback = document.createElement('span'); fallback.className = 'icon-fallback'; fallback.innerHTML = link.fallbackIcon; // Using innerHTML for entities fallback.style.display = 'none'; // Add both to container iconContainer.appendChild(faIcon); iconContainer.appendChild(fallback); // Create text label const text = document.createElement('span'); text.className = 'nav-text'; text.textContent = link.text; navLink.appendChild(iconContainer); navLink.appendChild(text); navItem.appendChild(navLink); navItems.appendChild(navItem); // Check if Font Awesome loaded properly setTimeout(() => { if (faIcon.offsetWidth === 0 && faIcon.offsetHeight === 0) { faIcon.style.display = 'none'; fallback.style.display = 'inline-block'; } }, 100); }); // Add items to navigation mobileNav.appendChild(navItems); // Add navigation to body document.body.appendChild(mobileNav); // Add CSS styles const style = document.createElement('style'); style.textContent = ` .mobile-bottom-nav { display: none; position: fixed; bottom: 0; left: 0; right: 0; background: white; box-shadow: 0 -2px 10px rgba(0,0,0,0.1); z-index: 1000; padding: 8px 0; } .mobile-nav-items { display: flex; justify-content: space-around; align-items: center; list-style: none; margin: 0; padding: 0; } .mobile-nav-item { display: flex; flex-direction: column; align-items: center; text-decoration: none; color: #555; font-size: 10px; padding: 5px 8px; border-radius: 8px; transition: all 0.2s ease; } .nav-icon { display: inline-block; width: 20px; height: 20px; text-align: center; margin-bottom: 4px; font-size: 20px; line-height: 1; } .mobile-nav-item i { font-size: 20px; display: inline-block; width: 100%; height: 100%; } .icon-fallback { font-size: 20px; display: none; width: 100%; height: 100%; } .mobile-nav-item.active { color: #28A745; background: rgba(40, 167, 69, 0.1); } .mobile-nav-item.active i, .mobile-nav-item.active .icon-fallback { color: #28A745; } .mobile-nav-item:hover { background: rgba(40, 167, 69, 0.1); } @media (max-width: 768px) { .mobile-bottom-nav { display: block; } body { padding-bottom: 70px; } } `; // Add styles to head document.head.appendChild(style); // Add click handler to set active state document.querySelectorAll('.mobile-nav-item').forEach(item => { item.addEventListener('click', function(e) { document.querySelectorAll('.mobile-nav-item').forEach(navItem => { navItem.classList.remove('active'); }); this.classList.add('active'); }); }); }); </script>";} 0 1245 0 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en HTML BOTTOM NAV
742 359 a:1:{s:7:"content";s:8402:"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Gonje Page Loader</title> <style> /* Page Loader Styles */ #gonje-loading-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(255, 255, 255, 0.98); display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 9999; transition: opacity 0.5s ease; } .gonje-loading-container { text-align: center; max-width: 600px; padding: 30px; } .gonje-loading-image { max-width: 180px; margin-bottom: 30px; } .gonje-loading-text { font-size: 1.2rem; color: #28a745; margin-bottom: 25px; line-height: 1.6; font-weight: 500; } .gonje-loading-progress { width: 100%; height: 8px; background: #e0e0e0; border-radius: 4px; overflow: hidden; margin: 20px 0; } .gonje-loading-progress-bar { height: 100%; width: 0%; background: linear-gradient(90deg, #28A745, #70ab4b); border-radius: 4px; transition: width 0.4s ease; } .gonje-loading-tip { font-size: 1rem; color: #6c757d; font-style: italic; margin-top: 25px; } .gonje-loading-fact { font-size: 1.1rem; color: #333; padding: 15px; background: #f8fff8; border-radius: 8px; border-left: 4px solid #28a745; margin: 15px 0; text-align: center; } .gonje-loading-countdown { font-size: 0.9rem; color: #6c757d; margin-top: 10px; } @media (max-width: 768px) { .gonje-loading-container { padding: 20px; } .gonje-loading-text { font-size: 1.1rem; } .gonje-loading-fact { font-size: 1rem; } } </style> </head> <body> <!-- Page Loader --> <div id="gonje-loading-overlay"> <div class="gonje-loading-container"> <img src="https://marketplace.gonje.com/images/fruitloader.gif" alt="Loading..." class="gonje-loading-image"> <div class="gonje-loading-text">Preparing the freshest experience for you...</div> <div class="gonje-loading-fact" id="gonje-loading-fact"> Did you know? Eating seasonal produce ensures you get the most flavorful and nutrient-rich foods. </div> <div class="gonje-loading-progress"> <div class="gonje-loading-progress-bar" id="gonje-loading-progress-bar"></div> </div> <div class="gonje-loading-countdown" id="gonje-loading-countdown">Loading your content...</div> <div class="gonje-loading-tip">Gonje Tip: Ordering in advance helps ensure you get the best delivery slots!</div> </div> </div> <!-- Your page content would go here --> <script> document.addEventListener('DOMContentLoaded', function() { const loadingOverlay = document.getElementById('gonje-loading-overlay'); const progressBar = document.getElementById('gonje-loading-progress-bar'); const factElement = document.getElementById('gonje-loading-fact'); const countdownElement = document.getElementById('gonje-loading-countdown'); // Food and grocery facts const facts = [ "Eating seasonal produce ensures you get the most flavorful and nutrient-rich foods.", "Frozen vegetables can be just as nutritious as fresh ones, as they're frozen at peak ripeness.", "Meal planning can reduce food waste by up to 15% and save the average family $1,500 per year.", "Local food often travels less than 100 miles from farm to table, reducing carbon footprint.", "Properly stored, apples can stay fresh for up to 4 months in the refrigerator.", "Leafy greens like spinach and kale are most nutritious when consumed within 1-2 days of purchase.", "Buying in bulk reduces packaging waste and can save up to 20% on grocery bills.", "Herbs stay fresh longer when stored like flowers - stems in water, covered with a plastic bag.", "Food delivery services reduce individual car trips to grocery stores, helping the environment.", "Planning meals around sales and seasonal items can cut grocery costs by 25% or more." ]; let currentFact = 0; let progress = 0; // Change fact every 5 seconds setInterval(() => { currentFact = (currentFact + 1) % facts.length; factElement.textContent = facts[currentFact]; }, 5000); // Simulate loading progress based on actual page loading function updateProgress() { // Get the actual page load progress (this is an approximation) const resources = window.performance.getEntriesByType("resource"); const totalResources = resources.length; if (totalResources > 0) { // Calculate progress based on loaded resources const loadedResources = resources.filter(r => r.duration > 0).length; progress = Math.min(100, Math.round((loadedResources / totalResources) * 100)); } else { // Fallback: Increment progress gradually if we can't track resources progress = Math.min(100, progress + Math.random() * 15); } progressBar.style.width = progress + '%'; // Update countdown text countdownElement.textContent = `Loading: ${progress}% complete`; // Continue updating until page is fully loaded if (progress < 100) { setTimeout(updateProgress, 300); } } // Start tracking progress updateProgress(); // Hide loader when page is fully loaded window.addEventListener('load', function() { progress = 100; progressBar.style.width = '100%'; countdownElement.textContent = "Loading complete!"; // Hide loading overlay setTimeout(() => { loadingOverlay.style.opacity = '0'; setTimeout(() => { loadingOverlay.style.display = 'none'; }, 500); }, 500); }); // Fallback: If load event doesn't fire within 15 seconds, hide the loader setTimeout(function() { if (progress < 100) { progress = 100; progressBar.style.width = '100%'; countdownElement.textContent = "Loading complete!"; setTimeout(() => { loadingOverlay.style.opacity = '0'; setTimeout(() => { loadingOverlay.style.display = 'none'; }, 500); }, 500); } }, 15000); }); </script> </body> </html>";} 0 1246 0 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Gonje animated loader
742 360 a:1:{s:7:"content";s:588:"<style> .ty-pagination__selected { color: black; } .mobile-bottom-nav { z-index: 100; } .ty-control-group input[type="text"], .ty-control-group input[type="email"], .ty-control-group input[type="password"], .ty-control-group input[type="number"], .ty-control-group input[type="date"], .ty-control-group input[type="search"], .ty-control-group input[type="url"], .ty-control-group input[type="tel"], .ty-control-group textarea, .ty-control-group select { background-color: #f3f2e9; border: 1px solid #b5b4af; color: #000; border-radius: 4px; } </style>";} 0 1247 0 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en CUSTOM STYLES
742 361 a:1:{s:7:"content";s:6474:"<script> // Create and insert the promo banner as the first element in body function createPromoBanner() { // Create banner element const banner = document.createElement('div'); banner.id = 'promo-banner'; banner.innerHTML = ` <div class="promo-content"> <span class="promo-text">&#127881; Celebrate with us! Get a FREE pack of premium beverages with orders of $150 or more from <a href="https://marketplace.gonje.com/adonai-foods" class="promo-link">Adonai Foods</a>. Limited time offer!</span> <button class="promo-close" aria-label="Close promo banner">×</button> </div> `; // Apply styles to the banner const styles = ` #promo-banner { width: 100%; height: 60px; background: linear-gradient(135deg, #28a745 0%, #20c997 100%); color: white; display: flex; align-items: center; justify-content: center; position: fixed; top: 0; left: 0; box-shadow: 0 2px 10px rgba(0,0,0,0.1); z-index: 1000; } .promo-content { display: flex; align-items: center; justify-content: center; width: 100%; max-width: 1200px; padding: 0 20px; position: relative; margin: 0 auto; } .promo-text { font-size: 14px; font-weight: 500; text-align: center; padding: 0 30px; } .promo-link { color: #fff; font-weight: 700; text-decoration: underline; transition: all 0.2s ease; } .promo-link:hover { color: #ffeb3b; text-decoration: none; } .promo-close { position: absolute; right: 20px; background: rgba(255,255,255,0.2); border: none; color: white; width: 24px; height: 24px; border-radius: 50%; cursor: pointer; font-size: 16px; display: flex; align-items: center; justify-content: center; transition: background 0.2s ease; } .promo-close:hover { background: rgba(255,255,255,0.3); } /* Style for navigation when banner is visible */ .tygh-top-panel.clearfix.banner-visible { top: 60px; position: relative; } @media (max-width: 768px) { #promo-banner { height: auto; min-height: 60px; padding: 10px 0; } .promo-text { font-size: 13px; padding: 0 40px 0 20px; } .promo-close { right: 10px; } .tygh-top-panel.clearfix.banner-visible { top: 70px; position: relative; } } `; // Create style element and add styles const styleSheet = document.createElement('style'); styleSheet.textContent = styles; document.head.appendChild(styleSheet); // Insert the banner as the first element in the body document.body.insertBefore(banner, document.body.firstChild); // Function to toggle navigation style function toggleNavStyle(show) { const navElement = document.querySelector('.tygh-top-panel.clearfix'); if (navElement) { if (show) { navElement.classList.add('banner-visible'); } else { navElement.classList.remove('banner-visible'); } } } // Apply the style to navigation toggleNavStyle(true); // Scroll to the top of the page window.scrollTo({ top: 0, behavior: 'smooth' }); // Add close functionality const closeButton = banner.querySelector('.promo-close'); closeButton.addEventListener('click', function() { banner.style.display = 'none'; // Remove the style from navigation toggleNavStyle(false); // Store dismissal in localStorage for 24 hours localStorage.setItem('promoBannerDismissed', 'true'); localStorage.setItem('promoBannerDismissedTime', Date.now()); }); // Check if banner was previously dismissed const isDismissed = localStorage.getItem('promoBannerDismissed'); const dismissedTime = localStorage.getItem('promoBannerDismissedTime'); if (isDismissed && dismissedTime) { const twentyFourHours = 10 * 1000; const now = Date.now(); // Show banner again if 24 hours have passed if (now - dismissedTime > twentyFourHours) { localStorage.removeItem('promoBannerDismissed'); localStorage.removeItem('promoBannerDismissedTime'); banner.style.display = 'flex'; // Apply the style to navigation toggleNavStyle(true); } else { banner.style.display = 'none'; // Don't apply the style to navigation toggleNavStyle(false); } } } // Initialize the banner when DOM is loaded if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { createPromoBanner(); }); } else { createPromoBanner(); } </script>";} 0 1249 0 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Nav Popup Script
742 365 a:1:{s:7:"content";s:7269:"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Support Our Mission ❤️</title> <!-- Load PayPal SDK (Live) --> <script src="https://www.paypal.com/sdk/js?client-id=BAAMI9QJMUdgcOrd78yELKz-CQZ7A-1gOFHjXEVOv_XdigjkjcZl6qGLL8BVMWHZTZsjbVvZm2YMTCUqko&currency=USD"></script> <style> /* Floating Widget Styles */ .gonje-donations-widget { position: fixed; bottom: 320px; right: 30px; width: 53px; height: 53px; background: linear-gradient(135deg, #635BFF, #635BFF); border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 20px rgba(0, 112, 186, 0.4); cursor: pointer; z-index: 1000; transition: transform 0.3s ease, box-shadow 0.3s ease; } .gonje-donations-widget:hover { transform: scale(1.1); box-shadow: 0 6px 25px rgba(0, 112, 186, 0.6); } .gonje-donations-widget span { color: white; font-size: 24px; } /* Modal Styles */ .gonje-donations-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); z-index: 1001; align-items: center; justify-content: center; } .gonje-donations-modal.gonje-donations-active { display: flex; } .gonje-donations-modal-content { background: white; border-radius: 16px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); width: 90%; max-width: 500px; padding: 30px; position: relative; animation: gonje-donations-modalFadeIn 0.3s ease; } @keyframes gonje-donations-modalFadeIn { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } .gonje-donations-close-modal { position: absolute; top: 15px; right: 15px; font-size: 24px; cursor: pointer; color: #888; background: none; border: none; } .gonje-donations-close-modal:hover { color: #333; } /* Container styles */ .gonje-donations-container { max-width: 100%; margin: 0; background: #fff; border-radius: 16px; text-align: center; } .gonje-donations-title { color: #0070ba; font-weight: 600; margin-bottom: 10px; } .gonje-donations-description { color: #555; font-size: 1.1rem; margin-bottom: 30px; } .gonje-donations-input { width: 100%; padding: 12px; font-size: 1.2rem; border-radius: 10px; border: 2px solid #e5e7eb; margin-bottom: 20px; text-align: center; } .gonje-donations-paypal-container { margin-top: 20px; } .gonje-donations-footer { margin-top: 20px; color: #888; font-size: 0.9rem; } </style> </head> <body> <!-- Page content (for demonstration) --> <!-- Floating Donation Widget --> <div class="gonje-donations-widget" id="gonjeDonationsWidget" style="display: none;"> <span>❤️</span> </div> <!-- Modal --> <div class="gonje-donations-modal" id="gonjeDonationsModal"> <div class="gonje-donations-modal-content"> <button class="gonje-donations-close-modal" id="gonjeCloseModal">&times;</button> <div class="gonje-donations-container"> <h1 class="gonje-donations-title">Support Our Mission &#10084;</h1> <p class="gonje-donations-description">Your donation helps us continue making an impact.</p> <input type="number" id="gonjeAmount" class="gonje-donations-input" placeholder="Enter amount (AUD)" min="1" step="0.01" /> <div id="gonje-paypal-button-container" class="gonje-donations-paypal-container"></div> <footer class="gonje-donations-footer">Powered by PayPal · Secure and Trusted</footer> </div> </div> </div> <script> // Check if /amcf is in the URL function isAmcfInUrl() { return window.location.href.includes('/amcf'); } // Initialize the widget only if /amcf is detected function initializeDonationWidget() { if (!isAmcfInUrl()) { return; // Exit if /amcf is not in the URL } // Show the widget const donationWidget = document.getElementById("gonjeDonationsWidget"); donationWidget.style.display = 'flex'; // Get other DOM elements const donationModal = document.getElementById("gonjeDonationsModal"); const closeModal = document.getElementById("gonjeCloseModal"); const amountInput = document.getElementById("gonjeAmount"); // Open modal when widget is clicked donationWidget.addEventListener("click", function() { donationModal.classList.add("gonje-donations-active"); }); // Close modal when X is clicked closeModal.addEventListener("click", function() { donationModal.classList.remove("gonje-donations-active"); }); // Close modal when clicking outside the content donationModal.addEventListener("click", function(e) { if (e.target === donationModal) { donationModal.classList.remove("gonje-donations-active"); } }); // Initialize PayPal buttons paypal.Buttons({ style: { shape: "pill", color: "blue", layout: "vertical", label: "paypal", }, // Create the order with dynamic user amount createOrder: function (data, actions) { const amount = parseFloat(amountInput.value); if (!amount || amount < 1) { alert("Please enter a valid amount (minimum $1)"); throw new Error("Invalid amount"); } return actions.order.create({ purchase_units: [{ description: "Donation to Support Our Mission", amount: { value: amount.toFixed(2), }, }], }); }, // On successful approval onApprove: function (data, actions) { return actions.order.capture().then(function (details) { alert(`???? Thank you, ${details.payer.name.given_name}! Your donation of $${details.purchase_units[0].amount.value} was successful.`); amountInput.value = ""; donationModal.classList.remove("gonje-donations-active"); // Close modal after donation }); }, // Handle payment errors onError: function (err) { console.error(err); alert("❌ An error occurred while processing your payment. Please try again."); }, }).render("#gonje-paypal-button-container"); } // Initialize the widget when the page loads document.addEventListener('DOMContentLoaded', initializeDonationWidget); </script> </body> </html>";} 0 1282 0 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Donations AMCF
742 368 a:1:{s:7:"content";s:28326:"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Gonje Widgets</title> <link rel="stylesheet" href="https://cdn-uicons.flaticon.com/2.1.0/uicons-regular-rounded/css/uicons-regular-rounded.css"> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet"> <style> /* ---------- Base Reset ---------- */ /* ---------- Hamburger – bottom-right ---------- */ .gonje-hamburger-btn{ position:fixed;bottom:100px;right:20px;width:56px;height:56px;background:#999;border-radius:50%; display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer; box-shadow:0 4px 12px rgba(0,0,0,.25);z-index:9999;transition:transform .3s; } .gonje-hamburger-btn:hover{transform:scale(1.08)} .gonje-hamburger-bar{width:22px;height:3px;background:#fff;margin:3px 0;border-radius:2px;transition:all .3s} .gonje-hamburger-btn.open .gonje-hamburger-bar:nth-child(1){transform:rotate(45deg) translate(5px,5px)} .gonje-hamburger-btn.open .gonje-hamburger-bar:nth-child(2){opacity:0} .gonje-hamburger-btn.open .gonje-hamburger-bar:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)} /* ---------- Modern Modal (compact) ---------- */ .gonje-modern-modal{ position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:10000;display:none; align-items:center;justify-content:center;padding:12px; animation:fadeIn .3s ease; } @keyframes fadeIn{from{opacity:0}to{opacity:1}} .gonje-modern-modal-content{ background:#fff;width:100%;max-width:420px;border-radius:12px; box-shadow:0 10px 40px rgba(0,0,0,.25); animation:slideUp .35s ease; display:flex;flex-direction:column; max-height:calc(100vh - 24px); /* prevent cutoff */ } @keyframes slideUp{from{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}} .gonje-modern-modal-header{ flex-shrink:0;display:flex;align-items:center;justify-content:space-between; padding:14px 16px 12px;border-bottom:1px solid #e5e5e5; } .gonje-modern-modal-title{font-size:16px;font-weight:600;color:#222} .gonje-modern-modal-close{ background:none;border:none;font-size:22px;color:#777;cursor:pointer;transition:color .2s; } .gonje-modern-modal-close:hover{color:#000} .gonje-modern-modal-body{ padding:12px 16px 16px;flex:1 1 auto;overflow-y:auto; /* scroll if content tall */ display:flex;flex-direction:column;gap:14px } /* Section titles */ .gonje-modal-section-title{font-size:13px;font-weight:600;color:#555;text-transform:uppercase;letter-spacing:.5px} /* Icon grid */ .gonje-icon-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px} .gonje-icon-item{ background:#28A745;border-radius:8px;display:flex;flex-direction:column; align-items:center;justify-content:center;padding:10px 6px;color:#fff; text-decoration:none;font-size:11px;font-weight:500;transition:background .2s,transform .2s; text-align:center;line-height:1.2 } .gonje-icon-item:hover{background:#218838;transform:scale(1.05)} .gonje-icon-item i{font-size:20px;margin-bottom:4px} /* Quick links */ .gonje-quick-links{display:flex;flex-direction:column;gap:8px} .gonje-quick-link{ display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:6px; background:#f7f7f7;color:#222;text-decoration:none;font-size:13px;font-weight:500; transition:background .2s; } .gonje-quick-link:hover{background:#ececec} .gonje-quick-link i{font-size:16px;width:18px;text-align:center;color:#28A745} </style> </head> <body> <!-- Hamburger --> <div class="gonje-hamburger-btn" id="gonjeHamburgerBtn" aria-label="Open menu" aria-expanded="false"> <div class="gonje-hamburger-bar"></div> <div class="gonje-hamburger-bar"></div> <div class="gonje-hamburger-bar"></div> </div> <!-- Modern Modal --> <div class="gonje-modern-modal" id="gonjeModernModal" aria-hidden="true"> <div class="gonje-modern-modal-content"> <div class="gonje-modern-modal-header"> <span class="gonje-modern-modal-title">Gonje Hub</span> <button class="gonje-modern-modal-close" id="gonjeModalClose" aria-label="Close modal">&times;</button> </div> <div class="gonje-modern-modal-body"> <!-- Utilities Section --> <div class="gonje-modal-section">Utilities</div> <div class="gonje-icon-grid"> <a href="#" class="gonje-icon-item" id="utilCamera"> <i class="fi fi-rr-camera"></i> <span>QR Code Scanner</span> </a> <a href="https://marketplace.gonje.com/support" class="gonje-icon-item"> <i class="fas fa-headset"></i> <span>Support</span> </a> <a href="#" class="gonje-icon-item" id="utilSustainable"> <i class="fas fa-leaf"></i> <span>Eco</span> </a> </div> <!-- Quick Links Section --> <div class="gonje-modal-section">Quick Links</div> <div class="gonje-quick-links"> <a href="https://marketplace.gonje.com/suppliers" class="gonje-quick-link"> <i class="fas fa-truck"></i> <span>Suppliers</span> </a> <a href="https://marketplace.gonje.com/index.php?dispatch=companies.apply_for_vendor" class="gonje-quick-link"> <i class="fas fa-store"></i> <span>Become a Seller</span> </a> <a href="https://marketplace.gonje.com/gift-cards" class="gonje-quick-link"> <i class="fas fa-gift"></i> <span>Gift Cards</span> </a> <a href="https://marketplace.gonje.com/elevate-your-shopping-experience-with-gonjes-b2c-module/" class="gonje-quick-link"> <i class="fas fa-blog"></i> <span>Blog</span> </a> <a href="https://marketplace.gonje.com/welcome-to-gonje-marketplace/" class="gonje-quick-link"> <i class="fas fa-question-circle"></i> <span>How To</span> </a> <a href="https://marketplace.gonje.com/what-we-do" class="gonje-quick-link"> <i class="fas fa-info-circle"></i> <span>What We Do</span> </a> <a href="https://marketplace.gonje.com/orders" class="gonje-quick-link"> <i class="fas fa-receipt"></i> <span>Orders</span> </a> <a href="https://marketplace.gonje.com/wishlist/" class="gonje-quick-link"> <i class="fas fa-calendar-alt"></i> <span>Grocery Planner</span> </a> </div> </div> </div> </div> <!-- Camera status message --> <div class="gonje-camera-status-message" id="gonjeCameraStatusMessage"></div> <script> /* ---------- Modal Toggle ---------- */ const hamburger = document.getElementById('gonjeHamburgerBtn'); const modal = document.getElementById('gonjeModernModal'); const closeBtn = document.getElementById('gonjeModalClose'); let open = false; function toggleModal(){ open = !open; modal.style.display = open ? 'flex' : 'none'; hamburger.classList.toggle('open', open); hamburger.setAttribute('aria-expanded', open); modal.setAttribute('aria-hidden', !open); } hamburger.addEventListener('click', toggleModal); closeBtn.addEventListener('click', toggleModal); modal.addEventListener('click', e => { if(e.target === modal) toggleModal() }); document.addEventListener('keydown', e => { if(e.key === 'Escape' && open) toggleModal() }); /* ---------- Camera Utility ---------- */ const cameraStatus = document.getElementById('gonjeCameraStatusMessage'); document.getElementById('utilCamera').addEventListener('click', e => { e.preventDefault(); cameraStatus.textContent = 'Opening camera...'; cameraStatus.className = 'gonje-camera-status-message'; const fileInput = document.createElement('input'); fileInput.type = 'file'; fileInput.accept = 'image/*'; fileInput.capture = 'environment'; fileInput.click(); fileInput.addEventListener('change', (ev) => { if (ev.target.files && ev.target.files.length > 0) { const file = ev.target.files[0]; if (file.type.startsWith('image/')) { cameraStatus.textContent = 'Camera opened successfully!'; cameraStatus.className = 'gonje-camera-status-message success'; setTimeout(() => { cameraStatus.textContent = ''; cameraStatus.className = 'gonje-camera-status-message'; }, 3000); } else { cameraStatus.textContent = 'Please select an image file.'; cameraStatus.className = 'gonje-camera-status-message error'; } } else { cameraStatus.textContent = 'Camera access was cancelled.'; cameraStatus.className = 'gonje-camera-status-message error'; } toggleModal(); // close modal after action }); }); /* ---------- Sustainable Utility ---------- */ document.getElementById('utilSustainable').addEventListener('click', e => { e.preventDefault(); toggleModal(); // close quick modal first // Inject large sustainable modal const sustainableModal = document.createElement('div'); sustainableModal.className = 'gonje-sustainable-modal'; sustainableModal.innerHTML = ` <div class="gonje-sustainable-modal-content"> <div class="gonje-sustainable-modal-header"> <h2 class="gonje-sustainable-modal-title" style="color:#fff;"> <i class="fas fa-leaf"></i> Our Sustainable Packaging </h2> <button class="gonje-sustainable-modal-close" aria-label="Close modal">&times;</button> </div> <div class="gonje-sustainable-modal-body"> <div class="gonje-sustainable-modal-intro"> <p class="gonje-sustainable-modal-description"> At our company, we're committed to sustainable packaging solutions that minimize environmental impact while protecting your products. Our comprehensive approach covers every aspect of packaging, from material selection to end-of-life disposal. </p> </div> <div class="gonje-sustainable-modal-image"> <img src="https://marketplace.gonje.com/images/gonje-sustainable-sm.jpeg" alt="Sustainable Packaging"> </div> <div class="gonje-sustainable-impact-statement"> <strong>Overall Impact:</strong> Reduced packaging waste by 45% and eliminated 12 tons of plastic annually through our sustainable packaging initiatives. </div> <div class="gonje-sustainable-practices-container"> <!-- Item 1 --> <div class="gonje-sustainable-practice-item"> <div class="gonje-sustainable-practice-header"> <div class="gonje-sustainable-practice-icon"><i class="fas fa-recycle"></i></div> Material Selection </div> <div class="gonje-sustainable-practice-details"> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>100% recycled cardboard boxes</span></div> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>FSC-certified paper materials</span></div> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Plant-based coatings</span></div> <div class="gonje-sustainable-impact-statement"><strong>Result:</strong> 92% recycled/compostable materials</div> </div> </div> <!-- Item 2 --> <div class="gonje-sustainable-practice-item"> <div class="gonje-sustainable-practice-header"> <div class="gonje-sustainable-practice-icon"><i class="fas fa-box-open"></i></div> Box Design </div> <div class="gonje-sustainable-practice-details"> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>AI-optimized sizing</span></div> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Soy-based inks</span></div> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Reusable designs</span></div> <div class="gonje-sustainable-impact-statement"><strong>Result:</strong> 28% less material used</div> </div> </div> <!-- Item 3 --> <div class="gonje-sustainable-practice-item"> <div class="gonje-sustainable-practice-header"> <div class="gonje-sustainable-practice-icon"><i class="fas fa-shield-alt"></i></div> Protection </div> <div class="gonje-sustainable-practice-details"> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Recycled paper padding</span></div> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Starch-based cool packs</span></div> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Compostable fiber trays</span></div> <div class="gonje-sustainable-impact-statement"><strong>Result:</strong> 3.5 tons plastic eliminated</div> </div> </div> <!-- Item 4 --> <div class="gonje-sustainable-practice-item"> <div class="gonje-sustainable-practice-header"> <div class="gonje-sustainable-practice-icon"><i class="fas fa-tape"></i></div> Sealing </div> <div class="gonje-sustainable-practice-details"> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Plastic-free paper tape</span></div> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Recyclable labels</span></div> <div class="gonje-sustainable-impact-statement"><strong>Result:</strong> 100% plastic-free sealing</div> </div> </div> <!-- Item 5 --> <div class="gonje-sustainable-practice-item"> <div class="gonje-sustainable-practice-header"> <div class="gonje-sustainable-practice-icon"><i class="fas fa-undo"></i></div> Reusability </div> <div class="gonje-sustainable-practice-details"> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Return discounts</span></div> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Collapsible crates</span></div> <div class="gonje-sustainable-impact-statement"><strong>Result:</strong> 62% container return rate</div> </div> </div> <!-- Item 6 --> <div class="gonje-sustainable-practice-item"> <div class="gonje-sustainable-practice-header"> <div class="gonje-sustainable-practice-icon"><i class="fas fa-trash-alt"></i></div> Waste Reduction </div> <div class="gonje-sustainable-practice-details"> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Clear recycling guides</span></div> <div class="gonje-sustainable-practice-point"><i class="fas fa-check gonje-sustainable-point-icon"></i><span>Paper void fill</span></div> <div class="gonje-sustainable-impact-statement"><strong>Result:</strong> 89% proper recycling</div> </div> </div> </div> </div> </div> `; document.body.appendChild(sustainableModal); const closeBtn = sustainableModal.querySelector('.gonje-sustainable-modal-close'); closeBtn.addEventListener('click', () => { sustainableModal.style.display = 'none'; document.body.style.overflow = 'auto'; }); sustainableModal.addEventListener('click', e => { if (e.target === sustainableModal) { sustainableModal.style.display = 'none'; document.body.style.overflow = 'auto'; } }); document.addEventListener('keydown', e => { if (e.key === 'Escape' && sustainableModal.style.display === 'block') { sustainableModal.style.display = 'none'; document.body.style.overflow = 'auto'; } }); sustainableModal.style.display = 'block'; sustainableModal.setAttribute('aria-hidden', 'false'); document.body.style.overflow = 'hidden'; }); /* ---------- Sustainable Modal Styles ---------- */ const sustainableStyles = document.createElement('style'); sustainableStyles.textContent = ` .gonje-sustainable-modal { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.7); z-index: 20000; overflow-y: auto; padding: 10px; } .gonje-sustainable-modal-content { background: #fff; max-width: 900px; margin: 20px auto; border-radius: 10px; overflow: hidden; box-shadow: 0 5px 20px rgba(0,0,0,.2); animation: gonje-sustainable-modalFadeIn .3s ease-out; } @keyframes gonje-sustainable-modalFadeIn { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } .gonje-sustainable-modal-header { background: #1B5E20; color: #fff; padding: 15px; text-align: center; position: relative; } .gonje-sustainable-modal-title { font-size: 20px; font-weight: 600; margin: 0; display: flex; align-items: center; justify-content: center; gap: 10px; } .gonje-sustainable-modal-close { position: absolute; top: 10px; right: 10px; background: none; border: none; color: #fff; font-size: 24px; cursor: pointer; transition: transform .2s; } .gonje-sustainable-modal-close:hover { transform: rotate(90deg); } .gonje-sustainable-modal-body { display: flex; flex-direction: column; padding: 0; } .gonje-sustainable-modal-intro { padding: 15px; box-sizing: border-box; order: 1; } .gonje-sustainable-modal-description { font-size: 15px; line-height: 1.6; color: #555; margin-bottom: 15px; } .gonje-sustainable-modal-image { padding: 0 15px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; order: 2; } .gonje-sustainable-modal-image img { max-width: 100%; height: auto; border-radius: 8px; box-shadow: 0 4px 10px rgba(0,0,0,.1); object-fit: contain; } .gonje-sustainable-impact-statement { font-size: 13px; background: #E8F5E9; padding: 10px; border-radius: 6px; margin: 15px; color: #1B5E20; border-left: 3px solid #2E8B57; order: 3; } .gonje-sustainable-practices-container { width: 100%; padding: 0 15px 15px; display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 15px; order: 4; } .gonje-sustainable-practice-item { background: #fff; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,.05); border: 1px solid #e0e0e0; min-width: 0; width: 100%; box-sizing: border-box; } .gonje-sustainable-practice-header { background: #1B5E20; color: #fff; padding: 10px 12px; display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; } .gonje-sustainable-practice-icon { font-size: 16px; width: 28px; height: 28px; background: rgba(255,255,255,.2); border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .gonje-sustainable-practice-details { padding: 12px; } .gonje-sustainable-practice-point { display: flex; align-items: flex-start; margin-bottom: 8px; font-size: 13px; line-height: 1.5; gap: 8px; } .gonje-sustainable-point-icon { color: #2E8B57; font-size: 12px; margin-top: 3px; flex-shrink: 0; } @media (min-width: 768px) { .gonje-sustainable-modal-content { margin: 40px auto; } .gonje-sustainable-modal-header { padding: 20px; } .gonje-sustainable-modal-title { font-size: 24px; } .gonje-sustainable-modal-body { flex-direction: row; flex-wrap: wrap; } .gonje-sustainable-modal-intro { flex: 1; min-width: 300px; padding: 20px; order: 1; } .gonje-sustainable-modal-image { flex: 1; min-width: 300px; padding: 20px; order: 2; } .gonje-sustainable-impact-statement { width: 100%; margin: 0 20px 20px; order: 3; } .gonje-sustainable-modal-description { font-size: 16px; } .gonje-sustainable-practices-container { padding: 0 20px 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; order: 4; } .gonje-sustainable-practice-header { font-size: 15px; padding: 12px 15px; } .gonje-sustainable-practice-point { font-size: 14px; } } `; document.head.appendChild(sustainableStyles); </script> </body> </html>";} 0 1285 0 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Gonje Hub
753 393 a:1:{s:7:"content";s:700:"{** block-description:tmpl_logo **} <div class="ty-logo-container"> {$logo_link = $block.properties.enable_link|default:"Y" == "Y"} {if $logo_link} <a href="https://marketplace.gonje.com/" title="{$logos.theme.image.alt}"> {/if} {include file="common/image.tpl" images=$logos.theme.image class="ty-logo-container__image" image_additional_attrs=["width" => $logos.theme.image.image_x, "height" => $logos.theme.image.image_y] obj_id=false show_no_image=false show_detailed_link=false capture_image=false } {if $logo_link} </a> {/if} </div> ";} 0 1356 0 D safe_smarty_block a:1:{s:8:"template";s:28:"blocks/safe_smarty_block.tpl";} 0 1 en modify blog for logo
756 394 a:1:{s:7:"content";s:54:"<style> .tygh-top-panel{ padding:unset; } </style>";} 0 1357 0 A safe_smarty_block a:1:{s:8:"template";s:28:"blocks/safe_smarty_block.tpl";} 0 1 en Header style points
754 3 a:1:{s:4:"menu";s:1:"1";} 0 1201 top-quick-links 1 A menu a:2:{s:8:"template";s:26:"blocks/menu/text_links.tpl";s:18:"show_items_in_line";s:1:"Y";} 0 1 en Quick links
738 17 a:1:{s:7:"content";s:340:" <ul id="about_cs_cart_links"> <li class="ty-footer-menu__item"><a href="{"pages.view?page_id=1"|fn_url}">Our team</a></li> <li class="ty-footer-menu__item"><a href="{"pages.view?page_id=3"|fn_url}">Privacy policy</a></li> </ul>";} 0 1168 blocks/wrappers/footer_general.tpl footer-no-wysiwyg 1 D safe_smarty_block a:1:{s:8:"template";s:28:"blocks/safe_smarty_block.tpl";} 0 1 en About us
531 126 a:1:{s:5:"items";a:3:{s:7:"filling";s:13:"full_tree_cat";s:18:"parent_category_id";s:0:"";s:7:"sort_by";s:8:"position";}} 0 800 1 D categories a:3:{s:8:"template";s:52:"blocks/categories/categories_dropdown_horizontal.tpl";s:30:"dropdown_second_level_elements";s:2:"12";s:29:"dropdown_third_level_elements";s:1:"6";} 0 1 en Main menu
735 129 a:1:{s:7:"content";s:261:" <ul id="demo_store_links"> <li class="ty-footer-menu__item"><a href="{"companies.apply_for_vendor"|fn_url}">Apply for a seller account</a></li> <li class="ty-footer-menu__item"><a href="{"pages.view?page_id=15"|fn_url}">Vendor terms & conditions</a></li> </ul>";} 0 1165 blocks/wrappers/footer_general.tpl footer-no-wysiwyg 1 A safe_smarty_block a:1:{s:8:"template";s:28:"blocks/safe_smarty_block.tpl";} 0 1 en Become a seller
742 165 a:1:{s:7:"content";s:136:"<p><br></p> <figure><img src="https://backendapi.gonje.com/public/gonje-storage/public/images/payment-methods.png"></figure> <p><br></p>";} 0 1171 1 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Gonje Payment methods
535 179 a:1:{s:7:"content";s:398:"<style> .image-container { width: 100%; /* Full width */ max-width: 100%; /* Ensures the image does not exceed container width */ height: auto; /* Maintains aspect ratio */ } </style> <p> <a href="/felicios"><img class="image-container" src="https://backendapi.gonje.com/public/felicios-banner.png" alt="Gonje Variety Banner"></a></p>";} 0 808 1 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Felicios Banner
756 190 a:1:{s:7:"content";s:1154:"<style> .marquee { width: 100%; overflow: hidden; background: linear-gradient(90deg, #ff6f61, #d5a6a1); color: white; padding: 10px; font-size: 24px; font-weight: bold; white-space: nowrap; box-shadow: 0 4px 6px rgba(0,0,0,0.1); } .marquee-content { display: inline-block; padding-left: 100%; animation: marquee 35s linear infinite; /* Increased duration to slow down */ } @keyframes marquee { from { transform: translateX(100%); } to { transform: translateX(-100%); } } </style> <div class="marquee"> <div class="marquee-content" style="color:#fff;font-size:20px;"> Welcome to Our Marketplace! Explore a wide range of fresh groceries, exclusive deals, and special offers just for you. Don’t miss out on our limited-time discounts and seasonal promotions. Shop now and enjoy the best quality products delivered right to your door! </div> </div>";} 0 1206 1 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Page Marquee Ad
753 221 a:1:{s:7:"content";s:475:"<script> function hideNotifications() { document.querySelectorAll(".notification-content").forEach(function (element) { element.style.display = "none"; }); } // Run once on initial load setTimeout(hideNotifications, 3000); // Set up MutationObserver to handle AJAX-loaded elements const observer = new MutationObserver(function (mutations) { hideNotifications(); }); observer.observe(document.body, { childList: true, subtree: true, }); </script>";} 0 1198 1 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Notification timer control
753 2 a:1:{s:4:"text";s:0:"";} 0 1199 2 A currencies a:3:{s:8:"template";s:21:"blocks/currencies.tpl";s:6:"format";s:6:"symbol";s:14:"dropdown_limit";s:1:"3";} 0 1 en Currencies
529 8 0 799 top-cart-content 2 A cart_content a:4:{s:8:"template";s:23:"blocks/cart_content.tpl";s:22:"display_bottom_buttons";s:1:"Y";s:20:"display_delete_icons";s:1:"Y";s:19:"products_links_type";s:5:"thumb";} 0 1 en Cart content
732 13 a:1:{s:7:"content";s:1004:"<div class="ty-social-link-block"><h3 class="ty-social-link__title" >{__("get_social")}</h3> <div class="ty-social-link facebook"> <a href="https://web.facebook.com/p/Gonje-100071509825420/?_rdc=1&_rdr"><span class="ty-icon ty-icon-facebook"></span>Facebook &nbsp; </a> </div> <div class="ty-social-link"> <a href="https://www.tiktok.com/@gonjeapp?_t=ZS-8srMJxBImeY&_r=1"><img src="https://backendapi.gonje.com/public/tiktok-logo.png" /></span>&nbsp; Tiktok &nbsp; </a> </div> <div class="ty-social-link instagram"> <a href="https://www.instagram.com/gonjeapp"><span class="ty-icon ty-icon-instagram"></span>Instagram &nbsp; </a> </div> <!-- <div class="ty-social-link twitter"> <a href="https://www.x.com/"><img src="https://backendapi.gonje.com/public/twitter-x-logo.png" /></span>X</a></div> --> <div class="ty-social-link youtube"> <a href="https://www.youtube.com/@gonjeapp"><span class="ty-icon ty-icon-youtube"></span>Youtube &nbsp; </a> </div></div> ";} 0 1163 2 A safe_smarty_block a:1:{s:8:"template";s:28:"blocks/safe_smarty_block.tpl";} 0 1 en Social links
535 187 a:3:{s:5:"width";s:0:"";s:6:"height";s:0:"";s:5:"items";a:2:{s:7:"filling";s:8:"manually";s:8:"item_ids";s:5:"23,24";}} 0 809 2 A banners a:3:{s:8:"template";s:34:"addons/banners/blocks/carousel.tpl";s:10:"navigation";s:1:"N";s:5:"delay";s:1:"5";} 0 1 en Fading Gonje Banner 1
531 188 a:3:{s:5:"width";s:0:"";s:6:"height";s:0:"";s:5:"items";a:2:{s:7:"filling";s:8:"manually";s:8:"item_ids";s:5:"25,26";}} 0 801 2 D banners a:3:{s:8:"template";s:34:"addons/banners/blocks/carousel.tpl";s:10:"navigation";s:1:"N";s:5:"delay";s:1:"5";} 0 1 en Hero Sliding Banner
755 238 a:1:{s:7:"content";s:1304:"{* File: themes/your_theme/templates/blocks/realtime_cart_count.tpl *} {* Unique classes/IDs to prevent conflicts *} {$cart_count = $cart.amount|default:$smarty.session.cart.amount|default:0} <style> .realtime-cart-count { position: relative; top: 25px; display: inline-block; z-index: 1000; } .realtime-cart-badge { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; background: #808080; border-radius: 50%; color: white; font-weight: bold; font-size: 14px; } </style> <div class="realtime-cart-count"> <span class="realtime-cart-badge" id="realtime_cart_counter"> {$cart_count} </span> </div> <script> (function(_, $) { // Update immediately when cart changes (add/remove) $.ceEvent('on', 'ce.cart.changed', function(data) { if (typeof data.amount !== 'undefined') { $('#realtime_cart_counter').text(data.amount); } }); // Handle edge cases (e.g., cart emptied via bulk action) $.ceEvent('on', 'ce.ajaxdone', function(response) { if (response.cart_amount === 0) { $('#realtime_cart_counter').text('0'); } }); })(Tygh, Tygh.$); </script>";} 0 1203 2 D safe_smarty_block a:1:{s:8:"template";s:28:"blocks/safe_smarty_block.tpl";} 0 1 en Cart count block for new style
742 247 a:1:{s:7:"content";s:2945:"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Back to Top Widget</title> <style> .back-to-top { position: fixed; bottom: 250px; right: 30px; width: 50px; height: 50px; background-color: rgba(74, 107, 255, 0.85); /* Added transparency */ border-radius: 50%; display: flex; justify-content: center; align-items: center; cursor: pointer; box-shadow: 0 4px 12px rgba(74, 107, 255, 0.3); transition: all 0.3s ease; opacity: 0; visibility: hidden; transform: translateY(20px); z-index: 1000; backdrop-filter: blur(2px); /* Adds a subtle blur effect to elements behind */ border: 1px solid rgba(255, 255, 255, 0.2); /* Subtle border */ } .back-to-top.active { opacity: 0.85; /* Matches the background transparency */ visibility: visible; transform: translateY(0); } .back-to-top:hover { background-color: rgba(58, 86, 212, 0.9); /* Slightly less transparent on hover */ box-shadow: 0 6px 16px rgba(74, 107, 255, 0.4); transform: translateY(-3px); opacity: 1; /* Fully opaque on hover */ } .back-to-top::after { content: ""; width: 16px; height: 16px; border-top: 3px solid #fff; border-right: 3px solid #fff; transform: rotate(-45deg); margin-top: 6px; } @media (max-width: 768px) { .back-to-top { width: 44px; height: 44px; bottom: 250px; right: 20px; } } </style> </head> <body> <!-- Back to Top Widget --> <div class="back-to-top" id="backToTop"></div> <script> document.addEventListener('DOMContentLoaded', function() { const backToTopButton = document.getElementById('backToTop'); // Show/hide the button based on scroll position window.addEventListener('scroll', function() { if (window.pageYOffset > 300) { backToTopButton.classList.add('active'); } else { backToTopButton.classList.remove('active'); } }); // Smooth scroll to top when clicked backToTopButton.addEventListener('click', function(e) { e.preventDefault(); window.scrollTo({ top: 0, behavior: 'smooth' }); }); }); </script> </body> </html>";} 0 1172 2 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Scroll Widget HTML
535 142 a:1:{s:5:"items";a:2:{s:7:"filling";s:8:"manually";s:8:"item_ids";s:1:"8";}} 0 810 ty-holiday-gift-banner 3 D banners a:1:{s:8:"template";s:34:"addons/banners/blocks/original.tpl";} 0 1 en Gift banner
531 173 a:1:{s:7:"content";s:63:"<img src="https://backendapi.gonje.com/public/home-banner.png">";} 0 802 3 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Gonje Home Banner
755 241 a:1:{s:7:"content";s:1833:"<div class="realtime-cart-count"> <span class="realtime-cart-badge" id="realtime_cart_counter">0</span> </div> <style> .realtime-cart-count { position: relative; top: 25px; display: inline-block; z-index: 1000; } .realtime-cart-badge { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; background: #808080; border-radius: 50%; color: white; font-weight: bold; font-size: 14px; transition: all 0.3s ease; } .realtime-cart-badge.update-flash { transform: scale(1.3); background: #ff6b6b; } </style> <script> (function(_, $) { // Flash effect when the cart count updates function flashCounter() { var $counter = $('#realtime_cart_counter'); $counter.addClass('update-flash'); setTimeout(function() { $counter.removeClass('update-flash'); }, 300); } // Function to update the cart count function updateCartCount(newCount) { $('#realtime_cart_counter').text(newCount); flashCounter(); } // Listen for CS-Cart AJAX events (including the add-to-cart modal) $.ceEvent('on', 'ce.ajaxdone', function(response) { if (response.current_amount !== undefined) { updateCartCount(response.current_amount); // Update count with CS-Cart's own response data } }); // Update cart count on page load $(document).ready(function() { $.ceAjax('request', fn_url('checkout.cart'), { callback: function(data) { if (data.cart_amount !== undefined) { updateCartCount(data.cart_amount); } } }); }); })(Tygh, Tygh.$); </script> ";} 0 1204 3 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Cart count html block
742 248 a:1:{s:7:"content";s:342:"<script>// Find all span elements with both classes // Find all span elements with both classes const elements = document.querySelectorAll('span.ty-icon.ty-icon-short-list'); // Loop through each found element and apply the style elements.forEach(element => { element.style.top = '-20px'; element.style.background = 'none'; }); </script>";} 0 1173 3 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Script to target sorting icon on product page and restyle
535 11 0 811 blocks/wrappers/mainbox_general.tpl 4 A main 0 1 en Main Content
742 236 a:1:{s:7:"content";s:890:"// Find the button by its name attribute const addToCartButton = document.querySelector('button[name="dispatch[checkout.add..8]"]'); // Function to replace text in the specified classes function replaceTextInClasses() { const elements = document.querySelectorAll('.ty-minicart-title, .ty-hand'); elements.forEach(element => { element.textContent = ''; }); console.log('Text replaced in .ty-minicart-title and .ty-hand'); } // Add click event listener to the button if (addToCartButton) { addToCartButton.addEventListener('click', function(event) { // Optional: Prevent default button behavior if needed // event.preventDefault(); // Execute the text replacement replaceTextInClasses(); // Optional: Add a delay if the content appears dynamically // setTimeout(replaceTextInClasses, 1000); }); } else { console.log('Button not found'); }";} 0 1174 4 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Script to clear cart text after adding item
535 203 a:1:{s:7:"content";s:434:"<!--Start of Tawk.to Script--> <script type="text/javascript"> var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date(); (function(){ var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0]; s1.async=true; s1.src='https://embed.tawk.to/6582623e07843602b803d081/1hi2kvi4u'; s1.charset='UTF-8'; s1.setAttribute('crossorigin','*'); s0.parentNode.insertBefore(s1,s0); })(); </script> <!--End of Tawk.to Script-->";} 0 812 5 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Tawkto Block
742 237 a:1:{s:7:"content";s:569:"<script> // Wait for the DOM to be fully loaded document.addEventListener('DOMContentLoaded', function() { // Find all elements with the class 'ty-minicart-title' var minicartTitles = document.querySelectorAll('.ty-minicart-title'); // Loop through each element found minicartTitles.forEach(function(element) { // Add 10 &nbsp; to the element's content element.innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + element.innerHTML; // Set the display to none element.style.display = 'none'; }); }); </script>";} 0 1175 5 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Replace title with non breaking space in cart content
742 239 a:1:{s:7:"content";s:494:"<script> // Wait for the DOM to be fully loaded document.addEventListener('DOMContentLoaded', function() { // Find the element with both classes const emptyCartElement = document.querySelector('.ty-cart-items__empty.ty-center'); // If the element exists, insert the text if (emptyCartElement) { emptyCartElement.textContent = 'The cart is empty'; } else { console.log('Element with class "ty-cart-items__empty ty-center" not found'); } }); </script>";} 0 1176 6 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Add cart is empty text
742 240 a:1:{s:7:"content";s:1746:"<script> (function(_, $) { // Visual feedback function function flashCounter() { var $counter = $('#realtime_cart_counter'); $counter.addClass('update-flash'); setTimeout(function() { $counter.removeClass('update-flash'); }, 300); } // Function to fetch the latest cart data from the server function updateCartCount() { $.ceAjax('request', fn_url('checkout.cart'), { method: 'POST', callback: function(data) { if (data.cart_amount !== undefined) { $('#realtime_cart_counter').text(data.cart_amount); flashCounter(); } } }); } // 1. TRACK ALL ADD TO CART BUTTONS $(document).on('click', '[id^="button_cart_"], .ty-btn__add-to-cart', function(e) { updateCartCount(); }); // 2. TRACK ALL REMOVE ITEM LINKS $(document).on('click', 'a[href*="checkout.delete"], a[href*="cart.delete"], a[href*="wishlist.delete"]', function(e) { updateCartCount(); }); // 3. HANDLE AJAX RESPONSE EVENTS $.ceEvent('on', 'ce.ajaxdone', function(response) { if (response.cart_amount !== undefined) { $('#realtime_cart_counter').text(response.cart_amount); flashCounter(); } }); // 4. HANDLE CART CHANGES (e.g., quantity updates) $.ceEvent('on', 'ce.cart.changed', function(data) { if (data.amount !== undefined) { $('#realtime_cart_counter').text(data.amount); flashCounter(); } }); // 5. INITIAL CART COUNT UPDATE ON PAGE LOAD $(document).ready(function() { updateCartCount(); }); })(Tygh, Tygh.$); </script>";} 0 1177 7 D safe_smarty_block a:1:{s:8:"template";s:28:"blocks/safe_smarty_block.tpl";} 0 1 en Cart count tpl script
742 242 a:1:{s:7:"content";s:3195:"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Cart Indicator</title> <style> /* Base styles */ .ty-dropdown-box { } /* Cart icon styles */ .ty-icon.ty-icon-cart.ty-minicart__icon.filled { display: inline-block; width: 40px; height: 40px; background-color: #f7f5f0; margin: 10px; position: relative; } /* Green dot indicator */ .ty-icon.ty-icon-cart.ty-minicart__icon.filled.has-indicator::after { content: ''; position: absolute; top: -5px; right: -5px; width: 12px; height: 12px; background-color: #2ecc71; border-radius: 50%; border: 2px solid white; z-index: 10; } /* Button styles */ .ty-btn__add-to-cart { } .ty-btn__add-to-cart:hover { } </style> </head> <body> <script> document.addEventListener('DOMContentLoaded', function() { const addToCartButton = document.querySelector('.ty-btn__add-to-cart'); function containsCartText(element) { const textContent = element.textContent || element.innerText; return textContent.toLowerCase().includes('cart'); } function getTargetIcons() { const allDropdowns = document.querySelectorAll('.ty-dropdown-box'); const targetIcons = []; allDropdowns.forEach(dropdown => { if (containsCartText(dropdown)) { const icon = dropdown.querySelector('.ty-icon.ty-icon-cart.ty-minicart__icon.filled'); if (icon) { targetIcons.push({ icon: icon, container: dropdown }); } } }); return targetIcons; } // Add green dot when clicking the button addToCartButton.addEventListener('click', function() { const targetIcons = getTargetIcons(); targetIcons.forEach(item => { item.icon.classList.add('has-indicator'); }); }); // Remove green dot when clicking the container document.addEventListener('click', function(e) { const dropdown = e.target.closest('.ty-dropdown-box'); if (dropdown && containsCartText(dropdown)) { const icon = dropdown.querySelector('.ty-icon.ty-icon-cart.ty-minicart__icon.filled'); if (icon) { icon.classList.remove('has-indicator'); } } }); }); </script> </body> </html>";} 0 1178 8 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Cart Update Indicator
742 243 a:1:{s:7:"content";s:861:"<script> (function() { // Function to hide the error message const hideCountryError = () => { const notifications = document.querySelectorAll('.cm-notification-content.notification-content.alert-error'); notifications.forEach(notification => { if (notification.textContent.includes("The 'Country' field is required.")) { notification.style.display = 'none'; // Hide it // notification.remove(); // Or remove it completely } }); }; // Run immediately when the script loads hideCountryError(); // Set up a MutationObserver to detect dynamically loaded errors const observer = new MutationObserver(hideCountryError); observer.observe(document.body, { childList: true, subtree: true }); })(); </script>";} 0 1179 9 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Remove country required notification
742 244 a:1:{s:7:"content";s:2123:"<script> // Function to fetch country from IPinfo and update both select and flag function setCountryBasedOnIP() { const selectElement = document.getElementById('litecheckout_country'); const flagSpan = document.querySelector('.ty-icon.ty-flag.ty-select-block__a-flag'); if (!selectElement || !flagSpan) { console.error('Required elements not found'); return; } // Fetch country information from IPinfo fetch('https://ipinfo.io/json?token=801609ba6b01eb') .then(response => response.json()) .then(data => { const countryCode = data.country; // Get the 2-letter country code if (!countryCode) { console.error('Could not determine country from IP'); return; } // Update the select dropdown const optionToSelect = selectElement.querySelector(`option[value="${countryCode}"]`); if (optionToSelect) { optionToSelect.selected = true; // Update the flag span // First remove all existing flag classes flagSpan.className = flagSpan.className.replace(/\bty-flag-\w+\b/g, ''); // Add the new flag class flagSpan.classList.add(`ty-flag-${countryCode.toLowerCase()}`); // Trigger change event const event = new Event('change'); selectElement.dispatchEvent(event); console.log(`Country set to ${optionToSelect.textContent} (${countryCode})`); } else { console.warn(`No option found for country code: ${countryCode}`); } }) .catch(error => { console.error('Error fetching IP info:', error); }); } // Run when page loads document.addEventListener('DOMContentLoaded', setCountryBasedOnIP); // Also handle dynamic loading const observer = new MutationObserver(() => { if (document.getElementById('litecheckout_country') && document.querySelector('.ty-icon.ty-flag.ty-select-block__a-flag')) { setCountryBasedOnIP(); observer.disconnect(); } }); observer.observe(document.body, { childList: true, subtree: true }); </script>";} 0 1180 10 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Target and autofill country input field
742 19 0 1181 11 D template a:1:{s:8:"template";s:41:"blocks/static_templates/payment_icons.tpl";} 0 1 en Payment icons
742 221 a:1:{s:7:"content";s:475:"<script> function hideNotifications() { document.querySelectorAll(".notification-content").forEach(function (element) { element.style.display = "none"; }); } // Run once on initial load setTimeout(hideNotifications, 3000); // Set up MutationObserver to handle AJAX-loaded elements const observer = new MutationObserver(function (mutations) { hideNotifications(); }); observer.observe(document.body, { childList: true, subtree: true, }); </script>";} 0 1182 12 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Notification timer control
742 234 a:1:{s:7:"content";s:721:"<script> document.addEventListener('DOMContentLoaded', function() { // Find all elements with the specified classes const elements = document.querySelectorAll('.ty-minicart-title.ty-hand, .ty-block'); // Loop through each element found elements.forEach(element => { // Clear the existing text content and add &nbsp; with a dropdown icon element.innerHTML = '&nbsp;<span class="dropdown-icon">▼</span>'; // Style the dropdown icon for mobile const dropdownIcon = element.querySelector('.dropdown-icon'); dropdownIcon.style.fontSize = '8px'; // Mobile-friendly size dropdownIcon.style.verticalAlign = 'middle'; dropdownIcon.style.display = 'none'; }); }); </script>";} 0 1183 13 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Remodel and remove text from cart
742 235 a:1:{s:7:"content";s:909:"<script> // Find the button by its name attribute const addToCartButton = document.querySelector('button[name="dispatch[checkout.add..8]"]'); // Function to replace text in the specified classes function replaceTextInClasses() { const elements = document.querySelectorAll('.ty-minicart-title, .ty-hand'); elements.forEach(element => { element.textContent = ''; }); console.log('Text replaced in .ty-minicart-title and .ty-hand'); } // Add click event listener to the button if (addToCartButton) { addToCartButton.addEventListener('click', function(event) { // Optional: Prevent default button behavior if needed // event.preventDefault(); // Execute the text replacement replaceTextInClasses(); // Optional: Add a delay if the content appears dynamically // setTimeout(replaceTextInClasses, 1000); }); } else { console.log('Button not found'); } </script>";} 0 1184 14 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Replace cart title with empty string
742 245 a:1:{s:7:"content";s:619:"<script> const shopNowLink = Array.from(document.querySelectorAll('a')).find(a => a.textContent.trim() === 'Shop now' && a.href === 'https://marketplace.gonje.com/fulfilment-by-gonje/' ); if (shopNowLink) { // Add the onclick attribute shopNowLink.setAttribute('onclick', "document.getElementById('mod-sn-modal').style.display = 'flex'"); // Remove the href attribute to disable linking shopNowLink.removeAttribute('href'); // Prevent default behavior if someone tries to click it shopNowLink.addEventListener('click', (e) => { e.preventDefault(); }); } </script>";} 0 1185 15 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Script for shop now vendor location link
742 233 a:1:{s:7:"content";s:946:"<script> // Wait for DOM to be fully loaded before executing document.addEventListener('DOMContentLoaded', function() { try { // Hide elements with any attribute containing 'wk_aramex_delivery_datetime' const elementsToHide = document.querySelectorAll('[id*="wk_aramex_delivery_datetime"], [name*="wk_aramex_delivery_datetime"], [class*="wk_aramex_delivery_datetime"]'); elementsToHide.forEach(element => { if (element && element.style) { element.style.display = 'none'; } }); // Hide labels containing these elements document.querySelectorAll('label').forEach(label => { if (label && label.innerHTML && label.innerHTML.includes('wk_aramex_delivery_datetime')) { label.style.display = 'none'; } }); } catch (error) { console.error('Error hiding elements:', error); } }); </script>";} 0 1187 16 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Hide Webkul Date and Time