Lighted Halloween Ghost Wreath with Autumn – Hand, Everyday Comfort, Was $65, Save 23%

$49.99  - $89.99
/** * 优惠码组件模型类 * 处理优惠码的显示和交互逻辑 */ class SpzCustomDiscountCodeModel extends SPZ.BaseElement { constructor(element) { super(element); // 复制按钮和内容的类名 this.copyBtnClass = "discount_code_btn" this.copyClass = "discount_code_value" } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { // 初始化服务 this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); } /** * 渲染优惠码组件 * @param {Object} data - 渲染数据 */ doRender_(data) { return this.templates_ .findAndRenderTemplate(this.element, Object.assign(this.getDefaultData(), data) ) .then((el) => { this.clearDom(); this.element.appendChild(el); // 绑定复制代码功能 this.copyCode(el, data); }); } /** * 获取渲染模板 * @param {Object} data - 渲染数据 */ getRenderTemplate(data) { const renderData = Object.assign(this.getDefaultData(), data); return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); return el; }); } /** * 清除DOM内容 */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * 获取默认数据 * @returns {Object} 默认数据对象 */ getDefaultData() { return { isMobile: appDiscountUtils.judgeMobile(), isRTL: appDiscountUtils.judgeRTL(), image_domain: this.win.SHOPLAZZA.image_domain, copyBtnClass: this.copyBtnClass, copyClass: this.copyClass } } /** * 复制优惠码功能 * @param {Element} el - 当前元素 */ copyCode(el) { const copyBtnList = el.querySelectorAll(`.${this.copyBtnClass}`); if (copyBtnList.length > 0) { copyBtnList.forEach(item => { item.onclick = async () => { // 确保获取正确的元素和内容 const codeElement = item.querySelector(`.${this.copyClass}`); if (!codeElement) return; // 获取纯文本内容 const textToCopy = codeElement.innerText.trim(); // 尝试使用现代API,如果失败则使用备用方案 try { if (navigator.clipboard && navigator.clipboard.writeText) { await navigator.clipboard.writeText(textToCopy); } else { throw new Error('Clipboard API not available'); } // 显示复制成功提示 this.showCopySuccessToast(textToCopy, el); } catch (err) { console.error('Modern clipboard API failed, trying fallback...', err); // 使用备用复制方案 this.fallbackCopy(textToCopy, el); } const discountId = item.dataset["discountId"]; // 跳转决策: is_redirection + link(可选覆盖) const setting = { is_redirection: item.dataset["redirection"] === "true", link: item.dataset["link"], }; const landingUrl = `/promotions/discount-default/${discountId}`; const finalUrl = appDiscountUtils.resolveDiscountHref(setting, landingUrl); if (finalUrl && appDiscountUtils.inProductBody(this.element)) { this.win.open(finalUrl, '_blank', 'noopener'); } } }) } } /** * 使用 execCommand 的复制方案 * @param {string} codeText - 要复制的文本 * @param {Element} el - 当前元素 */ fallbackCopy(codeText, el) { const textarea = this.win.document.createElement('textarea'); textarea.value = codeText; // 设置样式使文本框不可见 textarea.style.position = 'fixed'; textarea.style.left = '-9999px'; textarea.style.top = '0'; // 添加 readonly 属性防止移动端虚拟键盘弹出 textarea.setAttribute('readonly', 'readonly'); this.win.document.body.appendChild(textarea); textarea.focus(); textarea.select(); try { this.win.document.execCommand('copy'); // 显示复制成功提示 this.showCopySuccessToast(codeText, el); } catch (err) { console.error('Copy failed:', err); } this.win.document.body.removeChild(textarea); } /** * 创建 Toast 元素 * @returns {Element} 创建的 Toast 元素 */ createToastEl_() { const toast = document.createElement('ljs-toast'); toast.setAttribute('layout', 'nodisplay'); toast.setAttribute('hidden', ''); toast.setAttribute('id', 'discount-code-toast'); toast.style.zIndex = '1051'; return toast; } /** * 挂载 Toast 元素到 body * @returns {Element} 挂载的 Toast 元素 */ mountToastToBody_() { const existingToast = this.win.document.getElementById('discount-code-toast'); if (existingToast) { return existingToast; } const toast = this.createToastEl_(); this.win.document.body.appendChild(toast); return toast; } /** * 复制成功的提醒 * @param {string} codeText - 要复制的文本 * @param {Element} el - 当前元素 */ showCopySuccessToast(codeText, el) { const $toast = this.mountToastToBody_(); SPZ.whenApiDefined($toast).then(toast => { toast.showToast("Discount code copied !"); this.codeCopyInSessionStorage(codeText); }); } /** * 复制优惠码成功后要存一份到本地存储中,购物车使用 * @param {string} codeText - 要复制的文本 */ codeCopyInSessionStorage(codeText) { try { sessionStorage.setItem('other-copied-coupon', codeText); } catch (error) { console.error(error) } } } // 注册自定义元素 SPZ.defineElement('spz-custom-discount-code-model', SpzCustomDiscountCodeModel);
/** * Custom discount code component that handles displaying and managing discount codes * @extends {SPZ.BaseElement} */ class SpzCustomDiscountCode extends SPZ.BaseElement { constructor(element) { super(element); // API endpoint for fetching discount codes this.getDiscountCodeApi = "\/api\/storefront\/promotion\/code\/list"; // Debounce timer for resize events this.timer = null; // Current variant ID this.variantId = "a37ab68c-99b9-4224-b187-39cf41d4fca0"; // Store discount code data this.discountCodeData = {} } /** * Check if layout is supported * @param {string} layout - Layout type * @return {boolean} */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** * Initialize component after build */ buildCallback() { this.templates_ = SPZServices.templatesForDoc(); this.viewport_ = this.getViewport(); // Bind methods to maintain context this.render = this.render.bind(this); this.resize = this.resize.bind(this); this.switchVariant = this.switchVariant.bind(this); } /** * Setup component when mounted */ mountCallback() { this.getData(); // Add event listeners this.viewport_.onResize(this.resize); this.win.document.addEventListener('dj.variantChange', this.switchVariant); } /** * Cleanup when component is unmounted */ unmountCallback() { this.viewport_.removeResize(this.resize); this.win.document.removeEventListener('dj.variantChange', this.switchVariant); // 清除定时器 if (this.timer) { clearTimeout(this.timer); this.timer = null; } } /** * Handle resize events with debouncing */ resize() { if (this.timer) { clearTimeout(this.timer) this.timer = null; } this.timer = setTimeout(() => { if (appDiscountUtils.inProductBody(this.element)) { this.render(); } else { this.renderSkeleton(); } }, 200); } /** * Handle variant changes * @param {Event} event - Variant change event */ switchVariant(event) { const variant = event.detail.selected; if (variant.product_id == 'ea52ac50-e77f-481d-8245-a2fa75c18771' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } /** * Fetch discount code data from API */ getData() { if (appDiscountUtils.inProductBody(this.element)) { const reqBody = { product_id: "ea52ac50-e77f-481d-8245-a2fa75c18771", variant_id: this.variantId, product_type: "default", } if (!reqBody.product_id || !reqBody.variant_id) return; this.discountCodeData = {}; this.win.fetch(this.getDiscountCodeApi, { method: "POST", body: JSON.stringify(reqBody), headers: { "Content-Type": "application/json" } }).then(async (response) => { if (response.ok) { let data = await response.json(); if (data.list && data.list.length > 0) { data.list[0].product_setting.template_config = JSON.parse(data.list[0].product_setting.template_config); // Format timestamps to local timezone const zone = this.win.SHOPLAZZA.shop.time_zone; data.list = data.list.map(item => { if(+item.ends_at !== -1) { item.ends_at = appDiscountUtils.convertTimestampToFormat(+item.ends_at, zone); } item.starts_at = appDiscountUtils.convertTimestampToFormat(+item.starts_at, zone); return item; }); } this.discountCodeData = data; this.render(); } else { this.clearDom(); } }).catch(err => { console.error("discount_code", err) this.clearDom(); }); } else { this.renderSkeleton(); } } /** * Clear component DOM except template */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * Render discount codes with formatted dates */ render() { // Render using discount code model SPZ.whenApiDefined(document.querySelector('#spz_custom_discount_code_model')).then(renderApi => { renderApi.doRender_({ discountCodeData: this.discountCodeData }) }).catch(err => { this.clearDom(); }) } renderSkeleton() { // Render template for non-product pages this.templates_ .findAndRenderTemplate(this.element, { isMobile: appDiscountUtils.judgeMobile() }) .then((el) => { this.clearDom(); this.element.appendChild(el); }) .catch(err => { this.clearDom(); }); } } // Register custom element SPZ.defineElement('spz-custom-discount-code', SpzCustomDiscountCode);
QTY:  BUY 1
Quantity
Free worldwide shipping
Free returns
Sustainably made
Secure payments

Description

Turn a plain front door or empty wall into a warm Halloween welcome with a glowing burlap ghost surrounded by rich autumn leaves, flowers, berries, and festive orange lights.

Why You’ll Love This Lighted Halloween Ghost Wreath

👻 Cheerful Burlap Ghost Centerpiece

A large smiling ghost sits at the center of the wreath with raised arms and a flowing, ruffled body.

The black oval eyes and open smiling mouth create a friendly expression that feels festive, playful, and suitable for family Halloween decorating.

• Large central ghost design
• Friendly smiling expression
• Raised arms create a welcoming pose
• Flowing ruffled lower edge
• Easy to recognize from a distance
• Festive without looking frightening

💡 Warm Lighted Halloween Display

Warm decorative lights are woven throughout the wreath, illuminating the ghost, leaves, flowers, and berries after dark.

The soft glow helps the wreath stand out during evening gatherings while creating a cozy autumn atmosphere around your entrance or indoor display.

• Warm decorative lighting
• Highlights the ghost and foliage
• Creates an inviting nighttime glow
• Adds sparkle to dark entryways
• Beautiful for parties and trick or treating
• Attractive with surrounding lights dimmed

🍂 Layered Autumn Leaf Arrangement

Orange and black maple inspired leaves create a full seasonal background around the ghost.

The contrasting colors add depth and drama while coordinating naturally with pumpkins, lanterns, fall garlands, and other Halloween decorations.

• Rich orange autumn leaves
• Dramatic black foliage accents
• Layered arrangement creates fullness
• Adds seasonal color and texture
• Coordinates with Halloween displays
• Suitable from early fall through October

🌼 Black and Orange Floral Accents

Decorative flowers in orange and black are arranged throughout the wreath to create additional color, dimension, and visual interest.

The floral details soften the Halloween theme while helping the wreath feel fuller and more carefully styled.

• Orange seasonal flowers
• Black floral contrast
• Adds depth between the leaves
• Creates a balanced arrangement
• Enhances the handcrafted appearance
• Complements rustic and farmhouse décor

🎀 Oversized Rustic Burlap Bow

A large layered bow sits above the ghost, creating a polished finishing detail and drawing attention toward the center of the design.

Its natural woven texture complements the ghost body and gives the wreath a warm farmhouse inspired appearance.

• Large decorative bow
• Layered loop design
• Natural rustic texture
• Matches the ghost material
• Adds height and visual balance
• Creates a finished designer inspired look

🫐 Decorative Berry and Branch Details

Clusters of orange and black berries, fine branches, and seasonal stems fill smaller spaces between the larger leaves and flowers.

These details make the arrangement feel richer and more dimensional when viewed up close.

• Orange berry clusters
• Black berry accents
• Decorative branching stems
• Fills gaps throughout the wreath
• Adds natural autumn texture
• Creates visual interest from multiple angles

🏠 Easy Hanging Seasonal Accent

The integrated top loop allows the wreath to hang from a suitable door hook, wall hook, or other secure support.

Its vertical decorative format adds strong seasonal impact without using floor, shelf, or tabletop space.

• Integrated hanging loop
• Uses vertical decorating space
• No freestanding base required
• Easy to move between locations
• Suitable for doors and walls
• Convenient for smaller homes and apartments

🎃 Versatile Halloween and Fall Décor

Display the wreath on a front door, entryway wall, above a mantel, in a hallway, or as part of a Halloween party backdrop.

Its combination of ghost imagery and autumn foliage allows it to coordinate with both Halloween decorations and broader fall displays.

• Ideal for front door decorating
• Suitable for indoor walls
• Charming above a console or mantel
• Great for Halloween parties
• Coordinates with pumpkins and lanterns
• Reusable for future fall seasons


📝 Specifications

  • Product Name: Lighted Halloween Ghost Wreath with Autumn Leaves
  • Product Type: Decorative illuminated hanging wreath
  • Design Theme: Ghost, Halloween, autumn foliage, and rustic seasonal décor
  • Main Colors: Natural beige, orange, black, and warm white
  • Centerpiece Design: Smiling burlap style ghost with raised arms
  • Bow Style: Oversized layered burlap bow
  • Foliage Details: Orange and black maple inspired leaves
  • Floral Details: Black and orange decorative flowers
  • Additional Accents: Berry clusters and branching seasonal stems
  • Lighting Effect: Warm decorative glow
  • Hanging Method: Integrated top loop
  • Display Orientation: Vertical hanging
  • Recommended Locations: Front door, entryway, wall, hallway, mantel area, party backdrop, or covered porch
  • Recommended Occasions: Halloween, autumn decorating, trick or treating, seasonal parties, and fall gatherings
  • Recommended Use: Indoor use or protected covered outdoor placement
  • Power Source: 3 AA (Not included)
  • Dimensions: 16 x 16 in

❓ Frequently Asked Questions

Q: Does the wreath light up?
A: Yes. Warm decorative lights are arranged throughout the wreath to illuminate the ghost, foliage, flowers, and surrounding details.

Q: Is the ghost scary?
A: No. The ghost has a smiling face and raised arms, creating a playful and family friendly Halloween appearance.

Q: How is the wreath hung?
A: Use the integrated top loop with a secure door hook, wall hook, or other support suitable for the wreath’s total weight.

Q: Can it be displayed outdoors?
A: It is best suited to indoor use or a dry, protected covered porch. Keep the fabric, foliage, battery compartment, and lighting components away from rain, snow, strong wind, and excessive moisture.

Q: How should I store it after Halloween?
A: Switch off the lights, remove the batteries if applicable, and place the wreath in a dry protective container. Avoid crushing the bow, ghost body, leaves, and floral accents during storage.