🌿 2-in-1 Solar Lamp Post with Planter

$98.98  - $197.96
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = '8778006d-084b-432b-b5a2-1a0deecb9e88'; this.isRTL = SPZ.win.document.dir === 'rtl'; this.isAddingToCart_ = false; // 加购中状态 } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { this.init(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const data = await this.getDiscountList(); this.renderApiData_(data); } async getDiscountList() { const productId = '9477d123-f7cd-45b0-acd2-d42e7cc9ae5f'; const variantId = this.variant_id; const productType = 'default'; const reqBody = { product_id: productId, variant_id: variantId, discount_method: "DM_AUTOMATIC", customer: { customer_id: window.C_SETTINGS.customer.customer_id, email: window.C_SETTINGS.customer.customer_email }, product_type: productType } const url = `/api/storefront/promotion/display_setting/text/list`; const data = await this.xhr_.fetchJson(url, { method: "post", body: reqBody }).then(res => { return res; }).catch(err => { this.setContainerDisabled(false); }) return data; } async renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 this.renderApiData_(data); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if (parentDiv) { parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } else { console.log('automatic_discount_container is null'); } } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, { ...renderData, isRTL: this.isRTL }) .then((el) => { this.clearDom(); return el; }); } setContainerDisabled(isDisable) { const automaticDiscountEl = document.querySelector('.automatic_discount_container_outer'); if(isDisable) { automaticDiscountEl.setAttribute('disabled', ''); } else { automaticDiscountEl.removeAttribute('disabled'); } } // 绑定事件 bindEvent_() { window.addEventListener('click', (e) => { let containerNodes = document.querySelectorAll(".automatic-container .panel"); let bool; Array.from(containerNodes).forEach((node) => { if(node.contains(e.target)){ bool = true; } }) // 是否popover面板点击范围 if (bool) { return; } if(e.target.classList.contains('drowdown-icon') || e.target.parentNode.classList.contains('drowdown-icon')){ return; } const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { node.classList.remove('open-dropdown'); }) // 兼容主题 this.toggleProductSticky(true); }) // 监听变体变化 document.addEventListener('dj.variantChange', async(event) => { // 重新渲染 const variant = event.detail.selected; if (variant.product_id == '9477d123-f7cd-45b0-acd2-d42e7cc9ae5f' && variant.id != this.variant_id) { this.variant_id = variant.id; this.renderDiscountList(); } }); } // 兼容主题 handleFitTheme() { // top 属性影响抖动 let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ productInfoEl.classList.add('force-top-auto'); } } // 兼容 wind/flash /hero 主题 (sticky属性影响 popover 层级展示, 会被其他元素覆盖) toggleProductSticky(isSticky) { let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ if(isSticky) { // 还原该主题原有的sticky属性值 productInfoEl.classList.remove('force-position-static'); return; } productInfoEl.classList.toggle('force-position-static'); } } setupAction_() { this.registerAction('handleDropdown', (invocation) => { const discount_id = invocation.args.discount_id; const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { if(node.getAttribute('id') != `automatic-${discount_id}`) { node.classList.remove('open-dropdown'); } }) const $discount_item = document.querySelector(`#automatic-${discount_id}`); $discount_item && $discount_item.classList.toggle('open-dropdown'); // 兼容主题 this.toggleProductSticky(); }); // 加购事件 this.registerAction('handleAddToCart', (invocation) => { // 阻止事件冒泡 const event = invocation.event; if (event) { event.stopPropagation(); event.preventDefault(); } // 如果正在加购中,直接返回 if (this.isAddingToCart_) { return; } const quantity = invocation.args.quantity || 1; this.addToCart(quantity); }); } // 加购方法 async addToCart(quantity) { // 设置加购中状态 this.isAddingToCart_ = true; const productId = '9477d123-f7cd-45b0-acd2-d42e7cc9ae5f'; const variantId = this.variant_id; const url = '/api/cart'; const reqBody = { product_id: productId, variant_id: variantId, quantity: quantity }; try { const data = await this.xhr_.fetchJson(url, { method: 'POST', body: reqBody }); // 触发加购成功提示 this.triggerAddToCartToast_(); return data; } catch (error) { error.then(err=>{ this.showToast_(err?.message || err?.errors?.[0] || 'Unknown error'); }) } finally { // 无论成功失败,都重置加购状态 this.isAddingToCart_ = false; } } showToast_(message) { const toastEl = document.querySelector("#apps-match-drawer-add_to_cart_toast"); if (toastEl) { SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } } // 触发加购成功提示 triggerAddToCartToast_() { // 如果主题有自己的加购提示,则不显示 const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy'); if (themeAddToCartToastEl) return; // 显示应用的加购成功提示 this.showToast_("Added successfully"); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomProductAutomatic);
class SpzCustomDiscountBundle extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() { // 同一页可能有多个 block 各自渲染本 snippet,导致逻辑元素 spz-custom-discount-toast(#appsAddCartToastFunc) 重复。 // 仅保留 DOM 中第一个实例,其余重复实例移除自身,保证逻辑元素及其 action 引用(appsAddCartToastFunc)唯一。 const funcs = document.querySelectorAll('#appsAddCartToastFunc'); if (funcs.length > 1 && this.element !== funcs[0]) { this.element.remove(); return; } // 全局折扣 toast 的弹出点分散在多个模板/组件里(含声明式 @atcError),无法逐一在弹出前前置, // 故挂载时幂等地去重并挂到 body;加购 toast 改为弹出前按需去重(见 showAddToCartToast) this.ensureSingleToastInBody_('cart_match_discount_toast_wrap'); } unmountCallback() {} // 同一页面可能有多个 block 各自渲染本 toast snippet(如商详的 discount_automatic + 购物车抽屉里的折扣横幅), // 导致 toast 外层出现重复 id。重复 id 下 getElementById/querySelector 及 SPZ 动作引用都只命中第一个, // 且被关进抽屉的那份会被抽屉的 transform/overflow 裁剪/错位。这里在挂载时幂等去重: // 只保留一份、移除多余的,并把保留的挂到 body(body 是 position:fixed 最安全的落点,避免被任何祖先裁剪)。可反复调用。 ensureSingleToastInBody_(id) { const els = Array.from(document.querySelectorAll('#' + id)); if (!els.length) return; els.slice(1).forEach((el) => el.remove()); const keep = els[0]; if (keep.parentNode !== document.body) { document.body.appendChild(keep); } } // 主题购物车抽屉是否打开 isInCartDrawer_() { return !!document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]'); } setupAction_() { this.registerAction('showAddToCartToast', () => { // 抽屉内加购:主题本就不会有加购效果,统一弹插件自己的 toast // 非抽屉:主题有加购代理则沿用主题加购效果,否则插件兜底 const proxyEl = document.getElementById('add-cart-event-proxy'); const inDrawer = this.isInCartDrawer_(); if (!inDrawer && proxyEl) { return; } // 弹出前按需去重并挂到 body(幂等),避免重复 id 命中错对象或被抽屉裁剪/错位 this.ensureSingleToastInBody_('apps_add_cart_toast_wrap'); const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast') SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast("Added successfully"); }); }); } buildCallback() { this.setupAction_(); }; } SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle);
Qty:  Buy 1 Set
Quantity

Description

📦 Product Description

Turn any outdoor space into a warm, welcoming scene—without wires or maintenance.This solar lamp post with planter combines soft outdoor lighting and a decorative flowerpot base into one stylish solution. Perfect for gardens, yards, patios, walkways, and seasonal celebrations, it adds charm during the day and automatically lights up at night.Whether you’re decorating for Halloween, holidays, or everyday outdoor living, this solar planter light brings effortless beauty all year round.


✨ Product Introduction

Why settle for plain outdoor lights?This 2-in-1 solar lamp post is designed to brighten your space and elevate your décor at the same time. Add artificial flowers for a no-maintenance look, place it anywhere sunlight reaches, and enjoy automatic lighting every evening.No wiring. No electricity bills. Just easy outdoor style.


⭐ Key Features

🎃 Outdoor Decor for Everyday & Holidays

Ideal for gardens, patios, yards, porches, and pathways
Perfect for Halloween, seasonal décor, and festive occasions
Planter base holds fake or artificial flowers for a clean, maintenance-free display


🌞 2-in-1 Solar Light with Flexible Placement

Use it as a pathway light, wall-mounted light, or ground-spiked yard light
Place it flat, hang it, or spike it—your space, your style
Package includes 1 outdoor solar post light with plastic planter


⚡ High-Speed Charging & Auto On/Off

Equipped with 4 highly efficient solar panels-Charges fully in 6–8 hours of direct sunlight-Provides 8–10 hours of warm illumination-Built-in photosensor turns light on at dusk, off at dawn-Rechargeable batteries included & replaceable bulbs


🌧 Weather-Resistant for Year-Round Use

IP44 waterproof ratingWithstands rain, snow, low temperatures, and outdoor conditions
Designed for reliable performance across all seasons
(Direct sunlight required; bad weather may affect runtime)


🔧 Easy Installation, No Wiring Needed

Includes all mounting hardware and clear instructionsSimple setup—no tools, no electrical work


💬 Customer Reviews

-Melissa H., Orlando, FL:
⭐️⭐️⭐️⭐️⭐️
I loved the way they look. They give a nice a beautiful look to the entrance of my house. I have been getting lots of good compliments from my neighbors. The lightning is warm soft and the quality of the plastic is very hard and sturdy. I totally recommend it to everyone.

-Jason M., Arizona:
⭐️⭐️⭐️⭐️⭐️
This extremely cute and easy to plant your flowers in for that extra summer touch.


-W Turner:
⭐️⭐️⭐️⭐️⭐️
It is sooo cute and good Quality and The lighting is good and and it’s good for outside and It’s a good size I really love you for outside


-Emily R., Ohio:
⭐️⭐️⭐️⭐️⭐️
Cute and quality flower pots with solar and battery operated lights. Pretty for my deck around my pool area.


-Michelle T., California:
⭐️⭐️⭐️⭐️⭐️
Love them! Perfect for adding something pretty by the front door and extra lighting for the doorway!
 

📐 Product Specifications

Material: Plastic, Glass

Lighting Type:

Pathway Lighting

Patio & Garden Lighting

Post Light

Lighting Features:

Auto On/Off

Low Voltage

Water Resistant (IP44)

Replaceable Bulb

Charging Time: 6–8 hours (direct sunlight)

Working Time: 8–10 hours

Power Source: Solar (Rechargeable Batteries Included)

Package Includes:

1 × Solar Post Light with Plastic Planter


🛠 How to Use

Assemble the lamp using included parts

Turn the power switch ON

Place in direct sunlight for charging

Charge for at least 8 hours before first use

Add artificial flowers to the planter (optional)

Enjoy automatic lighting every night


❓ Frequently Asked Questions

Q: Does it turn on automatically?
A: Yes, the built-in light sensor turns it on at dusk and off at dawn.

Q: Can I use real plants in the planter?
A: The planter is best suited for artificial or faux plants for maintenance-free décor.

Q: Is it waterproof?
A: Yes, it has an IP44 waterproof rating and is suitable for outdoor use.

Q: Does it need electricity or wiring?
A: No wiring required—it runs completely on solar power.

Q: Will it work in winter?
A: Yes, as long as it receives sufficient sunlight. Shorter daylight may reduce runtime.


🛡 Shopping Guarantee

✔ Durable outdoor-grade materials
✔ Solar-powered & energy-saving
✔ Easy installation with instructions included
✔ Friendly customer support if you need assistance


🌙 Closing

Light up your outdoors—beautifully and effortlessly.

With this 2-in-1 Solar Lamp Post with Planter, your space stays stylish by day and warmly illuminated by night. Perfect for everyday décor and festive seasons alike.

Just place it, power it with the sun, and enjoy the glow. 🌿✨