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 '' 
  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 = 0 
  AND dynamic_object_content.object_type like '' 
WHERE 
  cscart_bm_snapping.grid_id IN (
    509, 510, 511, 512, 513, 514, 515, 516, 
    517, 518, 519, 520, 521, 522, 523, 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.00203

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost": 0.939654126,
    "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": 80,
              "cost": 0.11163656,
              "filtered": 100,
              "index_condition": "cscart_bm_snapping.grid_id in (509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,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": 80,
          "rows": 1,
          "cost": 0.0756512,
          "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": 80,
          "rows": 1,
          "cost": 0.0764704,
          "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": 80,
          "rows": 1,
          "cost": 0.0779848,
          "filtered": 100,
          "attached_condition": "trigcond(cscart_bm_snapping.snapping_id = cscart_bm_block_statuses.snapping_id and cscart_bm_block_statuses.object_type like '')"
        }
      },
      {
        "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": 80,
          "rows": 1,
          "cost": 0.1427016,
          "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": 80,
          "rows": 5,
          "cost": 0.1948616,
          "filtered": 100,
          "attached_condition": "trigcond(dynamic_object_content.lang_code = cscart_bm_blocks_descriptions.lang_code and dynamic_object_content.object_id = 0 and dynamic_object_content.object_type like '')"
        }
      }
    ]
  }
}

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
512 8 0 770 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
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
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
741 18 0 1170 0 A template a:1:{s:8:"template";s:37:"blocks/static_templates/copyright.tpl";} 0 1 en Copyright
513 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 771 0 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 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
516 134 a:1:{s:5:"items";a:2:{s:7:"filling";s:8:"manually";s:8:"item_ids";s:1:"9";}} 0 778 homepage-banners ty-banners-pickup 0 D banners a:1:{s:8:"template";s:34:"addons/banners/blocks/original.tpl";} 0 1 en Discount for pickup
517 135 a:1:{s:5:"items";a:5:{s:7:"filling";s:6:"newest";s:6:"period";s:1:"A";s:9:"last_days";s:2:"10";s:5:"limit";s:1:"8";s:3:"cid";s:0:"";}} 0 780 blocks/wrappers/mainbox_simple.tpl homepage-hotdeals 0 D products a:11:{s:8:"template";s:37:"blocks/products/products_scroller.tpl";s:10:"show_price";s:1:"N";s:17:"enable_quick_view";s:1:"N";s:24:"not_scroll_automatically";s:1:"Y";s:15:"scroll_per_page";s:1:"Y";s:5:"speed";s:3:"400";s:11:"pause_delay";s:1:"3";s:13:"item_quantity";s:1:"4";s:15:"thumbnail_width";s:3:"320";s:18:"outside_navigation";s:1:"Y";s:23:"hide_add_to_cart_button";s:1:"Y";} 0 1 en Hot deals
519 136 a:1:{s:5:"items";a:3:{s:7:"filling";s:7:"on_sale";s:5:"limit";s:1:"8";s:3:"cid";s:0:"";}} 0 783 blocks/wrappers/mainbox_simple.tpl homepage-on-sale 0 D products a:4:{s:8:"template";s:41:"blocks/products/products_multicolumns.tpl";s:11:"item_number";s:1:"N";s:17:"number_of_columns";s:1:"4";s:23:"hide_add_to_cart_button";s:1:"Y";} 0 1 en On Sale
523 140 a:1:{s:5:"items";a:2:{s:7:"filling";s:8:"manually";s:8:"item_ids";s:1:"7";}} 0 788 0 D banners a:1:{s:8:"template";s:34:"addons/banners/blocks/original.tpl";} 0 1 en Footer banners
515 167 a:1:{s:7:"content";s:3534:"<style> .gonje-vendors-container { font-family: Arial, sans-serif; max-width: 800px; padding: 16px; text-align: center; } .gonje-vendors-heading { font-size: 24px; font-weight: bold; margin-bottom: 20px; color: #333; } .gonje-vendors-grid-container { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; max-width: 800px; padding: 16px; background-color: #fff; border-radius: 10px; margin-bottom: 30px; } .gonje-vendors-grid-item { background-color: #fff; border-radius: 5px; padding: 20px; display: flex; justify-content: center; align-items: center; transition: transform 0.2s, box-shadow 0.2s; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } .gonje-vendors-grid-item a { display: flex; flex-direction: column; align-items: center; color: black; text-decoration: none; } .gonje-vendors-grid-item img { width: 60px; max-width: 100px; margin-bottom: 10px; } .gonje-vendors-grid-item:hover { transform: scale(1.05); background-color: #F7D594; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); } .gonje-vendors-grid-item a span { font-weight: bold; } @media (max-width: 800px) { .gonje-vendors-grid-container { grid-template-columns: repeat(3, 1fr); } } @media (max-width: 600px) { .gonje-vendors-grid-container { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 400px) { .gonje-vendors-grid-container { grid-template-columns: 1fr; } } </style> <div class="gonje-vendors-container"> <div class="gonje-vendors-heading"> Fresh Finds, Daily Essentials, and Gourmet Delights! </div> <div class="gonje-vendors-grid-container"> <div class="gonje-vendors-grid-item"> <a href="https://marketplace.gonje.com/fulfilment-by-gonje"> <img src="https://www.gonje.com.au/assets/images/shopping-basket.svg" alt="Groceries"> Fulfilment By Gonje </a> </div> <div class="gonje-vendors-grid-item"> <a href="https://marketplace.gonje.com/fridge"> <img src="https://www.gonje.com.au/assets/images/fridge.svg" alt="Fridge"> Fridge </a> </div> <div class="gonje-vendors-grid-item"> <a href="https://marketplace.gonje.com/meal-kits-en"> <img src="https://www.gonje.com.au/assets/images/kitchen-book.svg" alt="Meal Kits"> Meal Kits </a> </div> <!-- <div class="gonje-vendors-grid-item"> <a href="https://marketplace.gonje.com/todays-sale"> <img src="https://www.gonje.com.au/assets/images/sale(1).svg" alt="Today's Sale"> Today's Sale </a> </div> --> <!-- <div class="gonje-vendors-grid-item"> <a href="https://marketplace.gonje.com/gift-cards"> <img src="https://www.gonje.com.au/assets/images/gift-box.svg" alt="Gift Card"> Gift Card </a> </div> --> <!-- <div class="gonje-vendors-grid-item"> <a href="https://marketplace.gonje.com/top-deals"> <img src="https://www.gonje.com.au/assets/images/offers.svg" alt="Top Deals"> Top Deals </a> </div> --> <div class="gonje-vendors-grid-item"> <a href="https://marketplace.gonje.com/suppliers"> <img src="https://www.gonje.com.au/assets/images/project-launch.svg" alt="Suppliers"> Suppliers </a> </div> <div class="gonje-vendors-grid-item"> <a href="https://marketplace.gonje.com/whats-new"> <img src="https://www.gonje.com.au/assets/images/new-items.svg" alt="What's New"> What's New </a> </div> </div> </div>";} 0 775 0 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Gonje Categories 1
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
513 353 a:1:{s:7:"content";s:32765:"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vendor Search with Modal</title> <!-- Add Font Awesome CSS --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap'); /* Custom Google Autocomplete Dropdown Styling */ .pac-container { font-family: 'Poppins', sans-serif; background-color: #fff; border-radius: 12px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); border: none; margin-top: 5px; z-index: 1002 !important; overflow: hidden; } .pac-item { padding: 12px 16px; border-bottom: 1px solid #f0f0f0; transition: all 0.2s ease; cursor: pointer; font-size: 14px; } .pac-item:hover { background-color: #f8f9fa; } .pac-item-query { font-size: 15px; color: #333; font-weight: 500; font-family: 'Poppins', sans-serif; } .pac-matched { font-weight: 600; color: #28A745; } .pac-icon { margin-right: 10px; color: #666; } .pac-item:last-child { border-bottom: none; } .pac-item-selected { background-color: #e8f5e9; } .pac-logo:after { display: none; } /* Hero section styling */ .hero-section { background-image: url('https://marketplace.gonje.com/images/gonje-experience-2.png'); background-size: cover; background-position: center; border-radius: 20px; padding: 30px 30px 60px 20px; margin: 20px auto; max-width: 1200px; position: relative; opacity: 0.95; box-shadow: 0 0 8px rgba(40, 167, 69, 0.5); } .hero-section::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 0.1); border-radius: 20px; z-index: 0; } .hero-content { position: relative; z-index: 1; } /* Prevent body scrolling when modal is open */ body.modal-open { overflow: hidden; position: fixed; width: 100%; } /* Hero text styling */ .hero-text { font-family: 'Poppins', sans-serif; font-size: 42px; font-weight: 700; color: #000000; text-align: center; margin: 0 0; line-height: 1.3; text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1); } /* Animated arrow styling */ .arrow-down { text-align: center; margin: 15px 0; color: #28A745; } .arrow-down i { font-size: 30px; animation: bounce 2s infinite; cursor: pointer; } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-15px); } 60% { transform: translateY(-7px); } } /* Modal and search input styling */ .shopnow-gonje-top-vendor-search-container { width: 100%; max-width: 600px; position: relative; text-align: center; margin: 10px auto 0; } .shopnow-gonje-top-vendor-search-input, .shopnow-gonje-top-vendor-search-div { width: 90%; padding: 16px; border: 2px solid #ccc; border-radius: 20px; font-size: 18px; font-family: 'Poppins', sans-serif; outline: none; transition: border-color 0.3s ease; margin: 0 auto 0 auto; text-align: center; cursor: pointer; background-color: white; } /* No vendors link styling */ .no-vendors-link { font-family: 'Poppins', sans-serif; font-size: 12px; color: #666; text-decoration: underline; display: block; margin-bottom: 20px; } .no-vendors-link:hover { color: #28A745; text-decoration: underline; } /* Center placeholder text on larger screens */ @media (min-width: 992px) { .shopnow-gonje-top-vendor-search-input::placeholder, .shopnow-location-input::placeholder { text-align: center; } } .shopnow-gonje-top-vendor-search-input:hover, .shopnow-gonje-top-vendor-search-div:hover { border-color: #70ab4b; } .shopnow-gonje-top-vendor-search-input:focus, .shopnow-gonje-top-vendor-search-div:focus { border-color: #0056b3; } .shopnow-gonje-top-vendor-search-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); justify-content: center; align-items: center; transition: opacity 0.3s ease; z-index: 1000; overflow-y: auto; } .shopnow-gonje-top-vendor-search-modal-content { background: white; padding: 20px; border-radius: 10px; width: 90%; max-width: 500px; text-align: center; position: relative; z-index: 1001; max-height: 90vh; margin: 20px 0; overflow-y: auto; } .shopnow-gonje-top-vendor-search-close-btn { position: absolute; top: 10px; right: 15px; font-size: 18px; cursor: pointer; } /* Vendor search container styling */ .shopnow-search-container { margin: 20px; text-align: center; width: calc(100% - 40px); } .shopnow-search-container input, .shopnow-search-container button { padding: 12px; margin: 5px; font-size: 16px; width: 100%; border: 1px solid #28A745; border-radius: 8px; transition: all 0.3s ease-in-out; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); box-sizing: border-box; } .shopnow-search-container input { background-color: #f9fcf5; outline: none; } .shopnow-search-container input:focus { border-color: #28A745; box-shadow: 0 0 8px rgba(40, 167, 69, 0.5); } .shopnow-search-container button { background-color: #28A745; color: white; border: none; cursor: pointer; font-weight: bold; } .shopnow-search-container button:hover { background-color: #1e7e34; box-shadow: 0 3px 8px rgba(30, 126, 52, 0.3); } /* Loading spinner styles */ .loading-spinner { display: inline-block; width: 20px; height: 20px; border: 3px solid rgba(255,255,255,.3); border-radius: 50%; border-top-color: #fff; animation: spin 1s ease-in-out infinite; margin-right: 10px; vertical-align: middle; } @keyframes spin { to { transform: rotate(360deg); } } .loading-text { text-align: center; color: #666; font-style: italic; } /* Vendor item styling - make entire item clickable */ .shopnow-vendor-item { border: 1px solid #ddd; padding: 15px; margin: 10px 0; border-radius: 8px; background-color: #ffffff; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); width: calc(100% - 30px); transition: all 0.2s ease; display: block; text-decoration: none; color: inherit; } .shopnow-vendor-item:hover { background-color: #f8f9fa; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); transform: translateY(-2px); } .shopnow-vendor-content { display: flex; align-items: center; } .shopnow-vendor-logo { width: 50px; height: 50px; object-fit: cover; border-radius: 50%; margin-right: 15px; border: 2px solid #28A745; } .shopnow-vendor-details h3 { color: #28A745; margin-bottom: 5px; } .shopnow-search-container input[type="range"] { width: 100%; height: 8px; background: #ddd; border-radius: 5px; border: none; -webkit-appearance: none; appearance: none; outline: none; } .shopnow-search-container input[type="range"]::-webkit-slider-runnable-track { height: 8px; background: #28A745; border-radius: 5px; } .shopnow-search-container input[type="range"]::-moz-range-track { height: 8px; background: #28A745; border-radius: 5px; } .shopnow-search-container input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; background: #28A745; border-radius: 50%; cursor: pointer; border: 2px solid white; margin-top: -6px; } .shopnow-search-container input[type="range"]::-moz-range-thumb { width: 20px; height: 20px; background: #28A745; border-radius: 50%; cursor: pointer; border: 2px solid white; } .shopnow-radius-label { font-weight: bold; color: #28A745; display: block; margin: 10px 0; } /* Mailchimp Modal Styling */ .mailchimp-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); justify-content: center; align-items: center; z-index: 1000; overflow-y: auto; } .mailchimp-modal-content { background: white; padding: 30px; border-radius: 10px; width: 90%; max-width: 500px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); position: relative; margin: 20px 0; max-height: 90vh; overflow-y: auto; } .mailchimp-close-btn { position: absolute; top: 15px; right: 20px; font-size: 24px; cursor: pointer; color: #666; background: none; border: none; } #mc_embed_signup { background: transparent; font-family: 'Poppins', sans-serif; width: 100%; } #mc_embed_signup h2 { font-size: 24px; font-weight: 600; color: #28A745; margin-bottom: 20px; text-align: center; } #mc_embed_signup .indicates-required { text-align: right; font-size: 12px; color: #666; margin-bottom: 15px; } #mc_embed_signup .asterisk { color: #e74c3c; } #mc_embed_signup .mc-field-group { margin-bottom: 20px; width: 100%; } #mc_embed_signup label { display: block; font-size: 14px; margin-bottom: 8px; color: #333; font-weight: 500; } #mc_embed_signup input { width: 100%; padding: 12px 15px; border: 1px solid #ddd; border-radius: 8px; font-size: 16px; transition: border-color 0.3s; box-sizing: border-box; } #mc_embed_signup input:focus { border-color: #28A745; outline: none; box-shadow: 0 0 0 2px rgba(40, 167, 69, 0.2); } #mc_embed_signup .button { background-color: #28A745; color: white; border: none; padding: 14px 20px; border-radius: 8px; font-size: 16px; font-weight: 600; cursor: pointer; width: 100%; transition: background-color 0.3s; margin-top: 10px; } #mc_embed_signup .button:hover { background-color: #1e7e34; } #mc_embed_signup .response { margin: 15px 0; padding: 10px; border-radius: 5px; font-size: 14px; } #mc_embed_signup #mce-error-response { color: #e74c3c; background-color: #fdecea; } #mc_embed_signup #mce-success-response { color: #28A745; background-color: #e8f5e9; } @media (max-width: 768px) { .hero-text { font-size: 32px; } .shopnow-gonje-top-vendor-search-div, .shopnow-location-input { font-size: 16px; padding: 14px; } .shopnow-gonje-top-vendor-search-modal-content, .mailchimp-modal-content { padding: 20px; width: 85%; } #mc_embed_signup h2 { font-size: 20px; } .arrow-down i { font-size: 24px; } } </style> </head> <body> <!-- Hero Section --> <div class="hero-section"> <div class="hero-content"> <!-- Hero Text --> <div class="hero-text"> Begin Your Gonje Journey Today! Shop Now </div> <!-- Animated Arrow --> <div class="arrow-down" onclick="document.getElementById('shopNowButton').click()"> <i class="fas fa-arrow-down"></i> </div> <!-- Search Input --> <div class="shopnow-gonje-top-vendor-search-container"> <div class="shopnow-gonje-top-vendor-search-div" id="shopNowButton">Enter address to find vendors near by &#127758;</div> <a href="#" class="no-vendors-link" style="font-weight:bold;color:#000" id="noVendorsLink">Click here if you don't find any vendors nearby</a> </div> </div> </div> <!-- Vendor Search Modal --> <div class="shopnow-gonje-top-vendor-search-modal"> <div class="shopnow-gonje-top-vendor-search-modal-content"> <span class="shopnow-gonje-top-vendor-search-close-btn">×</span> <h2>Search for vendors</h2> <div class="shopnow-search-container"> <input type="text" class="shopnow-location-input" placeholder="Enter address to find vendors near by &#127758;"> <input type="range" class="shopnow-radius-slider" min="1" max="50" value="10" oninput="updateRadiusLabel(this.value)"> <span class="shopnow-radius-label">10 km</span> <button onclick="fetchCompanies(1)">Search</button> </div> <div class="shopnow-company-list"></div> <a href="#" class="no-vendors-link" id="modalNoVendorsLink" style="display: none;">Click here if you don't find any vendors nearby</a> </div> </div> <!-- Mailchimp Form Modal --> <div class="mailchimp-modal" id="mailchimpModal"> <div class="mailchimp-modal-content"> <span class="mailchimp-close-btn" id="mailchimpCloseBtn">×</span> <div id="mc_embed_signup"> <form action="https://gonje.us20.list-manage.com/subscribe/post?u=8293c49fe797c04b3b9f52c23&amp;id=b040c42304&amp;f_id=00d3c7f1f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank"> <div id="mc_embed_signup_scroll"> <h2>Get Notified When Vendors Are Available</h2> <div class="indicates-required"><span class="asterisk">*</span> indicates required</div> <div class="mc-field-group"> <label for="mce-EMAIL">Email Address <span class="asterisk">*</span></label> <input type="email" name="EMAIL" class="required email" id="mce-EMAIL" required placeholder="your@email.com"> </div> <div class="mc-field-group"> <label for="mce-POSTCODE">Postal Code <span class="asterisk">*</span></label> <input type="text" name="POSTCODE" class="required text" id="mce-POSTCODE" required placeholder="e.g. 90210"> </div> <div id="mce-responses" class="clear"> <div class="response" id="mce-error-response" style="display:none"></div> <div class="response" id="mce-success-response" style="display:none"></div> </div> <div aria-hidden="true" style="position: absolute; left: -5000px;"> <input type="text" name="b_8293c49fe797c04b3b9f52c23_b040c42304" tabindex="-1" value=""> </div> <div class="clear"> <input type="submit" name="subscribe" id="mc-embedded-subscribe" class="button" value="Subscribe"> </div> </div> </form> </div> </div> </div> <script> // Vendor search modal functionality document.getElementById('shopNowButton').addEventListener('click', function(event) { event.preventDefault(); document.body.classList.add('modal-open'); document.querySelector('.shopnow-gonje-top-vendor-search-modal').style.display = 'flex'; }); document.querySelector('.shopnow-gonje-top-vendor-search-close-btn').addEventListener('click', function() { document.body.classList.remove('modal-open'); document.querySelector('.shopnow-gonje-top-vendor-search-modal').style.display = 'none'; }); // Mailchimp modal functionality function showMailchimpModal() { document.body.classList.add('modal-open'); document.getElementById('mailchimpModal').style.display = 'flex'; // Pre-fill the postal code if we have it if (userPostcode) { document.getElementById('mce-POSTCODE').value = userPostcode; } } document.getElementById('noVendorsLink').addEventListener('click', function(event) { event.preventDefault(); showMailchimpModal(); }); document.getElementById('modalNoVendorsLink').addEventListener('click', function(event) { event.preventDefault(); showMailchimpModal(); }); document.getElementById('mailchimpCloseBtn').addEventListener('click', function() { document.body.classList.remove('modal-open'); document.getElementById('mailchimpModal').style.display = 'none'; }); // Close modals when clicking outside window.addEventListener('click', function(event) { if (event.target === document.querySelector('.shopnow-gonje-top-vendor-search-modal')) { document.body.classList.remove('modal-open'); document.querySelector('.shopnow-gonje-top-vendor-search-modal').style.display = 'none'; } if (event.target === document.getElementById('mailchimpModal')) { document.body.classList.remove('modal-open'); document.getElementById('mailchimpModal').style.display = 'none'; } }); // Vendor search functionality let userLatitude = null; let userLongitude = null; let userPostcode = null; let userState = null; let userAddress = null; function updateRadiusLabel(value) { document.querySelector('.shopnow-radius-label').innerText = value + " km"; } function fetchCompanies(page = 1) { const radius = document.querySelector('.shopnow-radius-slider').value; const searchButton = document.querySelector('.shopnow-search-container button'); if (!userLatitude || !userLongitude) { alert("Please enter a valid address."); return; } // Show loading state searchButton.innerHTML = '<span class="loading-spinner"></span> Searching...'; searchButton.disabled = true; const companyList = document.querySelector('.shopnow-company-list'); companyList.innerHTML = '<p class="loading-text">Searching for vendors...</p>'; // Include all collected data in the request const url = new URL('https://marketplace.gonje.com/vendor_search.php'); url.searchParams.append('page', page); url.searchParams.append('lat', userLatitude); url.searchParams.append('lng', userLongitude); url.searchParams.append('radius', radius); if (userPostcode) url.searchParams.append('postcode', userPostcode); if (userState) url.searchParams.append('state', userState); if (userAddress) url.searchParams.append('address', userAddress); fetch(url) .then(response => response.json()) .then(data => { companyList.innerHTML = ''; // Show/hide the no vendors link based on results const noVendorsLink = document.getElementById('modalNoVendorsLink'); if (data.status !== 'ok' || !data.data || data.data.length === 0) { companyList.innerHTML = '<p>No vendors found.</p>'; noVendorsLink.style.display = 'block'; return; } noVendorsLink.style.display = 'none'; data.data.forEach(company => { const vendorItem = document.createElement('a'); vendorItem.href = company.storefront_url; vendorItem.classList.add('shopnow-vendor-item'); vendorItem.innerHTML = ` <div class="shopnow-vendor-content"> <img src="${company.logo_url}" alt="Logo" class="shopnow-vendor-logo"> <div class="shopnow-vendor-details"> <h3>${company.company_name}</h3> <p>Description: ${company.company_description}</p> <p>Distance: ${company.distance} km</p> </div> </div> `; companyList.appendChild(vendorItem); }); }) .catch(error => { console.error('Error fetching companies:', error); companyList.innerHTML = '<p>An error occurred while fetching companies. Please try again later.</p>'; }) .finally(() => { // Reset button state searchButton.innerHTML = 'Search'; searchButton.disabled = false; }); } function initAutocomplete() { const input = document.querySelector('.shopnow-location-input'); const autocomplete = new google.maps.places.Autocomplete(input, { types: ['geocode'], fields: ['geometry', 'address_components', 'formatted_address'], componentRestrictions: { country: 'au' } // This restricts results to Australia }); autocomplete.addListener('place_changed', function () { const place = autocomplete.getPlace(); if (!place.geometry) { alert("No location found. Please select from the dropdown."); return; } // Store all location data userLatitude = place.geometry.location.lat(); userLongitude = place.geometry.location.lng(); userAddress = place.formatted_address; // Reset these values before checking components userPostcode = ''; userState = ''; // Extract address components place.address_components.forEach(component => { if (component.types.includes('postal_code')) { userPostcode = component.long_name; } if (component.types.includes('administrative_area_level_1')) { userState = component.short_name; } }); console.log('Location data collected:', { address: userAddress, postcode: userPostcode, state: userState, coordinates: { lat: userLatitude, lng: userLongitude } }); }); } // Enhanced Mailchimp form handling document.getElementById('mc-embedded-subscribe-form').addEventListener('submit', function(e) { e.preventDefault(); // Get form data const formData = new FormData(this); const email = formData.get('EMAIL'); const postcode = formData.get('POSTCODE') || userPostcode; // Validate required fields if (!email || !postcode) { alert('Please fill in all required fields'); return; } // Prepare Mailchimp submission data const mailchimpData = { u: '8293c49fe797c04b3b9f52c23', id: 'b040c42304', EMAIL: email, POSTCODE: postcode, STATE: userState || '', ADDRESS: userAddress || '', SOURCE: 'Vendor Search', 'b_8293c49fe797c04b3b9f52c23_b040c42304': '' // Hidden field }; // Show loading state const submitBtn = document.getElementById('mc-embedded-subscribe'); submitBtn.disabled = true; submitBtn.value = 'Sending...'; // Submit to Mailchimp fetch('https://gonje.us20.list-manage.com/subscribe/post-json', { method: 'POST', body: new URLSearchParams(mailchimpData), headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, mode: 'no-cors' }) .then(response => { if (!response.ok) throw new Error('Network response was not ok'); return response.json(); }) .then(data => { if (data.result === 'success') { // Show success message document.getElementById('mce-success-response').style.display = 'block'; document.getElementById('mce-success-response').innerHTML = 'Thank you for subscribing!'; document.getElementById('mce-error-response').style.display = 'none'; // Close modal after 2 seconds setTimeout(() => { document.body.classList.remove('modal-open'); document.getElementById('mailchimpModal').style.display = 'none'; }, 2000); } else { throw new Error(data.msg || 'Subscription failed'); } }) .catch(error => { console.error('Mailchimp submission error:', error); document.getElementById('mce-error-response').style.display = 'block'; document.getElementById('mce-error-response').innerHTML = 'Subscription failed: ' + error.message; document.getElementById('mce-success-response').style.display = 'none'; }) .finally(() => { submitBtn.disabled = false; submitBtn.value = 'Subscribe'; }); }); // Load Google Maps API const script = document.createElement('script'); script.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyCxMO0g5Vv0ZtSthhrrXMVOYVBcjf4G1hw&libraries=places&callback=initAutocomplete"; script.async = true; script.defer = true; document.body.appendChild(script); // Load Mailchimp validation script const mailchimpScript = document.createElement('script'); mailchimpScript.src = "//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js"; mailchimpScript.async = true; document.body.appendChild(mailchimpScript); // Mailchimp configuration (function($) { window.fnames = new Array(); window.ftypes = new Array(); fnames[0]='EMAIL'; ftypes[0]='email'; fnames[6]='POSTCODE'; ftypes[6]='text'; fnames[7]='STATE'; ftypes[7]='text'; fnames[8]='ADDRESS'; ftypes[8]='text'; }(jQuery)); var $mcj = jQuery.noConflict(true); </script> </body> </html>";} 0 1160 0 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Homepage Vendor Search Banner
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
513 369 a:1:{s:7:"content";s:31108:"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vendor Search with Modal</title> <style> @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap'); /* Custom Google Autocomplete Dropdown Styling dev */ .pac-container { font-family: 'Poppins', sans-serif; background-color: #fff; border-radius: 12px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); border: none; margin-top: 5px; z-index: 1002 !important; overflow: hidden; } .pac-item { padding: 12px 16px; border-bottom: 1px solid #f0f0f0; transition: all 0.2s ease; cursor: pointer; font-size: 14px; } .pac-item:hover { background-color: #f8f9fa; } .pac-item-query { font-size: 15px; color: #333; font-weight: 500; font-family: 'Poppins', sans-serif; } .pac-matched { font-weight: 600; color: #28A745; } .pac-icon { margin-right: 10px; color: #666; } .pac-item:last-child { border-bottom: none; } .pac-item-selected { background-color: #e8f5e9; } .pac-logo:after { display: none; } /* Hero section styling */ .hero-section { background-image: url('https://marketplace.gonje.com/images/gonje-experience-homepage.png'); background-size: cover; background-position: center; border-radius: 20px; padding: 30px 30px 60px 20px; margin: 20px auto; max-width: 1200px; position: relative; top: -30px; opacity: 0.95; box-shadow: 0 0 8px rgba(40, 167, 69, 0.5); } .hero-section::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 0.1); border-radius: 20px; z-index: 0; } .hero-content { position: relative; z-index: 1; } /* Prevent body scrolling when modal is open */ body.modal-open { overflow: hidden; position: fixed; width: 100%; } /* Hero text styling */ .hero-text { font-family: 'Poppins', sans-serif; font-size: 42px; font-weight: 700; color: #000000; text-align: center; margin: 0 0; line-height: 1.3; text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1); } /* Modal and search input styling */ .shopnow-gonje-top-vendor-search-container { width: 100%; max-width: 600px; position: relative; text-align: center; margin: 10px auto 0; } .shopnow-gonje-top-vendor-search-input, .shopnow-gonje-top-vendor-search-div { width: 90%; padding: 16px; border: 2px solid #ccc; border-radius: 20px; font-size: 18px; font-family: 'Poppins', sans-serif; outline: none; transition: border-color 0.3s ease; margin: 0 auto 0 auto; text-align: center; cursor: pointer; background-color: white; } /* No vendors link styling */ .no-vendors-link { font-family: 'Poppins', sans-serif; font-size: 12px; color: #666; text-decoration: underline; display: block; margin-bottom: 20px; } .no-vendors-link:hover { color: #28A745; text-decoration: underline; } /* Center placeholder text on larger screens */ @media (min-width: 992px) { .shopnow-gonje-top-vendor-search-input::placeholder, .shopnow-location-input::placeholder { text-align: center; } } .shopnow-gonje-top-vendor-search-input:hover, .shopnow-gonje-top-vendor-search-div:hover { border-color: #70ab4b; } .shopnow-gonje-top-vendor-search-input:focus, .shopnow-gonje-top-vendor-search-div:focus { border-color: #0056b3; } .shopnow-gonje-top-vendor-search-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); justify-content: center; align-items: center; transition: opacity 0.3s ease; z-index: 1000; overflow-y: auto; } .shopnow-gonje-top-vendor-search-modal-content { background: white; padding: 20px; border-radius: 10px; width: 90%; max-width: 500px; text-align: center; position: relative; z-index: 1001; max-height: 90vh; margin: 20px 0; overflow-y: auto; } .shopnow-gonje-top-vendor-search-close-btn { position: absolute; top: 10px; right: 15px; font-size: 18px; cursor: pointer; } /* Vendor search container styling */ .shopnow-search-container { margin: 20px; text-align: center; width: calc(100% - 40px); } .shopnow-search-container input, .shopnow-search-container button { padding: 12px; margin: 5px; font-size: 16px; width: 100%; border: 1px solid #28A745; border-radius: 8px; transition: all 0.3s ease-in-out; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); box-sizing: border-box; } .shopnow-search-container input { background-color: #f9fcf5; outline: none; } .shopnow-search-container input:focus { border-color: #28A745; box-shadow: 0 0 8px rgba(40, 167, 69, 0.5); } .shopnow-search-container button { background-color: #28A745; color: white; border: none; cursor: pointer; font-weight: bold; } .shopnow-search-container button:hover { background-color: #1e7e34; box-shadow: 0 3px 8px rgba(30, 126, 52, 0.3); } /* Loading spinner styles */ .loading-spinner { display: inline-block; width: 20px; height: 20px; border: 3px solid rgba(255,255,255,.3); border-radius: 50%; border-top-color: #fff; animation: spin 1s ease-in-out infinite; margin-right: 10px; vertical-align: middle; } @keyframes spin { to { transform: rotate(360deg); } } .loading-text { text-align: center; color: #666; font-style: italic; } /* Vendor item styling - make entire item clickable */ .shopnow-vendor-item { border: 1px solid #ddd; padding: 15px; margin: 10px 0; border-radius: 8px; background-color: #ffffff; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); width: calc(100% - 30px); transition: all 0.2s ease; display: block; text-decoration: none; color: inherit; } .shopnow-vendor-item:hover { background-color: #f8f9fa; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); transform: translateY(-2px); } .shopnow-vendor-content { display: flex; align-items: center; } .shopnow-vendor-logo { width: 18%; height: auto; object-fit: cover; margin-right: 15px; } .shopnow-vendor-details { width: 100%; text-align: left; } .shopnow-vendor-details h3 { color: #28A745; margin-bottom: 5px; } .shopnow-search-container input[type="range"] { width: 100%; height: 8px; background: #ddd; border-radius: 5px; border: none; -webkit-appearance: none; appearance: none; outline: none; } .shopnow-search-container input[type="range"]::-webkit-slider-runnable-track { height: 8px; background: #28A745; border-radius: 5px; } .shopnow-search-container input[type="range"]::-moz-range-track { height: 8px; background: #28A745; border-radius: 5px; } .shopnow-search-container input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; background: #28A745; border-radius: 50%; cursor: pointer; border: 2px solid white; margin-top: -6px; } .shopnow-search-container input[type="range"]::-moz-range-thumb { width: 20px; height: 20px; background: #28A745; border-radius: 50%; cursor: pointer; border: 2px solid white; } .shopnow-radius-label { font-weight: bold; color: #28A745; display: block; margin: 10px 0; } /* Mailchimp Modal Styling */ .mailchimp-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); justify-content: center; align-items: center; z-index: 1000; overflow-y: auto; } .mailchimp-modal-content { background: white; padding: 30px; border-radius: 10px; width: 90%; max-width: 500px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); position: relative; margin: 20px 0; max-height: 90vh; overflow-y: auto; } .mailchimp-close-btn { position: absolute; top: 15px; right: 20px; font-size: 24px; cursor: pointer; color: #666; background: none; border: none; } #mc_embed_signup { background: transparent; font-family: 'Poppins', sans-serif; width: 100%; } #mc_embed_signup h2 { font-size: 24px; font-weight: 600; color: #28A745; margin-bottom: 20px; text-align: center; } #mc_embed_signup .indicates-required { text-align: right; font-size: 12px; color: #666; margin-bottom: 15px; } #mc_embed_signup .asterisk { color: #e74c3c; } #mc_embed_signup .mc-field-group { margin-bottom: 20px; width: 100%; } #mc_embed_signup label { display: block; font-size: 14px; margin-bottom: 8px; color: #333; font-weight: 500; } #mc_embed_signup input { width: 100%; padding: 12px 15px; border: 1px solid #ddd; border-radius: 8px; font-size: 16px; transition: border-color 0.3s; box-sizing: border-box; } #mc_embed_signup input:focus { border-color: #28A745; outline: none; box-shadow: 0 0 0 2px rgba(40, 167, 69, 0.2); } #mc_embed_signup .button { background-color: #28A745; color: white; border: none; padding: 14px 20px; border-radius: 8px; font-size: 16px; font-weight: 600; cursor: pointer; width: 100%; transition: background-color 0.3s; margin-top: 10px; } #mc_embed_signup .button:hover { background-color: #1e7e34; } #mc_embed_signup .response { margin: 15px 0; padding: 10px; border-radius: 5px; font-size: 14px; } #mc_embed_signup #mce-error-response { color: #e74c3c; background-color: #fdecea; } #mc_embed_signup #mce-success-response { color: #28A745; background-color: #e8f5e9; } @media (max-width: 768px) { .hero-text { font-size: 32px; } .shopnow-gonje-top-vendor-search-div, .shopnow-location-input { font-size: 16px; padding: 14px; } .shopnow-gonje-top-vendor-search-modal-content, .mailchimp-modal-content { padding: 20px; width: 85%; } #mc_embed_signup h2 { font-size: 20px; } } </style> </head> <body> <!-- Hero Section --> <div class="hero-section"> <div class="hero-content"> <!-- Hero Text --> <div class="hero-text"> Begin Your Gonje Journey Today! Shop Now </div> <!-- Search Input --> <div class="shopnow-gonje-top-vendor-search-container"> <div class="shopnow-gonje-top-vendor-search-div" id="shopNowButton">Enter address to find vendors near by &#127758;</div> <a href="#" class="no-vendors-link" id="noVendorsLink">Click here if you don't find any vendors nearby</a> </div> </div> </div> <!-- Vendor Search Modal --> <div class="shopnow-gonje-top-vendor-search-modal"> <div class="shopnow-gonje-top-vendor-search-modal-content"> <span class="shopnow-gonje-top-vendor-search-close-btn">×</span> <h2>Search for vendors</h2> <div class="shopnow-search-container"> <input type="text" class="shopnow-location-input" placeholder="Enter address to find vendors near by &#127758;"> <input type="range" class="shopnow-radius-slider" min="1" max="50" value="10" oninput="updateRadiusLabel(this.value)"> <span class="shopnow-radius-label">10 km</span> <button onclick="fetchCompanies(1)">Search</button> </div> <div class="shopnow-company-list"></div> <a href="#" class="no-vendors-link" id="modalNoVendorsLink" style="display: none;">Click here if you don't find any vendors nearby</a> </div> </div> <!-- Mailchimp Form Modal marketplace.gonje.com --> <div class="mailchimp-modal" id="mailchimpModal"> <div class="mailchimp-modal-content"> <span class="mailchimp-close-btn" id="mailchimpCloseBtn">×</span> <div id="mc_embed_signup"> <form action="https://gonje.us20.list-manage.com/subscribe/post?u=8293c49fe797c04b3b9f52c23&amp;id=b040c42304&amp;f_id=00d3c7f1f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank"> <div id="mc_embed_signup_scroll"> <h2>Get Notified When Vendors Are Available</h2> <div class="indicates-required"><span class="asterisk">*</span> indicates required</div> <div class="mc-field-group"> <label for="mce-EMAIL">Email Address <span class="asterisk">*</span></label> <input type="email" name="EMAIL" class="required email" id="mce-EMAIL" required placeholder="your@email.com"> </div> <div class="mc-field-group"> <label for="mce-POSTCODE">Postal Code <span class="asterisk">*</span></label> <input type="text" name="POSTCODE" class="required text" id="mce-POSTCODE" required placeholder="e.g. 90210"> </div> <div id="mce-responses" class="clear"> <div class="response" id="mce-error-response" style="display:none"></div> <div class="response" id="mce-success-response" style="display:none"></div> </div> <div aria-hidden="true" style="position: absolute; left: -5000px;"> <input type="text" name="b_8293c49fe797c04b3b9f52c23_b040c42304" tabindex="-1" value=""> </div> <div class="clear"> <input type="submit" name="subscribe" id="mc-embedded-subscribe" class="button" value="Subscribe"> </div> </div> </form> </div> </div> </div> <script> // Vendor search modal functionality document.getElementById('shopNowButton').addEventListener('click', function(event) { event.preventDefault(); document.body.classList.add('modal-open'); document.querySelector('.shopnow-gonje-top-vendor-search-modal').style.display = 'flex'; }); document.querySelector('.shopnow-gonje-top-vendor-search-close-btn').addEventListener('click', function() { document.body.classList.remove('modal-open'); document.querySelector('.shopnow-gonje-top-vendor-search-modal').style.display = 'none'; }); // Mailchimp modal functionality function showMailchimpModal() { document.body.classList.add('modal-open'); document.getElementById('mailchimpModal').style.display = 'flex'; // Pre-fill the postal code if we have it if (userPostcode) { document.getElementById('mce-POSTCODE').value = userPostcode; } } document.getElementById('noVendorsLink').addEventListener('click', function(event) { event.preventDefault(); showMailchimpModal(); }); document.getElementById('modalNoVendorsLink').addEventListener('click', function(event) { event.preventDefault(); showMailchimpModal(); }); document.getElementById('mailchimpCloseBtn').addEventListener('click', function() { document.body.classList.remove('modal-open'); document.getElementById('mailchimpModal').style.display = 'none'; }); // Close modals when clicking outside window.addEventListener('click', function(event) { if (event.target === document.querySelector('.shopnow-gonje-top-vendor-search-modal')) { document.body.classList.remove('modal-open'); document.querySelector('.shopnow-gonje-top-vendor-search-modal').style.display = 'none'; } if (event.target === document.getElementById('mailchimpModal')) { document.body.classList.remove('modal-open'); document.getElementById('mailchimpModal').style.display = 'none'; } }); // Vendor search functionality let userLatitude = null; let userLongitude = null; let userPostcode = null; let userState = null; let userAddress = null; function updateRadiusLabel(value) { document.querySelector('.shopnow-radius-label').innerText = value + " km"; } function fetchCompanies(page = 1) { const radius = document.querySelector('.shopnow-radius-slider').value; const searchButton = document.querySelector('.shopnow-search-container button'); if (!userLatitude || !userLongitude) { alert("Please enter a valid address."); return; } // Show loading state searchButton.innerHTML = '<span class="loading-spinner"></span> Searching...'; searchButton.disabled = true; const companyList = document.querySelector('.shopnow-company-list'); companyList.innerHTML = '<p class="loading-text">Searching for vendors...</p>'; // Include all collected data in the request const url = new URL('https://ecartifymarketplace.gonje.com/vendor_search.php'); url.searchParams.append('page', page); url.searchParams.append('lat', userLatitude); url.searchParams.append('lng', userLongitude); url.searchParams.append('radius', radius); if (userPostcode) url.searchParams.append('postcode', userPostcode); if (userState) url.searchParams.append('state', userState); if (userAddress) url.searchParams.append('address', userAddress); fetch(url) .then(response => response.json()) .then(data => { companyList.innerHTML = ''; // Show/hide the no vendors link based on results const noVendorsLink = document.getElementById('modalNoVendorsLink'); if (data.status !== 'ok' || !data.data || data.data.length === 0) { companyList.innerHTML = '<p>No vendors found.</p>'; noVendorsLink.style.display = 'block'; return; } noVendorsLink.style.display = 'none'; data.data.forEach(company => { const vendorItem = document.createElement('a'); vendorItem.href = company.storefront_url; const cleanDesc = (company.company_description || '') .replace(/<p>/gi, '') // remove opening <p> .replace(/<\/p>/gi, ' ') // remove closing </p> .trim(); vendorItem.classList.add('shopnow-vendor-item'); vendorItem.innerHTML = ` <div class="shopnow-vendor-content"> <img src="${company.logo_url}" alt="Logo" class="shopnow-vendor-logo"> <div class="shopnow-vendor-details"> <h3>${company.company_name}</h3> <p>Description: ${cleanDesc}</p> <p>Distance: ${company.distance} km</p> </div> </div> `; companyList.appendChild(vendorItem); }); }) .catch(error => { console.error('Error fetching companies:', error); companyList.innerHTML = '<p>An error occurred while fetching companies. Please try again later.</p>'; }) .finally(() => { // Reset button state searchButton.innerHTML = 'Search'; searchButton.disabled = false; }); } function initAutocomplete() { const input = document.querySelector('.shopnow-location-input'); const autocomplete = new google.maps.places.Autocomplete(input, { types: ['geocode'], fields: ['geometry', 'address_components', 'formatted_address'], componentRestrictions: { country: 'au' } // This restricts results to Australia }); autocomplete.addListener('place_changed', function () { const place = autocomplete.getPlace(); if (!place.geometry) { alert("No location found. Please select from the dropdown."); return; } // Store all location data userLatitude = place.geometry.location.lat(); userLongitude = place.geometry.location.lng(); userAddress = place.formatted_address; // Reset these values before checking components userPostcode = ''; userState = ''; // Extract address components place.address_components.forEach(component => { if (component.types.includes('postal_code')) { userPostcode = component.long_name; } if (component.types.includes('administrative_area_level_1')) { userState = component.short_name; } }); console.log('Location data collected:', { address: userAddress, postcode: userPostcode, state: userState, coordinates: { lat: userLatitude, lng: userLongitude } }); }); } // Enhanced Mailchimp form handling document.getElementById('mc-embedded-subscribe-form').addEventListener('submit', function(e) { e.preventDefault(); // Get form data const formData = new FormData(this); const email = formData.get('EMAIL'); const postcode = formData.get('POSTCODE') || userPostcode; // Validate required fields if (!email || !postcode) { alert('Please fill in all required fields'); return; } // Prepare Mailchimp submission data const mailchimpData = { u: '8293c49fe797c04b3b9f52c23', id: 'b040c42304', EMAIL: email, POSTCODE: postcode, STATE: userState || '', ADDRESS: userAddress || '', SOURCE: 'Vendor Search', 'b_8293c49fe797c04b3b9f52c23_b040c42304': '' // Hidden field }; // Show loading state const submitBtn = document.getElementById('mc-embedded-subscribe'); submitBtn.disabled = true; submitBtn.value = 'Sending...'; // Submit to Mailchimp fetch('https://gonje.us20.list-manage.com/subscribe/post-json', { method: 'POST', body: new URLSearchParams(mailchimpData), headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, mode: 'no-cors' }) .then(response => { if (!response.ok) throw new Error('Network response was not ok'); return response.json(); }) .then(data => { if (data.result === 'success') { // Show success message document.getElementById('mce-success-response').style.display = 'block'; document.getElementById('mce-success-response').innerHTML = 'Thank you for subscribing!'; document.getElementById('mce-error-response').style.display = 'none'; // Close modal after 2 seconds setTimeout(() => { document.body.classList.remove('modal-open'); document.getElementById('mailchimpModal').style.display = 'none'; }, 2000); } else { throw new Error(data.msg || 'Subscription failed'); } }) .catch(error => { console.error('Mailchimp submission error:', error); document.getElementById('mce-error-response').style.display = 'block'; document.getElementById('mce-error-response').innerHTML = 'Subscription failed: ' + error.message; document.getElementById('mce-success-response').style.display = 'none'; }) .finally(() => { submitBtn.disabled = false; submitBtn.value = 'Subscribe'; }); }); // Load Google Maps API const script = document.createElement('script'); script.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyCxMO0g5Vv0ZtSthhrrXMVOYVBcjf4G1hw&libraries=places&callback=initAutocomplete"; script.async = true; script.defer = true; document.body.appendChild(script); // Load Mailchimp validation script const mailchimpScript = document.createElement('script'); mailchimpScript.src = "//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js"; mailchimpScript.async = true; document.body.appendChild(mailchimpScript); // Mailchimp configuration (function($) { window.fnames = new Array(); window.ftypes = new Array(); fnames[0]='EMAIL'; ftypes[0]='email'; fnames[6]='POSTCODE'; ftypes[6]='text'; fnames[7]='STATE'; ftypes[7]='text'; fnames[8]='ADDRESS'; ftypes[8]='text'; }(jQuery)); var $mcj = jQuery.noConflict(true); </script> </body> </html>";} 0 1286 0 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en VENDOR SEARCH HOME
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
509 6 0 769 1 D call_request a:1:{s:8:"template";s:44:"addons/call_requests/blocks/call_request.tpl";} 0 1 en Call Request
514 11 0 773 1 D main 0 1 en Main Content
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
519 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 784 1 D safe_smarty_block a:1:{s:8:"template";s:28:"blocks/safe_smarty_block.tpl";} 0 1 en About us
517 21 a:1:{s:5:"items";a:1:{s:7:"filling";s:3:"all";}} 0 781 blocks/wrappers/mainbox_simple.tpl ty-homepage-vendors 1 D vendors a:7:{s:8:"template";s:49:"blocks/vendor_list_templates/featured_vendors.tpl";s:17:"number_of_columns";s:1:"5";s:13:"show_location";s:1:"Y";s:11:"show_rating";s:1:"Y";s:18:"show_vendor_rating";s:1:"Y";s:19:"show_products_count";s:1:"Y";s:17:"displayed_vendors";s:1:"5";} 0 1 en Featured Vendors
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
515 133 a:1:{s:5:"items";a:2:{s:7:"filling";s:8:"manually";s:8:"item_ids";s:1:"6";}} 0 776 homepage-banners ty-banners-free-ship 1 D banners a:1:{s:8:"template";s:34:"addons/banners/blocks/original.tpl";} 0 1 en Free shipping
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
516 189 a:1:{s:7:"content";s:343:"<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"> <a href="/ready-made-food"><img src="https://backendapi.gonje.com/public/Food-Instagram-Story-08-new.jpg" alt="Hero Banner"> </a> </div>";} 0 779 1 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Side 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
523 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 789 1 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Replace cart title with empty string
513 324 a:1:{s:7:"content";s:32748:"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vendor Search with Modal</title> <!-- Add Font Awesome CSS --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap'); /* Custom Google Autocomplete Dropdown Styling */ .pac-container { font-family: 'Poppins', sans-serif; background-color: #fff; border-radius: 12px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); border: none; margin-top: 5px; z-index: 1002 !important; overflow: hidden; } .pac-item { padding: 12px 16px; border-bottom: 1px solid #f0f0f0; transition: all 0.2s ease; cursor: pointer; font-size: 14px; } .pac-item:hover { background-color: #f8f9fa; } .pac-item-query { font-size: 15px; color: #333; font-weight: 500; font-family: 'Poppins', sans-serif; } .pac-matched { font-weight: 600; color: #28A745; } .pac-icon { margin-right: 10px; color: #666; } .pac-item:last-child { border-bottom: none; } .pac-item-selected { background-color: #e8f5e9; } .pac-logo:after { display: none; } /* Hero section styling */ .hero-section { background-image: url('https://marketplace.gonje.com/images/gonje-experience-2.png'); background-size: cover; background-position: center; border-radius: 20px; padding: 30px 30px 60px 20px; margin: 20px auto; max-width: 1200px; position: relative; opacity: 0.95; box-shadow: 0 0 8px rgba(40, 167, 69, 0.5); } .hero-section::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 0.1); border-radius: 20px; z-index: 0; } .hero-content { position: relative; z-index: 1; } /* Prevent body scrolling when modal is open */ body.modal-open { overflow: hidden; position: fixed; width: 100%; } /* Hero text styling */ .hero-text { font-family: 'Poppins', sans-serif; font-size: 42px; font-weight: 700; color: #000000; text-align: center; margin: 0 0; line-height: 1.3; text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1); } /* Animated arrow styling */ .arrow-down { text-align: center; margin: 15px 0; color: #28A745; } .arrow-down i { font-size: 30px; animation: bounce 2s infinite; cursor: pointer; } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-15px); } 60% { transform: translateY(-7px); } } /* Modal and search input styling */ .shopnow-gonje-top-vendor-search-container { width: 100%; max-width: 600px; position: relative; text-align: center; margin: 10px auto 0; } .shopnow-gonje-top-vendor-search-input, .shopnow-gonje-top-vendor-search-div { width: 90%; padding: 16px; border: 2px solid #ccc; border-radius: 20px; font-size: 18px; font-family: 'Poppins', sans-serif; outline: none; transition: border-color 0.3s ease; margin: 0 auto 0 auto; text-align: center; cursor: pointer; background-color: white; } /* No vendors link styling */ .no-vendors-link { font-family: 'Poppins', sans-serif; font-size: 12px; color: #666; text-decoration: underline; display: block; margin-bottom: 20px; } .no-vendors-link:hover { color: #28A745; text-decoration: underline; } /* Center placeholder text on larger screens */ @media (min-width: 992px) { .shopnow-gonje-top-vendor-search-input::placeholder, .shopnow-location-input::placeholder { text-align: center; } } .shopnow-gonje-top-vendor-search-input:hover, .shopnow-gonje-top-vendor-search-div:hover { border-color: #70ab4b; } .shopnow-gonje-top-vendor-search-input:focus, .shopnow-gonje-top-vendor-search-div:focus { border-color: #0056b3; } .shopnow-gonje-top-vendor-search-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); justify-content: center; align-items: center; transition: opacity 0.3s ease; z-index: 1000; overflow-y: auto; } .shopnow-gonje-top-vendor-search-modal-content { background: white; padding: 20px; border-radius: 10px; width: 90%; max-width: 500px; text-align: center; position: relative; z-index: 1001; max-height: 90vh; margin: 20px 0; overflow-y: auto; } .shopnow-gonje-top-vendor-search-close-btn { position: absolute; top: 10px; right: 15px; font-size: 18px; cursor: pointer; } /* Vendor search container styling */ .shopnow-search-container { margin: 20px; text-align: center; width: calc(100% - 40px); } .shopnow-search-container input, .shopnow-search-container button { padding: 12px; margin: 5px; font-size: 16px; width: 100%; border: 1px solid #28A745; border-radius: 8px; transition: all 0.3s ease-in-out; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); box-sizing: border-box; } .shopnow-search-container input { background-color: #f9fcf5; outline: none; } .shopnow-search-container input:focus { border-color: #28A745; box-shadow: 0 0 8px rgba(40, 167, 69, 0.5); } .shopnow-search-container button { background-color: #28A745; color: white; border: none; cursor: pointer; font-weight: bold; } .shopnow-search-container button:hover { background-color: #1e7e34; box-shadow: 0 3px 8px rgba(30, 126, 52, 0.3); } /* Loading spinner styles */ .loading-spinner { display: inline-block; width: 20px; height: 20px; border: 3px solid rgba(255,255,255,.3); border-radius: 50%; border-top-color: #fff; animation: spin 1s ease-in-out infinite; margin-right: 10px; vertical-align: middle; } @keyframes spin { to { transform: rotate(360deg); } } .loading-text { text-align: center; color: #666; font-style: italic; } /* Vendor item styling - make entire item clickable */ .shopnow-vendor-item { border: 1px solid #ddd; padding: 15px; margin: 10px 0; border-radius: 8px; background-color: #ffffff; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); width: calc(100% - 30px); transition: all 0.2s ease; display: block; text-decoration: none; color: inherit; } .shopnow-vendor-item:hover { background-color: #f8f9fa; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); transform: translateY(-2px); } .shopnow-vendor-content { display: flex; align-items: center; } .shopnow-vendor-logo { width: 50px; height: 50px; object-fit: cover; border-radius: 50%; margin-right: 15px; border: 2px solid #28A745; } .shopnow-vendor-details h3 { color: #28A745; margin-bottom: 5px; } .shopnow-search-container input[type="range"] { width: 100%; height: 8px; background: #ddd; border-radius: 5px; border: none; -webkit-appearance: none; appearance: none; outline: none; } .shopnow-search-container input[type="range"]::-webkit-slider-runnable-track { height: 8px; background: #28A745; border-radius: 5px; } .shopnow-search-container input[type="range"]::-moz-range-track { height: 8px; background: #28A745; border-radius: 5px; } .shopnow-search-container input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; background: #28A745; border-radius: 50%; cursor: pointer; border: 2px solid white; margin-top: -6px; } .shopnow-search-container input[type="range"]::-moz-range-thumb { width: 20px; height: 20px; background: #28A745; border-radius: 50%; cursor: pointer; border: 2px solid white; } .shopnow-radius-label { font-weight: bold; color: #28A745; display: block; margin: 10px 0; } /* Mailchimp Modal Styling */ .mailchimp-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); justify-content: center; align-items: center; z-index: 1000; overflow-y: auto; } .mailchimp-modal-content { background: white; padding: 30px; border-radius: 10px; width: 90%; max-width: 500px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); position: relative; margin: 20px 0; max-height: 90vh; overflow-y: auto; } .mailchimp-close-btn { position: absolute; top: 15px; right: 20px; font-size: 24px; cursor: pointer; color: #666; background: none; border: none; } #mc_embed_signup { background: transparent; font-family: 'Poppins', sans-serif; width: 100%; } #mc_embed_signup h2 { font-size: 24px; font-weight: 600; color: #28A745; margin-bottom: 20px; text-align: center; } #mc_embed_signup .indicates-required { text-align: right; font-size: 12px; color: #666; margin-bottom: 15px; } #mc_embed_signup .asterisk { color: #e74c3c; } #mc_embed_signup .mc-field-group { margin-bottom: 20px; width: 100%; } #mc_embed_signup label { display: block; font-size: 14px; margin-bottom: 8px; color: #333; font-weight: 500; } #mc_embed_signup input { width: 100%; padding: 12px 15px; border: 1px solid #ddd; border-radius: 8px; font-size: 16px; transition: border-color 0.3s; box-sizing: border-box; } #mc_embed_signup input:focus { border-color: #28A745; outline: none; box-shadow: 0 0 0 2px rgba(40, 167, 69, 0.2); } #mc_embed_signup .button { background-color: #28A745; color: white; border: none; padding: 14px 20px; border-radius: 8px; font-size: 16px; font-weight: 600; cursor: pointer; width: 100%; transition: background-color 0.3s; margin-top: 10px; } #mc_embed_signup .button:hover { background-color: #1e7e34; } #mc_embed_signup .response { margin: 15px 0; padding: 10px; border-radius: 5px; font-size: 14px; } #mc_embed_signup #mce-error-response { color: #e74c3c; background-color: #fdecea; } #mc_embed_signup #mce-success-response { color: #28A745; background-color: #e8f5e9; } @media (max-width: 768px) { .hero-text { font-size: 32px; } .shopnow-gonje-top-vendor-search-div, .shopnow-location-input { font-size: 16px; padding: 14px; } .shopnow-gonje-top-vendor-search-modal-content, .mailchimp-modal-content { padding: 20px; width: 85%; } #mc_embed_signup h2 { font-size: 20px; } .arrow-down i { font-size: 24px; } } </style> </head> <body> <!-- Hero Section --> <div class="hero-section"> <div class="hero-content"> <!-- Hero Text --> <div class="hero-text"> Begin Your Gonje Journey Today! Shop Now </div> <!-- Animated Arrow --> <div class="arrow-down" onclick="document.getElementById('shopNowButton').click()"> <i class="fas fa-arrow-down"></i> </div> <!-- Search Input --> <div class="shopnow-gonje-top-vendor-search-container"> <div class="shopnow-gonje-top-vendor-search-div" id="shopNowButton">Enter address to find vendors near by &#127758;</div> <a href="#" class="no-vendors-link" style="color:#fff" id="noVendorsLink">Click here if you don't find any vendors nearby</a> </div> </div> </div> <!-- Vendor Search Modal --> <div class="shopnow-gonje-top-vendor-search-modal"> <div class="shopnow-gonje-top-vendor-search-modal-content"> <span class="shopnow-gonje-top-vendor-search-close-btn">×</span> <h2>Search for vendors</h2> <div class="shopnow-search-container"> <input type="text" class="shopnow-location-input" placeholder="Enter address to find vendors near by &#127758;"> <input type="range" class="shopnow-radius-slider" min="1" max="50" value="10" oninput="updateRadiusLabel(this.value)"> <span class="shopnow-radius-label">10 km</span> <button onclick="fetchCompanies(1)">Search</button> </div> <div class="shopnow-company-list"></div> <a href="#" class="no-vendors-link" id="modalNoVendorsLink" style="display: none;">Click here if you don't find any vendors nearby</a> </div> </div> <!-- Mailchimp Form Modal --> <div class="mailchimp-modal" id="mailchimpModal"> <div class="mailchimp-modal-content"> <span class="mailchimp-close-btn" id="mailchimpCloseBtn">×</span> <div id="mc_embed_signup"> <form action="https://gonje.us20.list-manage.com/subscribe/post?u=8293c49fe797c04b3b9f52c23&amp;id=b040c42304&amp;f_id=00d3c7f1f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank"> <div id="mc_embed_signup_scroll"> <h2>Get Notified When Vendors Are Available</h2> <div class="indicates-required"><span class="asterisk">*</span> indicates required</div> <div class="mc-field-group"> <label for="mce-EMAIL">Email Address <span class="asterisk">*</span></label> <input type="email" name="EMAIL" class="required email" id="mce-EMAIL" required placeholder="your@email.com"> </div> <div class="mc-field-group"> <label for="mce-POSTCODE">Postal Code <span class="asterisk">*</span></label> <input type="text" name="POSTCODE" class="required text" id="mce-POSTCODE" required placeholder="e.g. 90210"> </div> <div id="mce-responses" class="clear"> <div class="response" id="mce-error-response" style="display:none"></div> <div class="response" id="mce-success-response" style="display:none"></div> </div> <div aria-hidden="true" style="position: absolute; left: -5000px;"> <input type="text" name="b_8293c49fe797c04b3b9f52c23_b040c42304" tabindex="-1" value=""> </div> <div class="clear"> <input type="submit" name="subscribe" id="mc-embedded-subscribe" class="button" value="Subscribe"> </div> </div> </form> </div> </div> </div> <script> // Vendor search modal functionality document.getElementById('shopNowButton').addEventListener('click', function(event) { event.preventDefault(); document.body.classList.add('modal-open'); document.querySelector('.shopnow-gonje-top-vendor-search-modal').style.display = 'flex'; }); document.querySelector('.shopnow-gonje-top-vendor-search-close-btn').addEventListener('click', function() { document.body.classList.remove('modal-open'); document.querySelector('.shopnow-gonje-top-vendor-search-modal').style.display = 'none'; }); // Mailchimp modal functionality function showMailchimpModal() { document.body.classList.add('modal-open'); document.getElementById('mailchimpModal').style.display = 'flex'; // Pre-fill the postal code if we have it if (userPostcode) { document.getElementById('mce-POSTCODE').value = userPostcode; } } document.getElementById('noVendorsLink').addEventListener('click', function(event) { event.preventDefault(); showMailchimpModal(); }); document.getElementById('modalNoVendorsLink').addEventListener('click', function(event) { event.preventDefault(); showMailchimpModal(); }); document.getElementById('mailchimpCloseBtn').addEventListener('click', function() { document.body.classList.remove('modal-open'); document.getElementById('mailchimpModal').style.display = 'none'; }); // Close modals when clicking outside window.addEventListener('click', function(event) { if (event.target === document.querySelector('.shopnow-gonje-top-vendor-search-modal')) { document.body.classList.remove('modal-open'); document.querySelector('.shopnow-gonje-top-vendor-search-modal').style.display = 'none'; } if (event.target === document.getElementById('mailchimpModal')) { document.body.classList.remove('modal-open'); document.getElementById('mailchimpModal').style.display = 'none'; } }); // Vendor search functionality let userLatitude = null; let userLongitude = null; let userPostcode = null; let userState = null; let userAddress = null; function updateRadiusLabel(value) { document.querySelector('.shopnow-radius-label').innerText = value + " km"; } function fetchCompanies(page = 1) { const radius = document.querySelector('.shopnow-radius-slider').value; const searchButton = document.querySelector('.shopnow-search-container button'); if (!userLatitude || !userLongitude) { alert("Please enter a valid address."); return; } // Show loading state searchButton.innerHTML = '<span class="loading-spinner"></span> Searching...'; searchButton.disabled = true; const companyList = document.querySelector('.shopnow-company-list'); companyList.innerHTML = '<p class="loading-text">Searching for vendors...</p>'; // Include all collected data in the request const url = new URL('https://marketplace.gonje.com/vendor_search.php'); url.searchParams.append('page', page); url.searchParams.append('lat', userLatitude); url.searchParams.append('lng', userLongitude); url.searchParams.append('radius', radius); if (userPostcode) url.searchParams.append('postcode', userPostcode); if (userState) url.searchParams.append('state', userState); if (userAddress) url.searchParams.append('address', userAddress); fetch(url) .then(response => response.json()) .then(data => { companyList.innerHTML = ''; // Show/hide the no vendors link based on results const noVendorsLink = document.getElementById('modalNoVendorsLink'); if (data.status !== 'ok' || !data.data || data.data.length === 0) { companyList.innerHTML = '<p>No vendors found.</p>'; noVendorsLink.style.display = 'block'; return; } noVendorsLink.style.display = 'none'; data.data.forEach(company => { const vendorItem = document.createElement('a'); vendorItem.href = company.storefront_url; vendorItem.classList.add('shopnow-vendor-item'); vendorItem.innerHTML = ` <div class="shopnow-vendor-content"> <img src="${company.logo_url}" alt="Logo" class="shopnow-vendor-logo"> <div class="shopnow-vendor-details"> <h3>${company.company_name}</h3> <p>Description: ${company.company_description}</p> <p>Distance: ${company.distance} km</p> </div> </div> `; companyList.appendChild(vendorItem); }); }) .catch(error => { console.error('Error fetching companies:', error); companyList.innerHTML = '<p>An error occurred while fetching companies. Please try again later.</p>'; }) .finally(() => { // Reset button state searchButton.innerHTML = 'Search'; searchButton.disabled = false; }); } function initAutocomplete() { const input = document.querySelector('.shopnow-location-input'); const autocomplete = new google.maps.places.Autocomplete(input, { types: ['geocode'], fields: ['geometry', 'address_components', 'formatted_address'], componentRestrictions: { country: 'au' } // This restricts results to Australia }); autocomplete.addListener('place_changed', function () { const place = autocomplete.getPlace(); if (!place.geometry) { alert("No location found. Please select from the dropdown."); return; } // Store all location data userLatitude = place.geometry.location.lat(); userLongitude = place.geometry.location.lng(); userAddress = place.formatted_address; // Reset these values before checking components userPostcode = ''; userState = ''; // Extract address components place.address_components.forEach(component => { if (component.types.includes('postal_code')) { userPostcode = component.long_name; } if (component.types.includes('administrative_area_level_1')) { userState = component.short_name; } }); console.log('Location data collected:', { address: userAddress, postcode: userPostcode, state: userState, coordinates: { lat: userLatitude, lng: userLongitude } }); }); } // Enhanced Mailchimp form handling document.getElementById('mc-embedded-subscribe-form').addEventListener('submit', function(e) { e.preventDefault(); // Get form data const formData = new FormData(this); const email = formData.get('EMAIL'); const postcode = formData.get('POSTCODE') || userPostcode; // Validate required fields if (!email || !postcode) { alert('Please fill in all required fields'); return; } // Prepare Mailchimp submission data const mailchimpData = { u: '8293c49fe797c04b3b9f52c23', id: 'b040c42304', EMAIL: email, POSTCODE: postcode, STATE: userState || '', ADDRESS: userAddress || '', SOURCE: 'Vendor Search', 'b_8293c49fe797c04b3b9f52c23_b040c42304': '' // Hidden field }; // Show loading state const submitBtn = document.getElementById('mc-embedded-subscribe'); submitBtn.disabled = true; submitBtn.value = 'Sending...'; // Submit to Mailchimp fetch('https://gonje.us20.list-manage.com/subscribe/post-json', { method: 'POST', body: new URLSearchParams(mailchimpData), headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, mode: 'no-cors' }) .then(response => { if (!response.ok) throw new Error('Network response was not ok'); return response.json(); }) .then(data => { if (data.result === 'success') { // Show success message document.getElementById('mce-success-response').style.display = 'block'; document.getElementById('mce-success-response').innerHTML = 'Thank you for subscribing!'; document.getElementById('mce-error-response').style.display = 'none'; // Close modal after 2 seconds setTimeout(() => { document.body.classList.remove('modal-open'); document.getElementById('mailchimpModal').style.display = 'none'; }, 2000); } else { throw new Error(data.msg || 'Subscription failed'); } }) .catch(error => { console.error('Mailchimp submission error:', error); document.getElementById('mce-error-response').style.display = 'block'; document.getElementById('mce-error-response').innerHTML = 'Subscription failed: ' + error.message; document.getElementById('mce-success-response').style.display = 'none'; }) .finally(() => { submitBtn.disabled = false; submitBtn.value = 'Subscribe'; }); }); // Load Google Maps API const script = document.createElement('script'); script.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyCxMO0g5Vv0ZtSthhrrXMVOYVBcjf4G1hw&libraries=places&callback=initAutocomplete"; script.async = true; script.defer = true; document.body.appendChild(script); // Load Mailchimp validation script const mailchimpScript = document.createElement('script'); mailchimpScript.src = "//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js"; mailchimpScript.async = true; document.body.appendChild(mailchimpScript); // Mailchimp configuration (function($) { window.fnames = new Array(); window.ftypes = new Array(); fnames[0]='EMAIL'; ftypes[0]='email'; fnames[6]='POSTCODE'; ftypes[6]='text'; fnames[7]='STATE'; ftypes[7]='text'; fnames[8]='ADDRESS'; ftypes[8]='text'; }(jQuery)); var $mcj = jQuery.noConflict(true); </script> </body> </html>";} 0 1127 1 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en vendor search title
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
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
517 53 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 782 2 D vendor_categories a:2:{s:8:"template";s:50:"blocks/categories/categories_dropdown_vertical.tpl";s:25:"right_to_left_orientation";s:1:"N";} 0 1 en Vendor categories
515 132 a:1:{s:5:"items";a:2:{s:7:"filling";s:8:"manually";s:8:"item_ids";s:11:"16,17,18,19";}} 0 777 homepage-banners 2 D banners a:3:{s:8:"template";s:34:"addons/banners/blocks/carousel.tpl";s:10:"navigation";s:1:"P";s:5:"delay";s:3:"333";} 0 1 en Main banners
520 137 0 785 blocks/wrappers/mainbox_simple.tpl homepage-our-brands 2 D our_brands a:9:{s:8:"template";s:21:"blocks/our_brands.tpl";s:24:"not_scroll_automatically";s:1:"Y";s:5:"speed";s:3:"400";s:15:"scroll_per_page";s:1:"Y";s:11:"pause_delay";s:1:"3";s:13:"item_quantity";s:1:"7";s:11:"total_items";s:2:"14";s:15:"thumbnail_width";s:2:"75";s:18:"outside_navigation";s:1:"Y";} 0 1 en Our brands
521 138 a:1:{s:5:"items";a:3:{s:7:"filling";s:26:"blog.recent_posts_scroller";s:14:"parent_page_id";s:1:"7";s:6:"period";s:1:"A";}} 0 786 blocks/wrappers/mainbox_simple.tpl 2 D blog a:7:{s:8:"template";s:44:"addons/blog/blocks/recent_posts_scroller.tpl";s:5:"limit";s:2:"10";s:24:"not_scroll_automatically";s:1:"Y";s:5:"speed";s:3:"400";s:11:"pause_delay";s:1:"3";s:13:"item_quantity";s:1:"1";s:18:"outside_navigation";s:1:"Y";} 0 1 en Blog
522 139 0 787 blocks/wrappers/mainbox_simple.tpl 2 D testimonials a:8:{s:8:"template";s:41:"addons/discussion/blocks/testimonials.tpl";s:5:"limit";s:2:"10";s:6:"random";s:1:"N";s:24:"not_scroll_automatically";s:1:"Y";s:5:"speed";s:3:"400";s:11:"pause_delay";s:1:"3";s:13:"item_quantity";s:1:"2";s:18:"outside_navigation";s:1:"Y";} 0 1 en Reviews
513 173 a:1:{s:7:"content";s:63:"<img src="https://backendapi.gonje.com/public/home-banner.png">";} 0 772 2 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Gonje Home Banner
523 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 790 2 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Tawkto Block
514 216 a:1:{s:7:"content";s:15758:"<p> <title>Gonje Marketplace ???? Fresh Food Fast</title></p> <style> /* ---------- Root Variables ---------- */ :root { --gonje-green: #28A745; --gonje-gold: #F7D594; --gonje-dark: #1e1e1e; --radius: 16px; } body { font-family: 'Inter', sans-serif; } h1, h2, h3, h4, h5, h6 { font-family: 'Poppins', sans-serif; font-weight: 600; } h1 { font-size: 32px; } h2 { font-size: 30px; } h3 { font-size: 28px; } a { text-decoration: none; color: inherit; } /* ---------- Modern Button ---------- */ .modern-btn { display: inline-block; padding: 12px 28px; background: var(--gonje-green); color: #fff; font-weight: 700; border-radius: 50px; transition: .3s ease; box-shadow: 0 4px 10px rgba(0, 0, 0, .12); border: 2px solid transparent; } .modern-btn:hover { background: #218838; transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0, 0, 0, .18); } .modern-btn.outline { background: transparent; border-color: var(--gonje-green); color: var(--gonje-green); } .modern-btn.outline:hover { background: var(--gonje-green); color: #fff; } /* ---------- Vendor Carousel ---------- */ .gonje-vendors-container { max-width: 100%; padding: 16px; text-align: center; position: relative; } .gonje-vendors-heading { font-size: 32px; font-weight: bold; margin-bottom: 20px; color: #333; } .gonje-vendors-scroll-container { display: flex; overflow-x: auto; gap: 16px; padding: 16px; background: #fff; border-radius: 10px; scroll-snap-type: x mandatory; } .gonje-vendors-carousel { display: flex; } .gonje-vendors-grid-item { background: #fff; border-radius: 5px; padding: 20px; display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 150px; flex: 0 0 auto; scroll-snap-align: start; box-shadow: 0 4px 8px rgba(0, 0, 0, .1); transition: .25s; } .gonje-vendors-grid-item:hover { transform: scale(1.05); background: var(--gonje-gold); box-shadow: 0 8px 16px rgba(0, 0, 0, .2); } .gonje-vendors-grid-item img { width: 60px; margin-bottom: 10px; } .gonje-vendors-nav-btn { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(255, 255, 255, .85); border: none; border-radius: 50%; width: 40px; height: 40px; font-size: 1.2rem; cursor: pointer; box-shadow: 0 2px 5px rgba(0, 0, 0, .2); z-index: 10; } .gonje-vendors-prev { left: 10px; } .gonje-vendors-next { right: 10px; } @media (max-width: 768px) { .gonje-vendors-nav-btn { display: none; } } /* ---------- Food Banner ---------- */ .food-banner { position: relative; width: 100%; height: 260px; overflow: hidden; display: flex; align-items: center; justify-content: center; text-align: center; color: #fff; isolation: isolate; border-radius: 15px; } .food-banner::before { content: ''; position: absolute; inset: 0; background: rgba(0, 0, 0, .45); z-index: 1; } .food-banner__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; } .food-banner__title { font-size: 32px; margin: 0 0 12px; letter-spacing: .5px; } .food-banner__cta { position: relative; z-index: 2; } /* ---------- Skewed Background Decoration ---------- */ .skew-decor { pointer-events: none; position: absolute; width: 220px; height: 220px; border-radius: 12px; opacity: .08; transform: rotate(-12deg); z-index: -1; } .skew-decor img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; } .skew-decor--1 { top: 10%; left: 5%; } .skew-decor--2 { bottom: 10%; right: 5%; transform: rotate(8deg); } .skew-decor--3 { top: 20%; right: 2%; transform: rotate(-20deg); } .skew-decor--4 { bottom: 15%; left: 2%; transform: rotate(15deg); } /* ---------- Quick-Links Grid ---------- */ .section-title { font-size: 30px; margin: 50px auto 30px; text-align: center; width: fit-content; padding: 10px 30px; background: rgba(255, 255, 255, .8); border-radius: 50px; box-shadow: 0 5px 15px rgba(0, 0, 0, .05); position: relative; } .section-title::after { content: ''; position: absolute; bottom: -8px; left: 30px; width: calc(100% - 60px); height: 3px; background: linear-gradient(90deg, var(--gonje-green), #70ab4b); } .resource-links { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 25px; padding: 0 20px; max-width: 1200px; margin: 0 auto 60px; } .resource-card { background: #fff; border-radius: var(--radius); padding: 30px; text-align: center; box-shadow: 0 10px 30px rgba(0, 0, 0, .06); transition: .3s ease; position: relative; overflow: hidden; } .resource-card:hover { transform: translateY(-6px); box-shadow: 0 15px 35px rgba(0, 0, 0, .1); } .resource-card h4 { margin: 15px 0 8px; font-size: 28px; color: var(--gonje-green); } .resource-card p { margin: 0 0 20px; font-size: .95rem; color: #555; } .contact-icon { font-size: 48px; color: var(--gonje-green); margin-bottom: 15px; } /* ---------- Responsive ---------- */ @media (max-width: 600px) { .resource-links { grid-template-columns: 1fr; } } </style> <p> <!-- ================= VENDOR CAROUSEL ================= --></p> <section class="gonje-vendors-container"> <h1 class="gonje-vendors-heading">???? Fresh Finds, Daily Essentials & Gourmet Delights! ????</h1> <div class="gonje-vendors-scroll-container"> <div class="gonje-vendors-carousel"> <div class="gonje-vendors-grid-item"> <a href="https://ecartifymarketplace.gonje.com/fulfilment-by-gonje"> <img src="https://ecartifymarketplace.gonje.com/assets/images/shopping-basket.svg" alt="Groceries"> Fulfilment By Gonje </a> </div> <div class="gonje-vendors-grid-item"> <a href="https://ecartifymarketplace.gonje.com/fridge"> <img src="https://ecartifymarketplace.gonje.com/assets/images/fridge.svg" alt="Fridge"> Fridge </a> </div> <div class="gonje-vendors-grid-item"> <a href="https://ecartifymarketplace.gonje.com/meal-kits-en"> <img src="https://ecartifymarketplace.gonje.com/assets/images/kitchen-book.svg" alt="Meal Kits"> Meal Kits </a> </div> <div class="gonje-vendors-grid-item"> <a href="https://ecartifymarketplace.gonje.com/suppliers"> <img src="https://ecartifymarketplace.gonje.com/assets/images/project-launch.svg" alt="Suppliers"> Suppliers </a> </div> <div class="gonje-vendors-grid-item"> <a href="https://ecartifymarketplace.gonje.com/whats-new"> <img src="https://ecartifymarketplace.gonje.com/assets/images/new-items.svg" alt="What's New"> What's New </a> </div> </div> </div> <button class="gonje-vendors-nav-btn gonje-vendors-prev">❮</button> <button class="gonje-vendors-nav-btn gonje-vendors-next">❯</button> </section> <p> <!-- ================= FOOD BANNER 1 ================= --></p> <section class="food-banner"> <img src="https://images.unsplash.com/photo-1490818387583-1baba5e638af?auto=format&fit=crop&w=1200&q=80" class="food-banner__img" alt="Fresh produce"> <div class="food-banner__cta"> <h1 class="food-banner__title" style="color:#fff;">???? Farm-Fresh Groceries Delivered Fast ????</h1> <a href="https://ecartifymarketplace.gonje.com/index.php?dispatch=companies.catalog" class="modern-btn">Shop Vendors</a> </div> <div class="skew-decor skew-decor--1"> <img src="https://images.pexels.com/photos/1640777/pexels-photo-1640777.jpeg?auto=compress&cs=tinysrgb&w=400" alt="veggies"> </div> <div class="skew-decor skew-decor--2"> <img src="https://images.pexels.com/photos/2641886/pexels-photo-2641886.jpeg?auto=compress&cs=tinysrgb&w=400" alt="fruits"> </div> <div class="skew-decor skew-decor--3"> <img src="https://images.pexels.com/photos/1132047/pexels-photo-1132047.jpeg?auto=compress&cs=tinysrgb&w=400" alt="bread"> </div> <div class="skew-decor skew-decor--4"> <img src="https://images.pexels.com/photos/2253643/pexels-photo-2253643.jpeg?auto=compress&cs=tinysrgb&w=400" alt="berries"> </div> </section> <p> <!-- ================= QUICK-LINKS SECTION ================= --></p> <h2 class="section-title">???? Explore Gonje ????</h2> <div class="resource-links"> <!-- Vendors --> <div class="resource-card"> <i class="fa-solid fa-store contact-icon"></i> <h3>Vendors</h3> <p>Browse trusted sellers and discover unique products across every category.</p> <a href="https://ecartifymarketplace.gonje.com/index.php?dispatch=companies.catalog" class="modern-btn outline">???? View Vendors</a> </div> <!-- Start Selling --> <div class="resource-card"> <i class="fa-solid fa-handshake contact-icon"></i> <h3>Start Selling Today</h3> <p>Join our vendor community and reach thousands of eager customers.</p> <a href="https://ecartifymarketplace.gonje.com/index.php?dispatch=companies.apply_for_vendor" class="modern-btn outline">???? Apply Now</a> </div> <!-- Blog --> <div class="resource-card"> <i class="fa-solid fa-blog contact-icon"></i> <h3>Get to Know More</h3> <p>Stories, updates, and insights from the Gonje universe.</p> <a href="https://ecartifymarketplace.gonje.com/elevate-your-shopping-experience-with-gonjes-b2c-module/" class="modern-btn outline">???? Read Blog</a> </div> <!-- How-To --> <div class="resource-card"> <i class="fa-solid fa-graduation-cap contact-icon"></i> <h3>Learn New Stuff</h3> <p>Step-by-step guides to make the most of your marketplace experience.</p> <a href="https://ecartifymarketplace.gonje.com/welcome-to-gonje-marketplace/how-to-signup-as-a-customer-on-the-gonje-marketplace" class="modern-btn outline">???? Learn How-To</a> </div> <!-- Orders --> <div class="resource-card"> <i class="fa-solid fa-box-archive contact-icon"></i> <h3>Keep Track</h3> <p>Monitor orders, shipping, and delivery updates in real time.</p> <a href="https://ecartifymarketplace.gonje.com/orders" class="modern-btn outline">???? Track Orders</a> </div> <!-- Wishlist --> <div class="resource-card"> <i class="fa-solid fa-heart contact-icon"></i> <h3>Don't Forget to Buy</h3> <p>Save favourites and grab them before they're gone.</p> <a href="https://ecartifymarketplace.gonje.com/wishlist/" class="modern-btn outline">❤️ Grocery Planner</a> </div> </div> <p> <!-- ================= FOOD BANNER 2 ================= --></p> <section class="food-banner"> <img src="https://images.pexels.com/photos/376464/pexels-photo-376464.jpeg?auto=compress&cs=tinysrgb&w=1200" class="food-banner__img" alt="Meal kit ingredients"> <div class="food-banner__cta"> <h1 class="food-banner__title" style="color:#fff;">???? Cook Quality Meals at Home ????</h1> <a href="https://ecartifymarketplace.gonje.com/meal-kits-en" class="modern-btn">???? Explore Meal Kits</a> </div> <div class="skew-decor skew-decor--1"> <img src="https://images.pexels.com/photos/1640770/pexels-photo-1640770.jpeg?auto=compress&cs=tinysrgb&w=400" alt="tomatoes"> </div> <div class="skew-decor skew-decor--2"> <img src="https://images.pexels.com/photos/1435735/pexels-photo-1435735.jpeg?auto=compress&cs=tinysrgb&w=400" alt="herbs"> </div> <div class="skew-decor skew-decor--3"> <img src="https://images.pexels.com/photos/2097090/pexels-photo-2097090.jpeg?auto=compress&cs=tinysrgb&w=400" alt="pasta"> </div> <div class="skew-decor skew-decor--4"> <img src="https://images.pexels.com/photos/5638603/pexels-photo-5638603.jpeg?auto=compress&cs=tinysrgb&w=400" alt="spices"> </div> </section> <p> <!-- ================= VENDOR CAROUSEL JS ================= --></p> <script> document.addEventListener('DOMContentLoaded', () =&gt; { const container = document.querySelector('.gonje-vendors-scroll-container'); const carousel = document.querySelector('.gonje-vendors-carousel'); const items = document.querySelectorAll('.gonje-vendors-grid-item'); const prevBtn = document.querySelector('.gonje-vendors-prev'); const nextBtn = document.querySelector('.gonje-vendors-next'); let currentIndex = 0; const itemWidth = items[0].offsetWidth + 16; const totalItems = items.length; let autoScrollInterval; const scrollInterval = 3000; let isUserInteracting = false; let interactionTimeout; function updateCarousel() { container.scrollTo({ left: currentIndex * itemWidth, behavior: 'smooth' }); } function moveToIndex(index) { currentIndex = (index + totalItems) % totalItems; updateCarousel(); } function startAutoScroll() { if (isUserInteracting) return; autoScrollInterval = setInterval(() =&gt; moveToIndex(currentIndex + 1), scrollInterval); } function stopAutoScroll() { clearInterval(autoScrollInterval); } function handleUserInteraction() { isUserInteracting = true; stopAutoScroll(); clearTimeout(interactionTimeout); interactionTimeout = setTimeout(() =&gt; { isUserInteracting = false; startAutoScroll(); }, 3000); } nextBtn.addEventListener('click', e =&gt; { e.preventDefault(); handleUserInteraction(); moveToIndex(currentIndex + 1); }); prevBtn.addEventListener('click', e =&gt; { e.preventDefault(); handleUserInteraction(); moveToIndex(currentIndex - 1); }); container.addEventListener('mouseenter', handleUserInteraction); container.addEventListener('touchstart', handleUserInteraction); container.addEventListener('scroll', handleUserInteraction); window.addEventListener('resize', updateCarousel); startAutoScroll(); updateCarousel(); }); </script>";} 0 774 2 A html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Horizontal Gonje Categories
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
523 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 791 3 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Notification timer control
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
523 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 792 4 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Remodel and remove text from cart
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
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
523 351 a:1:{s:7:"content";s:8232:"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Gonje - Help & Support</title> <!-- Font Awesome --> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet"> <style> /* Chat Widget Styles */ .chat-widget { position: fixed; right: 30px; bottom: 5px; width: 60px; height: 60px; background: linear-gradient(135deg, #28A745, #70ab4b); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-size: 24px; box-shadow: 0 5px 15px rgba(0,0,0,0.2); cursor: pointer; z-index: 9999; transition: all 0.3s ease; opacity: 0; } .chat-widget.visible { opacity: 1; } .chat-widget:hover { transform: scale(1.1); box-shadow: 0 8px 20px rgba(0,0,0,0.3); } .chat-widget i { animation: pulse 2s infinite; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } /* Chat Widget Tooltip Styles */ .chat-widget-tooltip { position: fixed; right: 100px; bottom: 20px; z-index: 10000; background-color: white; color: #333; padding: 12px 15px; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.2); max-width: 250px; display: none; animation: chat-tooltip-fade 0.3s ease-out; border: 1px solid #e0e0e0; font-family: Arial, sans-serif; } .chat-widget-tooltip::after { content: ''; position: absolute; right: -10px; top: 50%; transform: translateY(-50%); width: 0; height: 0; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-left: 10px solid white; } .chat-widget-tooltip-close { position: absolute; top: 5px; right: 5px; background: none; border: none; color: #888; font-size: 14px; cursor: pointer; padding: 0; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: all 0.2s ease; } .chat-widget-tooltip-close:hover { color: #555; background-color: #f0f0f0; } .chat-widget-tooltip-content { font-size: 14px; line-height: 1.4; margin-right: 15px; } @keyframes chat-tooltip-fade { from { opacity: 0; transform: translateX(10px); } to { opacity: 1; transform: translateX(0); } } /* Mobile positioning */ @media (max-width: 768px) { .chat-widget { bottom: 71px; right: 20px; width: 50px; height: 50px; font-size: 20px; } /* Hide tooltip on mobile */ .chat-widget-tooltip { display: none !important; } } </style> </head> <body> <!-- Your page content goes here --> <!-- Floating Chat Widget --> <div class="chat-widget" id="supportChatWidget"> <i class="fas fa-headset"></i> </div> <!-- Chat Widget Tooltip --> <div class="chat-widget-tooltip" id="chatWidgetTooltip"> <button class="chat-widget-tooltip-close" id="chatWidgetTooltipClose" aria-label="Close tooltip">&times;</button> <div class="chat-widget-tooltip-content"> Need help? Click here to contact our support team for quick assistance. </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const chatWidget = document.getElementById('supportChatWidget'); const tooltip = document.getElementById('chatWidgetTooltip'); const tooltipClose = document.getElementById('chatWidgetTooltipClose'); let tooltipTimeout; // Make widget visible after delay setTimeout(() => { if (chatWidget) { chatWidget.classList.add('visible'); } }, 1000); if (chatWidget) { // Click handler for widget chatWidget.addEventListener('click', function() { // Navigate to support page window.location.href = 'https://marketplace.gonje.com/support'; }); // Show tooltip function const showTooltip = () => { if (window.innerWidth > 768) { // Clear any pending timeout clearTimeout(tooltipTimeout); // Show tooltip tooltip.style.display = 'block'; // Set timeout to hide after 8 seconds tooltipTimeout = setTimeout(() => { if (tooltip.style.display === 'block') { tooltip.style.display = 'none'; } }, 60000); } }; // Show tooltip on hover chatWidget.addEventListener('mouseenter', showTooltip); // Show tooltip after page load (with delay) setTimeout(showTooltip, 2000); // Hide tooltip when mouse leaves widget (unless hovering tooltip) chatWidget.addEventListener('mouseleave', () => { if (!tooltip.matches(':hover')) { tooltip.style.display = 'none'; clearTimeout(tooltipTimeout); } }); // Keep tooltip visible when hovering it tooltip.addEventListener('mouseenter', () => { clearTimeout(tooltipTimeout); }); // Hide tooltip when mouse leaves tooltip.addEventListener('mouseleave', () => { tooltip.style.display = 'none'; clearTimeout(tooltipTimeout); }); // Close tooltip when X is clicked tooltipClose.addEventListener('click', (e) => { e.stopPropagation(); tooltip.style.display = 'none'; clearTimeout(tooltipTimeout); // Prevent this from affecting other tooltips e.preventDefault(); return false; }); // Close tooltip when clicking outside (for touch devices) document.addEventListener('click', (e) => { if (!chatWidget.contains(e.target) && !tooltip.contains(e.target)) { tooltip.style.display = 'none'; clearTimeout(tooltipTimeout); } }); } }); </script> </body> </html>";} 0 1158 5 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Support Widget
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
523 343 a:1:{s:7:"content";s:21422:"<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Our Sustainable Packaging</title> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet"> <style> :root { --gonje-sustainable-green: #2E8B57; --gonje-sustainable-light: #E8F5E9; --gonje-sustainable-dark: #1B5E20; } /* Reset for CS-Cart environment */ .gonje-sustainable-section-container { margin: 0; padding: 0; width: 100%; box-sizing: border-box; } /* Eco Widget Styles */ .gonje-sustainable-widget { position: fixed; left: 20px; bottom: 70px; z-index: 1000; background-color: var(--gonje-sustainable-green); color: white; width: 50px; height: 50px; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 4px 12px rgba(0,0,0,0.15); transition: all 0.3s ease; animation: gonje-sustainable-pulse 2s infinite; } .gonje-sustainable-widget:hover { transform: scale(1.1); background-color: var(--gonje-sustainable-dark); } .gonje-sustainable-widget i { font-size: 24px; } @keyframes gonje-sustainable-pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } /* Modal Styles */ .gonje-sustainable-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.7); z-index: 2000; overflow-y: auto; padding: 10px; box-sizing: border-box; } .gonje-sustainable-modal-content { background-color: white; width: calc(100% - 20px); max-width: 900px; margin: 20px auto; border-radius: 10px; overflow: hidden; box-shadow: 0 5px 20px rgba(0,0,0,0.2); animation: gonje-sustainable-modalFadeIn 0.3s ease-out; } @keyframes gonje-sustainable-modalFadeIn { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } .gonje-sustainable-modal-header { background-color: var(--gonje-sustainable-dark); color: white; 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; padding: 0 20px; word-break: break-word; } .gonje-sustainable-modal-close { position: absolute; top: 10px; right: 10px; background: none; border: none; color: white; font-size: 24px; cursor: pointer; transition: transform 0.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; word-break: break-word; } .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,0.1); object-fit: contain; } .gonje-sustainable-impact-statement { font-size: 13px; background-color: var(--gonje-sustainable-light); padding: 10px; border-radius: 6px; margin: 15px; color: var(--gonje-sustainable-dark); border-left: 3px solid var(--gonje-sustainable-green); 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: white; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.05); border: 1px solid #e0e0e0; min-width: 0; width: 100%; box-sizing: border-box; } .gonje-sustainable-practice-header { background-color: var(--gonje-sustainable-dark); color: white; 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,0.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; word-break: break-word; } .gonje-sustainable-point-icon { color: var(--gonje-sustainable-green); 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; } } @media (min-width: 992px) { .gonje-sustainable-practices-container { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 15px; } } </style> </head> <body> <!-- Eco-Friendly Floating Widget --> <div class="gonje-sustainable-widget" id="gonjeSustainableWidget" title="Our Sustainability Practices"> <i class="fas fa-leaf"></i> </div> <!-- Modal Section --> <div id="gonjeSustainableModal" class="gonje-sustainable-modal"> <div class="gonje-sustainable-modal-content"> <div class="gonje-sustainable-modal-header"> <h2 style="color:white;" class="gonje-sustainable-modal-title"> <i class="fas fa-leaf"></i> Our Sustainable Packaging </h2> <button class="gonje-sustainable-modal-close">&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> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Modal functionality const ecoWidget = document.getElementById('gonjeSustainableWidget'); const modal = document.getElementById('gonjeSustainableModal'); const closeBtn = document.querySelector('.gonje-sustainable-modal-close'); // Open modal when widget is clicked ecoWidget.addEventListener('click', function() { modal.style.display = 'block'; document.body.style.overflow = 'hidden'; }); // Close modal when X is clicked closeBtn.addEventListener('click', function() { modal.style.display = 'none'; document.body.style.overflow = 'auto'; }); // Close modal when clicking outside content window.addEventListener('click', function(event) { if (event.target === modal) { modal.style.display = 'none'; document.body.style.overflow = 'auto'; } }); // Close modal with Escape key document.addEventListener('keydown', function(event) { if (event.key === 'Escape' && modal.style.display === 'block') { modal.style.display = 'none'; document.body.style.overflow = 'auto'; } }); }); </script> </body> </html>";} 0 1159 6 D html_block a:1:{s:8:"template";s:21:"blocks/html_block.tpl";} 0 1 en Gonje sustainable
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