Here is a little project I have been working on for the Upcoming Events. We can add as normal a box using the add content option to display upcoming events which is fine but then each month you would have to change it again for that month. So here is something I created that you may like.
You add this code and it will then give you a box the same as if you where adding an add content box as normal but this time it will change the content depending on the Month we are in. Also it will display how many events are Upcoming for the month and if there are none it will say so in the title and not show any events.
You can see it working on my sites homepage in the top right.
DEMO: http://bizzssite.ning.com/
Before we get started I will just point out that this version is for one event page instance only, so if you have multiple ones you can only select which you want to display in the box. I am working on a multiple one but this may be a while as other projects will come before it.
IMPORTANT: The code is all setup for an event page which is called Events. So if you have just called your event page events then you can just copy the code, if nt and you have called it something else, for example mine is called events demo which in the url it will show as events-demo, so you would need to change just that one part for your own page name. This is the line you are looking for
x$('.eventsMonthWidget .module-body').load("/events .eventListPage .entry .media-frame.eventPage-details", function(){
And this is the part you would change
/events
So for mine it would look like this
/events-demo
and the complete line would look like this
x$('.eventsMonthWidget .module-body').load("/events-demo .eventListPage .entry .media-frame.eventPage-details", function(){
Ok let's get started and add a little css first, this goes in your design studio custom css. You can change the colours to suit your site and font sizes.
.eventsMonthWidget .entry-title > a{ font-size:1.3em }
.eventsMonthWidget .eventPage-detail{ font-size:0.8em }
.eventsMonthWidget .eventPage-detail > a{ font-size:1em }
.eventsMonthWidget .eventPage-detail > a{ font-size:1em }
.eventsMonthWidget .module-header::before{
content:"Upcoming Events This Month";
display:block;
padding-bottom:5px;
font-weight:normal;
text-align:center;
color:white;
font-size:0.96em;
}
Next we need to add some custom code into our site&pages custom code end of page box ( do not copy this line with the code )
<script>
/*Events Month List Widget Code, John Bizley 01-03-17 ver( 3.5 )*/
x$(document).ready(function(){
x$('.module-name:contains(eventsMonthWidget)').closest('.section-eventBundle').addClass('eventsMonthWidget');
x$('.eventsMonthWidget .module-name').text('Events This Month');
x$('.eventsMonthWidget .module-body').html('<h1 class="eventsMonthWidget-updating">Updating...</h1>');
//Change the load url for your own events page. If it's called events then no need to change anything
x$('.eventsMonthWidget .module-body').load("/events .eventListPage .entry .media-frame.eventPage-details", function(){
var WidgetClass = x$('.module-name:contains(eventsMonthWidget)').closest('.section-eventBundle').addClass('eventsMonthWidget');
var monthsDisplay = ['January','February','March','April','May','June','July','August','September','October','November','December'];
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var now = new Date();
var month = months[now.getMonth()];
var monthDisplay = monthsDisplay[now.getMonth()];
var monthselector = ".section-eventBundle.eventsMonthWidget ul:nth-child(1) > li:nth-child(2) > a:nth-child(1):contains("+ month +")";
var monthClass = x$(monthselector).closest('.media-frame').addClass(month);
var presentMonth = monthClass;
var notThisMonth = x$('.section-eventBundle.eventsMonthWidget .media-frame');
notThisMonth.not(presentMonth).remove();
var eventsPresentCount = presentMonth.length;
if(eventsPresentCount <=0){
x$('.section-eventBundle.eventsMonthWidget .module-name').text('No Upcoming '+monthDisplay+' Events');
}else if(eventsPresentCount === 1){
x$('.section-eventBundle.eventsMonthWidget .module-name').text(' '+monthDisplay+' ('+eventsPresentCount+') Event');
}else{
x$('.section-eventBundle.eventsMonthWidget .module-name').text(' '+monthDisplay+' ('+eventsPresentCount+') Events');
}
x$('.section-eventBundle.eventsMonthWidget .module-footer > a.pull-right').text('View All Events');
x$('.column-narrow .section-eventBundle.eventsMonthWidget .module-name').css('text-align','center');
x$('.eventsMonthWidget .span6.narrow16.tablet16.mobile16').hide();
});
});
</script>
Now we have added the code you only need to do that once and can now go ahead and add as many of the widgets to any pages you wish so here is how to add them.
- Go to your site&pages and click on a page you want to add it to
- Click on the add content button and choose your event page from the list
- add this title eventsMonthWidget
- Display set to Titles Only
- From to upcoming
- Show 1 events
- Click Add and you are all finished move the widget to wherever you want it.
Demo images
Setup
John :-)
Replies