Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Advanced Search
  • 6
jasonbarone

Summary Block: How can I set the Carousel to "autoplay"?

Question

I love the new Summary Block carousel. I'm curious if it's possible to "autoplay" the carousel much like galleries can do. I know this is possible using Developer Platform galleries, but would love to be able to use with Block Carousels.

Edited by rhyann

Founder at Squarefront, the global community of Squarespace builders. I'm building products and services for the Squarespace platform and documenting everything on YouTube. I've been working with the platform since 2008 and my work with Squarespace led to me being hired by Uber where I spent over 5 years working on the web, design and content platform teams. 

Need help with Squarespace? Send me an email! Otherwise connect with me on TwitterInstagram, or Linkedin.

Share this post


Link to post

Recommended Posts

  • 0

Hey. So code works fine, but I can't get my 9 pictures to show up. It always cuts off the last one and shows only 8. I anyway replaced the code with the "var totalGroups=carousel.get('totalGroups');" but does´t help. Thanks for feedback!

Share this post


Link to post
  • 0

Hi, I've added this code to a page on Ishimoto template, but it doesn't seem to have worked at all. The carousel is still doing that annoying backwards whizzing when it gets to the end of the images. Any tips/suggestions?

Share this post


Link to post
  • 0

Just wanted to thank you for this bit of code and function, I've implemented it throughout my site (combatdocket.com), and seen a marked improvement in visitor engagement and retention by providing a rotating summary carousel in several key places, very "eye catching", draws visits to other posts quite nicely.

Share this post


Link to post
  • 0

Thanks for the code @ghostcat @WTCOC Is it possible for this to work on a page within an index? I'm using the Clay template and I have a couple of Carousel blocks on the homepage, which are part of an index, that I would love to have scrolling. When I view the pages outside of the index the auto scrolling works (with the code in this thread) but not within in the index. If anyone could help I would be so grateful.

Share this post


Link to post
  • 0
Guest

This really helped me out — thanks!Is it possible to make this loop when you reach the end, instead of scrolling back to slide 1?So the first slide would be on the right side of the last slide, and it would just start over

Share this post


Link to post
  • 0

Hi there. I'm having a problem with this code. It won't loop. Instead, after my last review, it goes to a blank slot. Any ideas?

Thanks!!

Share this post


Link to post
  • 6

@benf @socialxdata @barney

This code is working.


<script>
   Y.on('domready', function () {
       var galleries = Y.Squarespace.GalleryManager.getGalleries();
       var duration = 4000;
       var gallery=galleries[0];
       var carousel=gallery["gallery-design"];
       var totalGroups=carousel.get('totalGroups');
       var currentGroup=0
       var container=gallery.get("container");
       var nextBtn=Y.one(gallery.get("elements.next")._nodes[0]).on("click",function(e){
           e.preventDefault();
           e.stopPropagation();
           advanceCarousel()
       })
       var prevBtn=Y.one(gallery.get("elements.previous")._nodes[0]).on("click",function(e){
           e.preventDefault();
           e.stopPropagation();
           backupCarousel()
       })
       Y.one(container._node).get('parentNode').on("mouseover",function(){
           clearInterval(myInterval)
       })
       Y.one(container._node).get('parentNode').on("mouseout",function(){
           clearInterval(myInterval)
           setMyInterval()
       })
       var myInterval;
       function setMyInterval(){
           myInterval = setInterval(function(){
               advanceCarousel()
           },duration)
       }
       setMyInterval();
       function advanceCarousel(){
           if(currentGroup==(totalGroups-1)){
               currentGroup=0;
           }else{
               currentGroup++;
           }   
           carousel.goToGroup(currentGroup);
       }
       function backupCarousel(){
           if(currentGroup==0){
               currentGroup=totalGroups-1
           }else{
               currentGroup--;
           }
           carousel.goToGroup(currentGroup);
       }
   });
</script>


Share this post


Link to post
  • 0

I can confirm that the code from @WTCOC is working. Furthermore, if you want to add a source to your testimonial slider, simply paste the person's name into the Tags field, and then when you set your Summary Block, Choose Primary Metadata = Tags. Here's some custom code to stop the tags being clickable, and also to add a long dash before the tag/person's name:


.summary-metadata-item--tags a:before {
 content: "–  ";
}
.summary-metadata-item--tags a{
  pointer-events: none;
  cursor: default;
}


Share this post


Link to post
  • 0

And here's some more to add curly quotes before/after the excerpt, if you don't wanna type them every time:


.sqs-block-summary-v2 .summary-excerpt p:before {
   content: "“";
}
.sqs-block-summary-v2 .summary-excerpt p:after {
   content: "”";
}


Share this post


Link to post
  • 0

Okay this works great. However it only seems to work for the first carousel on the page - is there somewhere to have it work for all carousels?

Share this post


Link to post
  • 0

Sadly something is up with the "thecustomersquare.com" code - I had used it successfully all year and it totally broke a client site starting on Monday. Brine / Rally template.

No response from support @ The Custom Square :(

Share this post


Link to post
  • 0
Guest

Thanks @WTCOC, that code works for me. Two questions though - 1) is there a way to make it shift only one image at a time, rather than all at once? and 2) is there a way to make it display only one column when viewed on mobile? Thanks in advance for your guidance!

Share this post


Link to post
  • 0

SOLUTION FOR MULTIPLE GALLERIES

Using the code from @WTCOC, you can hack the autoplay to work on multiple galleries by duplicating the whole code and replacing one line:

In the duplicated code, change:


var gallery=galleries[0];

to:


var gallery=galleries[1];

You should be able to do this as many times necessary for the number of galleries on your page by repeating the code and changing the number. It may not be the most concise approach but it get's the job done with little effort, especially if you're not comfortable modifying the body of the code!

Share this post


Link to post
  • 1

Hi @wtcoc @benf @ghostcat,I've tried this code (this one here => Answer by WTCOC · Nov 13, 2017 at 04:24 PM) and the very first one on this post by @ghostcat and it seems to work on my site while I'm logged in inside Squarespace, but when I test it from the out, it doesn't scroll.I'm using Bedford. Also, I don't even need it to loop - would be great, but not fussed about the loop. It can be a simple autoplay for my summary carousel (of testimonials saved as 'blogs'). Could you help? Here's the page in question: innovatorsbox.comThanks in advance.

Share this post


Link to post
  • 2

In case someone wants to customize a specific gallery, you can find it by section name. You can make a section with a slug, for example: "home-testimonials". Then, find the gallery that resides inside this container.

Example:


<script>  
 Y.on('domready', function () {
   try {
     var container = Y.one("#home-testimonials");
     var gallery = Y.Squarespace.GalleryManager.getGalleryByContainer(container);
     gallery.setAttrs({
       "autoplay":true,
       "autoplayOptions": {
         "timeout":20000,
         "randomize": true
       }
     });
   } catch (e) {
     console.error("Could not configure Gallery autoplay.", e);
   }
 });
</script>




Edited by Andrei
Initial Revision

Share this post


Link to post
  • 0

It works great but it scrolls between the gallery entries way too fast. If you change the duration variable it just changes the rate at which the gallery transitions between slides.

Does anyone know how to add a pause in between changes? So after it switches to a new item, wait X amount of seconds?

Also is there a way to temporarily disable the function when a user manually clicks the scroll to the next gallery item?


Envolve Technical Solutions offers #IT support for residential and small business. Reach out to us to schedule a free consultation! We serve all the IT needs of residential and small business in Broomfield, Westminster, and surrounding areas in Colorado. 720-724-7708 or support@envolvetechnicalsoltuions.com

Share this post


Link to post
  • 0

I've been using this code for a few years now and it seems that it just recently broke on [my site][1]. I didn't initially notice the carousel had broken, but that my top navigation links had disappeared, a bug that I've encountered before with bad code injection.

I haven't been able to figure out how to fix the carousel but by changing the first line from

Share this post


Link to post
  • 0

For some reason this solution (the original approved solution) has stopped working... has anyone else experienced this?

We are using the Brine template. It may have happened after the most current Squarespace update because all was working fine for the past several months.

Edited by tb1200
Initial Revision

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment


×
×
  • Create New...