Slick Carousel ================================================================================ Slick is a powerful and performant slideshow/carousel solution leveraging Ken Wheeler's Slick carousel. See http://kenwheeler.github.io/slick Powerful: Slick is one of the sliders [1], as of 9/15, the only one [2], which supports nested sliders and a mix of lazy-loaded image/video with image-to-iframe or multimedia lightbox switchers. See below for the supported media. Performant: Slick is stored as plain HTML the first time it is requested, and then reused on subsequent requests. Carousels with cacheability and lazyload are lighter and faster than those without. Slick has gazillion options, please start with the very basic working samples from slick_example [3] only if trouble to build slicks. Be sure to read its README.txt. Spending 5 minutes or so will save you hours in building more complex slideshows. The module supports Slick 1.6 above until 1.8.1. Versions 1.9.0 and above are not currently supported. Slick 2.x is just out 9/21/15, and hasn't been officially supported now, 9/27. [1] https://groups.drupal.org/node/20384 [2] https://www.drupal.org/node/418616 [3] http://dgo.to/slick_extras [4] https://www.drupal.org/project/slick/issues/2964773 REQUIREMENTS -------------------------------------------------------------------------------- - Slick library: o Download Slick archive >= 1.6 && <= 1.8.1 from https://github.com/kenwheeler/slick/releases o Master branch (1.9.0) is not supported. Instead download, rename one of the official slick releases to slick. Extract and rename it to "slick", so the assets are at: /libraries/slick/slick/slick.css /libraries/slick/slick/slick-theme.css (optional if a skin chosen) /libraries/slick/slick/slick.min.js - Download jqeasing from https://github.com/gdsmith/jquery.easing, so available at: /libraries/easing/jquery.easing.min.js This is CSS easing fallback for non-supporting browsers. - Blazy.module, to reduce DRY stuffs, and as a bonus, advanced lazyloading such as delay lazyloading for below-fold sliders, iframe, (fullscreen) CSS background lazyloading, breakpoint dependent multi-serving images, lazyload ahead for smoother UX. Important! Be sure to enable Blazy first before updating Slick Alphas, otherwise a requirement error. - If using Composer with https://github.com/fxpio/composer-asset-plugin and via bower-asset, Libraries.module[5] is required. Watch out dots and dashes: $ composer require bower-asset/blazy \ bower-asset/slick-carousel:^1.8 \ bower-asset/jquery-mousewheel \ bower-asset/jquery.easing \ drupal/blazy \ drupal/slick Be sure to install `composer-asset-plugin' globally first: $ composer global require "fxp/composer-asset-plugin:~1.3" And setup the required config first: https://www.drupal.org/project/slick/issues/2907371#comment-12882235 [5] http://dgo.to/libraries FEATURES -------------------------------------------------------------------------------- o Fully responsive. Scales with its container. o Uses CSS3 when available. Fully functional when not. o Swipe enabled. Or disabled, if you prefer. o Desktop mouse dragging. o Fully accessible with arrow key navigation. o Built-in lazyLoad, and multiple breakpoint options. o Random, autoplay, pagers, arrows, dots/text/tabs/thumbnail pagers etc... o Supports pure text, responsive image, iframe, video carousels with aspect ratio. No extra jQuery plugin FitVids is required. Just CSS. o Works with Views, core and contrib fields: Image, Media Entity. o Optional and modular skins, e.g.: Carousel, Classic, Fullscreen, Fullwidth, Split, Grid or a multi row carousel. o Various slide layouts are built with pure CSS goodness. o Nested sliders/overlays, or multiple slicks within a single Slick via Views. o Some useful hooks and drupal_alters for advanced works. o Modular integration with various contribs to build carousels with multimedia lightboxes or inline multimedia. o Media switcher: Image linked to content, Image to iframe, Image to colorbox, Image to photobox. o Cacheability + lazyload = light + fast. INSTALLATION -------------------------------------------------------------------------------- Install the module as usual, more info can be found on: http://drupal.org/documentation/install/modules-themes/modules-7 The Slick module has several sub-modules: - slick_ui, included, to manage optionsets, can be uninstalled at production. - slick_media [1], to get richer contents using Media entity. - slick_video [2], to get video carousels using Video Embed Field. - slick_paragraphs [3], to get more complex slides at field level. - slick_views [4], to get more complex slides. - slick_devel, if you want to help testing and developing the Slick. - slick_example, to get up and running quickly. Both are included in slick_extras [5]. [1] http://dgo.to/slick_media [2] http://dgo.to/slick_video [3] http://dgo.to/slick_paragraphs [4] http://dgo.to/slick_views [5] http://dgo.to/slick_extras OPTIONAL INTEGRATION -------------------------------------------------------------------------------- Slick supports enhancements and more complex layouts. - Colorbox, to have grids/slides that open up image/video in overlay. - Photobox, idem ditto. - Responsive image, in core, to get truly responsive image. - Media Entity, to have richer contents: image, video, or a mix of em. http://dgo.to/media_entity - Video Embed Media, idem ditto. http://dgo.to/video_embed_field - Paragraphs, to get more complex slides at field level. http://dgo.to/paragraphs - Mousewheel, download from https://github.com/brandonaaron/jquery-mousewheel, so it is available at: /libraries/mousewheel/jquery.mousewheel.min.js OPTIONSETS -------------------------------------------------------------------------------- To create optionsets, go to: admin/config/media/slick Be sure to enable Slick UI sub-module first, otherwise regular "Access denied". They will be available at field formatter "Manage display", and Views UI. VIEWS AND FIELDS -------------------------------------------------------------------------------- Slick works with Views and as field display formatters. Slick Views is available as a style plugin included at slick_views.module. Slick field formatter included as a plugin which supports core: Image, Text. PROGRAMATICALLY -------------------------------------------------------------------------------- See slick.api.php for samples. NESTED SLICKS -------------------------------------------------------------------------------- Nested slick is a parent Slick containing slides which contain individual child slick per slide. The child slicks are basically regular slide overlays like a single video over the large background image, only with nested slicks it can be many videos displayed as a slideshow as well. Use Slick Paragraphs or Views to build one. Supported multi-value fields for nested slicks: Image, Text, VEF, Media entity. SKINS -------------------------------------------------------------------------------- The main purpose of skins are to demonstrate that often some CSS lines are enough to build fairly variant layouts. No JS needed. Unless, of course, for more sophisticated slider like spiral 3D carousel which is beyond what CSS can do. But more often CSS will do. Skins allow swappable layouts like next/prev links, split image or caption, etc. with just CSS. However a combination of skins and options may lead to unpredictable layouts, get yourself dirty. Use the provided samples to see the working skins. Some default complex layout skins applied to desktop only, adjust for the mobile accordingly. The provided skins are very basic to support the necessary layouts. It is not the module job to match your awesome design requirements. Optional skins: -------------- - None It is all about DIY. Doesn't load any extra CSS other than the basic styles required by slick. Skins at the optionset are ignored, only useful to fetch description and your own custom work when not using the sub-modules, nor plugins. If using individual slide layout, do the layouts yourself. - Classic Adds dark background color over white caption, only good for slider (single slide visible), not carousel (multiple slides visible), where small captions are placed over images, and animated based on their placement. - Full screen Works best with 1 slidesToShow. Use z-index layering > 8 to position elements over the slides, and place it at large regions. Currently only works with Slick fields, use Views to make it a block. Use Slick Paragraphs to have more complex contents inside individual slide, and assign it to Slide caption fields. - Full width Adds additional wrapper to wrap overlay video and captions properly. This is designated for large slider in the header or spanning width to window edges at least 1170px width for large monitor. To have a custom full width skin, simply prefix your skin with "full", e.g.: fullstage, fullwindow, etc. - Split Caption and image/media are split half, and placed side by side. This requires any layout containing "split", otherwise useless. - Grid Only reasonable if you have considerable amount of slides. Uses the Foundation 5.5 block-grid, and disabled if you choose your own skin not named Grid. Otherwise overrides skin Grid accordingly. Requires: Visible slides, Skin Grid for starter, A reasonable amount of slides, Optionset with Rows and slidesPerRow = 1. Avoid variableWidth and adaptiveHeight. Use consistent dimensions. This is module feature, older than core Rows, and offers more flexibility. Available at slick_views, and configurable via Views UI. If you want to attach extra 3rd libraries, e.g.: image reflection, image zoomer, more advanced 3d carousels, etc, simply put them into js array of the target skin. Be sure to add proper weight, if you are acting on existing slick events, normally < 0 (slick.load.min.js) is the one. Use hook_slick_skins_info() and implement \Drupal\slick\SlickSkinInterface to register ones. Clear the cache once. See slick.api.php for more info on skins. See \Drupal\slick\SlickSkinInterface. Other skins are available at http://dgo.to/slick_extras Some extra skins are WIP which may not work as expected. GRID -------------------------------------------------------------------------------- To create Slick grid or multiple rows carousel, there are 3 options: 1. One row grid managed by library: Visit admin/config/media/slick, Edit current optionset, and set slidesToShow > 1, and Rows and slidesperRow = 1 2. Multiple rows grid managed by library: Visit admin/config/media/slick, Edit current optionset, and set slidesToShow = 1, Rows > 1 and slidesPerRow > 1 3. Multiple rows grid managed by Module: Visit admin/structure/views/view/slick_x/edit/block_grid from slick_example, Be sure to install the Slick example sub-module first. Requires skin "Grid", and slidesToShow, Rows and slidesPerRow = 1. The first 2 are supported by core library using pure JS approach. The last is the Module feature using pure CSS Foundation block-grid. The key is: The total amount of Views results must be bigger than Visible slides, otherwise broken Grid, see skin Grid above for more details. HTML STRUCTURE -------------------------------------------------------------------------------- Note, non-BEM classes are added by JS.