You are here

function advagg_add_preload_link in Advanced CSS/JS Aggregation 7.2

Add preload link to the top of the html head.

Parameters

string $url: Link to the url that will be preloaded.

string $media: Media types or media queries, allowing for responsive preloading.

string $as: What type of content is this; font, image, video, etc.

string $type: The mime type of the file.

string $crossorigin: Preload cross-origin resources; fonts always need to be CORS.

1 call to advagg_add_preload_link()
advagg_mod_page_alter in advagg_mod/advagg_mod.module
Implements hook_page_alter().

File

./advagg.module, line 6654
Advanced CSS/JS aggregation module.

Code

function advagg_add_preload_link($url, $media = '', $as = '', $type = '', $crossorigin = NULL) {
  static $weight = -2000;
  $weight += 0.0001;
  $href = advagg_file_create_url($url);
  $key = "advagg_preload:{$href}";

  // Return here if url has already been added.
  $stored_head = drupal_static('drupal_add_html_head');
  if (isset($stored_head[$key])) {
    return TRUE;
  }

  // Add basic attributes.
  $attributes = array(
    'rel' => 'preload',
    'href' => $href,
  );

  // Fill in missing info.
  list($as, $type, $crossorigin) = advagg_get_preload_info_from_url($url, $as, $type, $crossorigin);

  // Exit if no as.
  if (empty($as)) {
    return FALSE;
  }

  // Build up attributes array.
  $attributes['as'] = $as;
  if (!empty($type)) {
    $attributes['type'] = $type;
  }
  if (!empty($crossorigin)) {
    $attributes['crossorigin'] = $crossorigin;
  }
  if (!empty($media)) {
    $attributes['media'] = $media;
  }

  // Call hook_advagg_preload_link_attributes_alter()
  drupal_alter('advagg_preload_link_attributes', $attributes);

  // Add to HTML head.
  $element = array(
    '#type' => 'html_tag',
    '#tag' => 'link',
    '#attributes' => $attributes,
    '#weight' => $weight,
  );
  drupal_add_html_head($element, $key);
  return TRUE;
}