You are here

function slick_build in Slick Carousel 7.2

Same name and namespace in other branches
  1. 7.3 slick.deprecated.inc \slick_build()

Returns a cacheable renderable array of a single slick instance.

Parameters

array $items: An array of slick contents: text, image or media.

array $options: An array of key:value pairs of custom JS options to override $optionset.

array $settings: An array of key:value pairs of HTML/layout related settings.

array $attach: An array of assets to load using slick_attach($attach), or regular array.

string $id: A deprecated optional ID. Use $settings['id'] instead to reduce params.

object $optionset: The cached optionset object to avoid possible multiple invocations.

Return value

array The cacheable renderable array of a slick instance, or empty array.

5 calls to slick_build()
my_module_render_slick in ./slick.api.php
Quick sample #1.
my_module_render_slick_asnavfor in ./slick.api.php
AsNavFor sample #3.
my_module_render_slick_detail in ./slick.api.php
Detailed sample #2.
slick_fields_field_formatter_view in slick_fields/slick_fields.module
Implements hook_field_formatter_view().
_slick_build_fc_overlay in includes/slick.field_collection.inc
Build the managed overlays: image, video, audio or nested slicks.

File

./slick.module, line 390
Slick carousel integration, the last carousel you'll ever need.

Code

function slick_build(array $items = array(), array $options = array(), array $settings = array(), array $attach = array(), $id = NULL, $optionset = NULL) {
  if (empty($items)) {
    return array();
  }
  $attachments = array();
  $display = empty($settings['current_display']) ? 'main' : $settings['current_display'];
  $settings['id'] = empty($settings['id']) ? slick_html_id('slick', $id) : $settings['id'];
  $options['mousewheel'] = !empty($settings['mousewheel']);
  if ($display != 'thumbnail') {
    $loaded = isset($attach['css']) || isset($attach['js']) || isset($attach['library']);
    $attachments = $loaded ? $attach : slick_attach($attach, $settings);
    if ($display == 'main') {
      if (!empty($settings['override'])) {
        foreach ($settings['overridables'] as $key => $override) {
          $options[$key] = empty($override) ? FALSE : TRUE;
        }
        unset($settings['overridables']);
      }

      // Build the Slick grid if provided.
      if (!empty($settings['grid']) && !empty($settings['visible_slides'])) {
        $items = slick_build_grids($items, $settings);
      }
    }
  }
  $slick = array(
    '#theme' => 'slick',
    '#items' => $items,
    '#options' => $options,
    '#optionset' => $optionset,
    '#settings' => $settings,
    '#attached' => $attachments,
  );

  // Cache the render array if so configured.
  if (!empty($settings['cache'])) {
    $cid = empty($settings['cid']) ? $settings['id'] . ':custom' : $settings['id'] . ':' . $settings['cid'];
    if ($display == 'thumbnail') {
      $cid .= ':thumbnail';
    }
    $cache = cache_get($cid);
    $active = $settings['cache'] == 'persistent' ? TRUE : (!$cache ? TRUE : REQUEST_TIME < $cache->expire);
    if (!$cache || $active) {
      $slick['#cache'] = array(
        'cid' => $cid,
        'expire' => $settings['cache'] == 'persistent' ? CACHE_TEMPORARY : REQUEST_TIME + $settings['cache'],
      );
    }
  }
  return $slick;
}