Caterpillar – You can now get a Mother’s Day Connie the Caterpillar cake from M&S
Delicious caterpillar glow up in time for Mother’s Day.
Celebrations during lockdown are just that much more special because everyone puts more of an effort in and gets creative with all aspects of the occasion. I’m about to tell you about M&S’s latest addition to its treat aisle that you will need for Mother’s Day celebrations next week.
Colin and Connie the caterpillars are pretty much social butterflies at this stage with all the celebrations they’re involved in.
Now there’s a Connie the Caterpillar cake decked out in all the pink and flowers for Mother’s Day.
Over the last year we’ve seen Colin get a Christmas makeover and both Colin and Connie had a Valentine’s upgrade when they were available together as a delicious duo for the special occasion.
We’re here for it all, the famous celebratory cakes need a glow up for every occasion in our opinion, and Mother’s Day is no exception.
So if you’re celebrating Mother’s Day you can include your favourite edible caterpillar at the table, M&S is introducing a new ‘flower power’ Connie the Caterpillar cake for the very first time.
Connie is covered in delicious flowers and sports a floral headband and she’s filled with an all butter chocolate sponge roll and strawberry flavoured buttercream.
As the story goes Connie and Colin met at a birthday party (of course) and they hit off instantly, the two of them were very sweet together. They married in 2017 and they’ve been celebrating occasions with families all over the country since.
This is the second special edition Connie the Caterpillar cake this year after M&S launched the Valentine’s Day cake with the cute couple.
M&S also has some delicious additions to the drink aisle with a Conte Priuli Oro Rosa Prosecco Rosé on shelves on offer for Mother’s Day at around 12 euro .
var host="www.her.ie"; var element = document.createElement('script'); var firstScript = document.getElementsByTagName('script')[0]; var url="https://quantcast.mgr.consensu.org" .concat('/choice/', 'wFs6Tqd6-pgRC', '/', host, '/choice.js') var uspTries = 0; var uspTriesLimit = 3; element.async = true; element.type="text/javascript"; element.src = url;
firstScript.parentNode.insertBefore(element, firstScript);
function makeStub() { var TCF_LOCATOR_NAME = '__tcfapiLocator'; var queue = []; var win = window; var cmpFrame;
function addFrame() { var doc = win.document; var otherCMP = !!(win.frames[TCF_LOCATOR_NAME]);
if (!otherCMP) { if (doc.body) { var iframe = doc.createElement('iframe');
iframe.style.cssText="display:none"; iframe.name = TCF_LOCATOR_NAME; doc.body.appendChild(iframe); } else { setTimeout(addFrame, 5); } } return !otherCMP; }
function tcfAPIHandler() { var gdprApplies; var args = arguments;
if (!args.length) { return queue; } else if (args[0] === 'setGdprApplies') { if ( args.length > 3 && args[2] === 2 && typeof args[3] === 'boolean' ) { gdprApplies = args[3]; if (typeof args[2] === 'function') { args[2]('set', true); } } } else if (args[0] === 'ping') { var retr = { gdprApplies: gdprApplies, cmpLoaded: false, cmpStatus: 'stub' };
if (typeof args[2] === 'function') { args[2](retr); } } else { queue.push(args); } }
function postMessageEventHandler(event) { var msgIsString = typeof event.data === 'string'; var json = {};
try { if (msgIsString) { json = JSON.parse(event.data); } else { json = event.data; } } catch (ignore) {}
var payload = json.__tcfapiCall;
if (payload) { window.__tcfapi( payload.command, payload.version, function(retValue, success) { var returnMsg = { __tcfapiReturn: { returnValue: retValue, success: success, callId: payload.callId } }; if (msgIsString) { returnMsg = JSON.stringify(returnMsg); } event.source.postMessage(returnMsg, '*'); }, payload.parameter ); } }
while (win) { try { if (win.frames[TCF_LOCATOR_NAME]) { cmpFrame = win; break; } } catch (ignore) {}
if (win === window.top) { break; } win = win.parent; } if (!cmpFrame) { addFrame(); win.__tcfapi = tcfAPIHandler; win.addEventListener('message', postMessageEventHandler, false); } };
makeStub();
var uspStubFunction = function() { var arg = arguments; if (typeof window.__uspapi !== uspStubFunction) { setTimeout(function() { if (typeof window.__uspapi !== 'undefined') { window.__uspapi.apply(window.__uspapi, arg); } }, 500); } };
var checkIfUspIsReady = function() {
uspTries++;
if (window.__uspapi === uspStubFunction && uspTries < uspTriesLimit) {
console.warn('USP is not accessible');
} else {
clearInterval(uspInterval);
}
};
if (typeof window.__uspapi === 'undefined') {
window.__uspapi = uspStubFunction;
var uspInterval = setInterval(checkIfUspIsReady, 6000);
}
// This callback is triggered on each page load
__tcfapi('addEventListener', 0, function(tcData, success) {
if (success && (tcData.eventStatus == 'useractioncomplete' || tcData.eventStatus == 'tcloaded')) {
processCmpData(tcData);
}
});
function processCmpData(tcData) {
// Flag that CMP has been processed.
consentManager.cmpProcessed = true;
// Permutive disabling needed?
if (tcData.purpose.consents[1] && tcData.purpose.consents[3]) {
consentManager.permutive.isAllowed = true;
}
if (consentManager.isAllowed('permutive')) {
window.localStorage.removeItem('permutive-opt-out');
} else {
window.localStorage.setItem('permutive-opt-out', 'true');
}
consentManager.setUserConsent(tcData);
// Consent String is needed as DFP target
consentManager.setConsentString(tcData.tcString);
consentManager.trackPublisherConsentLevel(tcData.publisher.consents);
consentManager.trackVendorConsentLevel(tcData.vendor.consents);
/**
* According to Google policies, if Publisher Purpose 1 is revoked, we should not display ads at all
* Check https://support.google.com/admanager/answer/9805023?hl=en for more information
* Here we update the flag that points if ads should be rederer or not.
*/
consentManager.hideAds(tcData.purpose.consents[1]);
// Posts tagged as sensitive shouldn't be showing any ads. Since we have a way to control ads viewability through
// the consent manager, it's easy to check for the posts tags and flagged if they should shown or not.
// According to Google policies, if Publisher Purpose 1 is revoked, we should not display ads at all
// Check https://support.google.com/admanager/answer/9805023?hl=en for more information
if (consentManager.hasBeenProcessed() && consentManager.displayAds) {
consentManager.renderAds();
}
// If consent was processed once the page was loaded, there are some ads that may not appear. Let's run prebid again.
if (typeof executeParallelAuctionAlongsidePrebid !== 'undefined' && !consentManager.prebidProcessed && consentManager.displayAds) {
executeParallelAuctionAlongsidePrebid()
}
// If consent was processed once the page was loaded, there are some ads that may not appear. Let's run prebid again.
if (typeof fetchHeaderBids !== 'undefined' && !consentManager.joeUkPrebidProcessed && consentManager.displayAds) {
fetchHeaderBids(apstagSlots);
}
// Facebook and Twitter are non IAB vendors, so we need to check their consents using a different callback
__tcfapi('getNonIABVendorConsents', 0, function(consent, success) {
if (success && consent.gdprApplies) {
consentManager.setUserNonIabConsent(consent);
}
})
if (!consentManager.sentEventFbPixel && consentManager.isAllowed('facebook')) {
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','//connect.facebook.net/en_US/fbevents.js');
fbq('init', '1021712967898776');
fbq('track', "PageView");
fbq('track', 'ViewContent');
consentManager.sentEventFbPixel = true;
}
}