kellyhutsbydesigns Posted March 22, 2022 Posted March 22, 2022 (edited) Site URL: https://dev-sioux-city-public-museum.squarespace.com https://dev-sioux-city-public-museum.squarespace.com/exhibitions/a-life-in-the-wild-t-d-mangelsen Password: scpm I found some fabulous code on a blog (sorry, I can't find it to reference!) which allowed me to add these 'This a past event' messages on any events which have already passed. However, the Java script which takes note of the date is using the date the event started, instead of the date the event finished. For example - this event runs Nov 27th - March 31st - I want the message to kick in on April 1st, but it's been showing since Nov 27th. This is the code I'm using: <!-- PAST EVENTS MESSAGE --> <script> // Change past events styling// if ( document.body.classList.contains('collection-type-events-stacked') && document.body.classList.contains('view-item') ) { // Get the date of the event from the datetime attribute of the event-date element var eventDate = document.getElementsByClassName("event-date")[0].getAttribute("datetime"); // Get today's date var expDate = new Date(); // Convert the dates to numbers, for simplicity var eventDateParsed = Date.parse(eventDate); var expDateParsed = Date.parse(expDate); // Add one day (in milliseconds) to today's date // This ensures that the class isn't added until the event has ended expDateParsed = expDateParsed + (24*60*60*1000); // Finally, calculate whether the date is in the past or present/future and apply the appropriate class to the body if ( eventDateParsed < expDateParsed ) { document.body.classList.add("pastEvent"); } else { document.body.classList.add("futureEvent"); } } </script> Edited March 22, 2022 by kellyhutsbydesigns
Solution paul2009 Posted March 22, 2022 Solution Posted March 22, 2022 4 hours ago, kellyhutsbydesigns said: the Java script which takes note of the date is using the date the event started, instead of the date the event finished. The JS is looking for the first element with the class event-date (the start date) but it needs to look for the second element with this class (the end date). You can do this by changing the line: var eventDate = document.getElementsByClassName("event-date")[0].getAttribute("datetime"); to var eventDate = document.getElementsByClassName("event-date")[1].getAttribute("datetime"); Did this help? Please give feedback by clicking an icon below ⬇️ dzak and kellyhutsbydesigns 1 1 Me: I'm Paul, a SQSP user for >18 yrs & Circle Leader since 2017. I value honesty, transparency, diversity and good design ♥. Work: Founder of SF.DIGITAL. We provide high quality original extensions to supercharge your Squarespace website. Content: Views and opinions are my own. Links in my posts may refer to my own SF.DIGITAL products or may be affiliate links. Forum advice is completely free. You can thank me by selecting a feedback emoji. Buying a coffee is generous but optional.
kellyhutsbydesigns Posted March 22, 2022 Author Posted March 22, 2022 Fabulous! Thank you so much! paul2009 1
dzak Posted March 22, 2022 Posted March 22, 2022 Hi, I was just curious where you inserted the JS code. Is it into the Code Inject section in the Event List Settings -> Advanced -> Page Header Code Injection ? It seems like a really useful bit of code but I put it in, but it didn't seemed to work.
tuanphan Posted March 24, 2022 Posted March 24, 2022 On 3/23/2022 at 6:05 AM, dzak said: Hi, I was just curious where you inserted the JS code. Is it into the Code Inject section in the Event List Settings -> Advanced -> Page Header Code Injection ? It seems like a really useful bit of code but I put it in, but it didn't seemed to work. Settings > Advanced > Code Injection > Footer dzak 1 Email me if you have need any help (free, of course.). Answer within 24 hours. Or send to forum message Contact Customer Care - Learn CSS - Buy me a coffee (thank you!)
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment