news

Thursday, September 28, 2023 - Greater Boston Yarn Crawl - Day 1!

Victoria Myers

Good morning lovely knitters!  What a surprise to see a post on a Thursday!  Well, that's because TODAY is the first day of the Greater Boston Yarn Crawl!
We're open extended hours today - 11am to 6pm and have lots of fun in store!  And we've even set up a few fun bonuses for you online peeps that are too far away to come indulge in the weekend of yarn fondling!  We've got loads of new Mad Balls, new hand-dye and new yarn!!
Here's what to plan for Thursday, September 28, 2023!
*We've set up a trunk show of all of our favorite Noro Kureyon (and maybe some Ito) patterns!  Come check them out and get inspired!  Today only, when you buy any Noro Kureyon kit - you'll get a giftcard reward to spend later!  The link leads you to the yarn and all of the qualifying kits for this deal are linked there.  Buy 1 kit, get $3 giftcard.  Buy 2 kits, get $7.  Buy 3 kits, get $15!  (We'll be sending these giftcards next week once we tally up all of the orders - so watch your email - you can stack them all weekend long!)  You can get this deal whether you are in store or online, but only Thursday until midnight!
*Spend $100 or more and get a FREE drawstring Island Yarn Ballsack (supplies are limited so make sure you don't wait too long in the weekend to score yours - one per person - purchase must be in one order and cannot be combined over several orders).  This deal is good both in store and online!
*Double Stash Cash points all day (both in store and online)
*Make sure you linger as long as you can - you just might win a FREE book when our Free Book Alarm goes off! (in store only)
*Come give some our favorite and newest yarns a taste and grab a fresh baked cookie while you knit a row and fall in love! (in store only)
*Get a special prize chance when you make any purchase over $25!  You could win anything from a bonus pattern to a hand-dye skein of your choice! (one per person - in store only)
*Gorgeous Ella Rae Impressionist is headed to the sale bin!  Grab it now for 30% off!! (both in store and online)
*Don't forget to pick up your FREE pattern pack and Island Yarn pin when you come to the counter to get your passport stamped!  (in-store only)
Ok!  I hope you are all ready for some awesome yarn shop fun!  I'll see your smiling face soon!

Leave a Comment

Please note, comments must be approved before they are published

const selectVariantByClickingImage = { // Create variant images from productJson object _createVariantImage: function (product) { const variantImageObject = {}; product.variants.forEach((variant) => { if ( typeof variant.featured_image !== 'undefined' && variant.featured_image !== null ) { const variantImage = variant.featured_image.src .split('?')[0] .replace(/http(s)?:/, ''); variantImageObject[variantImage] = variantImageObject[variantImage] || {}; product.options.forEach((option, index) => { const optionValue = variant.options[index]; const optionKey = `option-${index}`; if ( typeof variantImageObject[variantImage][optionKey] === 'undefined' ) { variantImageObject[variantImage][optionKey] = optionValue; } else { const oldValue = variantImageObject[variantImage][optionKey]; if (oldValue !== null && oldValue !== optionValue) { variantImageObject[variantImage][optionKey] = null; } } }); } }); return variantImageObject; }, _updateVariant: function (event, id, product, variantImages) { const arrImage = event.target.src .split('?')[0] .replace(/http(s)?:/, '') .split('.'); const strExtention = arrImage.pop(); const strRemaining = arrImage.pop().replace(/_[a-zA-Z0-9@]+$/, ''); const strNewImage = `${arrImage.join('.')}.${strRemaining}.${strExtention}`; if (typeof variantImages[strNewImage] !== 'undefined') { product.variants.forEach((option, index) => { const optionValue = variantImages[strNewImage][`option-${index}`]; if (optionValue !== null && optionValue !== undefined) { const selects = document.querySelectorAll('#'+ id + ' [class*=single-option-selector]'); const options = selects[index].options; for (let option, n = 0; (option = options[n]); n += 1) { if (option.value === optionValue) { selects[index].selectedIndex = n; selects[index].dispatchEvent(new Event('change')); break; } } } }); } }, _selectVariant: function() { const productJson = document.querySelectorAll('[id^=ProductJson-'); if (productJson.length > 0) { productJson.forEach((product) => { const sectionId = product.id.replace("ProductJson-", "shopify-section-"); const thumbnails = document.querySelectorAll('#'+ sectionId + ' img[src*="/products/"]'); if (thumbnails.length > 1) { const productObject = JSON.parse(product.innerHTML); const variantImages = this._createVariantImage(productObject); // need to check variants > 1 if (productObject.variants.length > 1) { thumbnails.forEach((thumbnail) => { thumbnail.addEventListener('click', (e) => this._updateVariant(e, sectionId, productObject, variantImages), ); }); } } }); } }, }; if (document.readyState !== 'loading') { selectVariantByClickingImage._selectVariant(); } else { document.addEventListener( 'DOMContentLoaded', selectVariantByClickingImage._selectVariant(), ); }