Personalized Embroidered Sweatshirt – A Heartwarming Father’s Day Gift for Dad, Husband, or Grandpa

people are viewing this right now
$32.99  - $46.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 = "ada49e51-fd9a-46fa-87f3-13842de941d7"; // 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 == '0a5532ea-3064-43ee-aef4-323adeb97da0' && 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: "0a5532ea-3064-43ee-aef4-323adeb97da0", 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);
Custom Any Design
Fast Turnaround
Style:  T-shirt
Size:  XS
Quantity
  • Arrives by if you order today.
  • 2fe448da30709a1f6c250a0dd4aa17d6.png

    Order placed
    fa75fb796a0300a4db1fd08fc8bb30f2.png

    Order ships
    656ce869e2ff0e30a34e08512826e12e.png

    Delivered!

Description

"The Perfect Father's Day Gift for the Car Lover in Your Life! 🎁"

"Rev up his heart this Father's Day with our Custom Embroidered Car-Themed Sweatshirt! 🏁"

Wrap his love for cars—and your most cherished memories—in cozy, hand-stitched detail. A one-of-a-kind gift that lets him wear his passion proudly. The ultimate way to say 'Thanks, Dad—you're a true classic!' 🚗💙

Create in Three Easy Steps:

Step 1:

1. Upload your photo: Upload a photo and choose your preferred style (We have different colors, styles, etc.). For optimal embroidery quality, please upload high-resolution images featuring no more than three individuals per photo. Images that are unclear or overly crowded may compromise the final result.


Step 2:

2. Hand-draw your photo: Your photo is hand-drawn with a lot of attention to detail.


Step 3:

3: Embroidered onto sweatshirt/hoodie: We start embroidering on clothes with computerized embroidery machines, which are very advanced and professional embroidery machines that can achieve high speed, high efficiency, and also fine embroidery.

Step 4:

4. Made Just for You, Wear Your Story. Once it passes our quality check, it’s on its way to you!

    🧵SIZE & FIT:

    T-shirt

    Size Width (cm) Length (cm) Sleeve (cm)
    XS 44 (17.3") 63 (24.8") 20 (7.9")
    S 47 (18.5") 66 (26.0") 20 (7.9")
    M 50 (19.7") 69 (27.2") 20 (7.9")
    L 53 (20.9") 72 (28.3") 20 (7.9")
    XL 56 (22.1") 74 (29.1") 20 (7.9")
    2XL 59 (23.2") 76 (30.0") 21 (8.2")
    3XL 62 (24.4") 78 (30.7") 21 (8.2")
    4XL 65 (25.6") 80 (31.4") 21 (8.2")

    Product Measurements (Inches)
    *Manually measured product while laying it flat. Measurements may be off by a few centimeters* 

    Sweatshirt/Hoodie

    Size Width  (cm) Length (cm) Sleeve  (cm)
    XS 50 (19.7") 64 (25.2") 58 (22.8")
    S 53 (20.9") 67 (26.4") 59 (23.2")
    M 56 (22.1") 70 (27.5") 60 (23.6")
    L 60 (23.6") 73 (28.7") 61 (24.0")
    XL 63 (24.8") 76 (30.0") 62 (24.4")
    2XL 65 (25.6") 78 (30.7") 63 (24.8")
    3XL 69 (27.2") 80 (31.5") 64 (25.2")
    4XL 71 (27.9") 82 (32.3") 65 (25.6")

    Product Measurements (Inches)
    *Manually measured product while laying it flat. Measurements may be off by a few centimeters* 

    💖 Why It's Special:

    • Your Photo, Our Embroidery—We transform your uploaded photo into detailed, high-quality embroidery on the front of the sweatshirt.

    • Custom Family Portraits – Celebrate Mom, Dad, or both with the kids in one heartfelt design.

    • Perfect for All Occasions – Ideal for Mother's Day, Father's Day, birthdays, anniversaries, or to say "we love you."

    • Soft & Comfy – Made with premium material to keep your loved ones warm and close to your heart.

    • Choose Your Style – Available in hoodie, crewneck, or t-shirt form with various colors and size options.

    💡 Perfect For:

    • Birthdays: Give Dad a gift he’ll never forget.

    • Father’s Day: Celebrate the man who means the most.

    • Anniversaries: Commemorate special moments together.

    • Just Because: Show your love any day of the year!

    🌟 Order Now!

    Turn your favorite moments into wearable art. Order now to give Mom, Dad, or any loved one a unique and memorable gift they'll cherish for years to come.

    Our Guarantee:
    We truly believe that we offer some of the most innovative and inspirational products in the world, and we want to back this up with a risk-free, ironclad 90-day guarantee.

    If you don't have a positive experience for ANY reason, contact us. We will ensure that ALL your concerns are addressed and that you leave 100% satisfied and smiling.

    We have 24/7 Ticket and Email Support. If you need assistance, please contact us via email or our contact form. We're here for you.
    Our service mailbox is: service@giftscar.com
    Thank you for visiting my shop!!

    Shipping Policy

    Thank you for shopping at Giftscar! We specialize in premium, made-to-order personalized gifts. Because every item is uniquely crafted for you, please review our comprehensive shipping and fulfillment guidelines below.

    📢 Important Notices Regarding Custom Orders

    Finalized Customization: Production scheduling begins within 24 hours of order submission. Once this 24-hour window passes, custom details (names, dates, sizes, or colors) cannot be modified or canceled. Please double-check your personalized text carefully before checking out.

    Made-to-Order Return Policy: Because each product is specially designed and prepared for you, we cannot accept returns or exchanges for buyer's remorse. However, if your item arrives damaged or features a manufacturing defect, please contact us immediately—we will gladly arrange a replacement.

    Peak Season & High Demand: To maintain our strict high-quality standards for embroidery and craftsmanship, fulfillment times may occasionally experience a 3-5 business day extension during high-volume holiday seasons (such as Mother's Day, Father's Day, and Christmas). We appreciate your patience as we craft your unique gifts with care.

    1. Shipping Timelines & Rates

    Your estimated delivery date is calculated as follows:

    Estimated Delivery Date = Processing Time + Transit Time

    ️ Order Processing Time

    Standard Processing: 3 - 5 Business Days (Monday – Friday)

    ️ Transit Times & Fees (By Destination)

    All orders are dispatched via trusted international air transport.

    Destination

    Standard Shipping(Orders under $59)

    Free Standard Shipping(Orders $59+)

    Expedited Shipping(All Order Values)

    United States

    $6.99 (5-10 business days)

    FREE (5-10 business days)

    $16.99 (3-7 business days)

    Canada

    $6.99 (5-10 business days)

    FREE (5-10 business days)

    $16.99 (3-7 business days)

    Australia

    $6.99 (5-10 business days)

    FREE (5-10 business days)

    $16.99 (3-7 business days)

    United Kingdom

    $6.99 (5-10 business days)

    FREE (5-10 business days)

    $16.99 (3-7 business days)

    Europe

    $6.99 (5-10 business days)

    FREE (5-10 business days)

    $16.99 (3-7 business days)

    Rest of the World

    $6.99 (5-15 business days)

    FREE (5-15 business days)

    $16.99 (3-10 business days)

    ⚠️ Please Note:

    Taxes & Duties: Any import taxes, duties, or customs fees levied by the destination country are the sole responsibility of the customer.

    Unforeseen Delays: Shipping timelines can be affected by national public holidays, severe weather conditions, customs clearance protocols, or localized courier backlogs.

    Tracking Milestones: Tracking links will update with hyper-detailed local carrier information once the package lands and clears customs in your destination country. Please allow 5-7 subsequent days for local delivery.

    2. Order Tracking & Delivery Tips

    How do I track my order?

    Once your bespoke piece is finished and packaged, a shipping confirmation email containing a carrier tracking number will be automatically sent to you. You can follow your package’s journey directly via our [Track Order] page.

    Essential Shipping Tips for Successful Delivery:

    Accurate Contact Info: Please provide a valid, active email address and mobile phone number during checkout. Giftscar cannot be held liable, nor offer compensation, for failed deliveries resulting from missing or incorrect phone numbers.

    Address Details: Ensure your shipping address is thorough and includes necessary apartment, suite, unit, or building numbers. Any non-delivery or return-to-sender fees incurred due to personal address errors will be responsibility of the customer.

    PO Box Restrictions: If you select Expedited Shipping, please note that couriers cannot deliver to PO Boxes or BFPO/APO military addresses. A physical residential or business address is required.

    3. Shipping Issues, Loss, & Theft

    We offer a Worry-Free Purchase protection option at checkout to give you complete peace of mind.

    If You Purchased "Worry-Free Purchase":

    Stolen / Missing Packages: If your tracking states "Delivered" but the package is missing/stolen, please report the theft to us at service@giftscar.com within 7 days of the listed delivery date.

    Lost in Transit: For domestic packages stuck in transit, you can formally report a loss between 30 and 60 days after your order date. International orders can be reported between 60 and 90 days.

    If You Opted Out of "Worry-Free Purchase":

    Stolen Packages: If tracking shows your package was delivered but you have not received it, please wait 3 business days (as couriers occasionally mark items delivered early), check with neighbors, and then notify us at service@giftscar.com.

    Lost Packages: If tracking stops updating for more than 30 days (domestic) or 60 days (international), please notify our team.

    ❗️ Hard Deadline: All shipping anomalies, losses, or delivery discrepancies must be reported to Giftscar within 60 days of the original order placement date. Inquiries made after 60 days will unfortunately not qualify for review or compensation.

    Need Help?

    Our customer care team is dedicated to sorting out any issues swiftly.

    Email Support: service@giftscar.com

    Response Window: Within 24 hours on business days; within 48 hours on weekends.

    Satisfaction Guarantee

    We want you to be satisfied with the products you buy from us. 

    We have 24/7/365 ticket and email support. Please contact us at service@giftscar.com if you need any assistance.