Glowing Christmas Diorama Ornament - A Tin – Premium, Everyday Comfort, Was $54, Save 54%

$24.99  - $29.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 = "ba7ac45a-e51b-4289-853b-bc5b769d0170"; // 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 == '72e592b4-2023-4fd0-97e3-4789a3da10e0' && 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: "72e592b4-2023-4fd0-97e3-4789a3da10e0", 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);
Style(Dia. 3.1 in. (8 cm)):  🎅 Santa Claus
Style:  Without string lights
Quantity
Free worldwide shipping
Free returns
Sustainably made
Secure payments

Description

Press the switch. Watch the warm glow come alive.

This glowing Christmas diorama ornament pairs a clear acrylic shell with intricate miniature festive scenes, delivering a cozy, magical holiday atmosphere in a compact, ready-to-display package.

Built for actual celebration — not just decoration — it offers soft warm lighting, hassle-free hanging, and a variety of iconic Christmas scenes to elevate your tree, entryway, or winter home decor. From Christmas Eve gatherings to cozy holiday styling, it is engineered for users who value festive charm, durable design, and instant, heartwarming holiday vibes.

Warm Soft Glow Lighting ✨

The built-in soft warm light system creates a cozy, inviting glow with just a simple press. Powered by a standard button battery, it delivers gentle, flicker-free illumination that highlights every tiny detail of the miniature scene inside.
  • Instant on/off operation with battery power
  • Soft warm white light for a nostalgic festive ambiance
  • Safe, low-heat design for worry-free indoor display
  • Long-lasting battery life for extended holiday use


🎄Clear Acrylic Shell & Intricate Miniature Scenes 

Crafted from high-strength clear acrylic, the ornament shell showcases handcrafted, lifelike miniature Christmas scenes with crisp clarity. Each design captures the magic of the holidays, turning a simple bauble into a tiny, glowing winter wonderland.
  • Durable, scratch-resistant acrylic construction for seasonal reuse
  • 8 unique festive scene options to collect and mix
  • Meticulous detailing (from Santa’s gifts to the gingerbread house’s candy trim) for immersive charm
  • Lightweight yet sturdy build to withstand years of holiday decorating

🎅 Collectible Festive Scene Selection 

Choose from 8 distinct glowing Christmas scenes to match your style or start a curated collection. Each scene tells a unique festive story, making these ornaments ideal for personal decor or as thoughtful, memorable gifts for loved ones.

Available scenes:

  • Snowman: A cozy snowy scene with a classic snowman, lit street lamp, and tiny gifts
  • Gingerbread House: A whimsical sweet-themed house with a gingerbread man and candy-cane trim
  • Nutcracker: A regal nutcracker figure with festive drums and holiday greenery
  • Christmas Tree: A fully decorated miniature tree with wrapped presents and sparkling ornaments
  • Angel: A serene angel figure with glowing wings, holding a star in a snowy landscape
  • Santa: Jolly Santa Claus with a sack of gifts, standing beside a lit Christmas tree
  • Christmas Train: A charming holiday steam train carrying presents and teddy bears
  • Reindeer: A golden reindeer with bell-adorned antlers in a winter wonderland

🎁 Ready-to-Hang Display Design 🎁

No assembly required — just attach the included gold hanging cord, and your ornament is ready to adorn your Christmas tree, mantel, or wall. The elegant brushed gold top cap adds a touch of luxury, while the compact size fits seamlessly with standard holiday decor setups.
  • Pre-included hanging cord for instant setup
  • Premium gold decorative top for a polished, high-end look
  • Perfect dimensions for tree branches, wreaths, and wall displays
  • Zero tools or assembly needed, ready to use right out of the box

Warm lighting. Beautiful Christmas scenes. Instant festive magic. This illuminated Christmas diorama ornament is designed for anyone who wants to fill their home with warmth and cosiness straight away during the festive season. Whether you hang it on the Christmas tree, place it on the mantelpiece or give it as a present to someone special — every time the light comes on, it brings the true Christmas spirit to life.


Frequently Asked Questions

1. Is this a finished ornament or a DIY craft project?
This is a fully finished, ready‑to‑display ornament. No assembly, gluing, or crafting is required. Simply attach the included gold hanging cord, press the switch, and enjoy the warm glow instantly.

2. What size is the ornament?
The ornament features a compact, lightweight acrylic shell designed to fit beautifully on standard Christmas tree branches, wreaths, and mantels. It measures approximately 4 inches in height and 3 inches in diameter – perfect for adding a magical touch without overwhelming your décor.

3. Does the battery come included?
Yes! Each ornament comes with a standard button battery already installed, so you can turn it on right out of the box. When the battery eventually runs out, you can easily replace it with a new one (CR2032 or equivalent, depending on the model).

4. Can I choose which festive scene I want?
Absolutely. There are 8 unique scenes available – Snowman, Gingerbread House, Nutcracker, Christmas Tree, Angel, Santa, Christmas Train, and Reindeer. You can select your favorite when ordering, or collect multiple to mix and match on your tree.

5. How long does the battery last, and can it be replaced?
The battery provides hours of continuous warm illumination – enough to last through many cozy evenings. When it dims, simply open the battery compartment (usually located at the top or bottom) and replace it with a fresh button battery. The low‑heat LED design also ensures safe, long‑lasting use.


 ❤️Warm glow. Intricate festive scenes. Ready-to-display holiday magic. This glowing Christmas diorama ornament is built for users who want to infuse their home with instant, heartwarming holiday charm. Whether hanging on your tree, adorning your mantel, or given as a thoughtful gift, it delivers a cozy, magical experience that captures the spirit of Christmas every time the light turns on.