template_preprocess_file_link(&$variables)
Prepares variables for file link templates.
Default template: file-link.html.twig.
Parameters
array $variables: An associative array containing:
- file: A file object to which the link will be created.
- icon_directory: (optional) A path to a directory of icons to be used for files. Defaults to the value of the "icon.directory" variable.
- description: A description to be displayed instead of the filename.
- attributes: An associative array of attributes to be placed in the a tag.
File
- core/modules/file/file.module, line 1245
- Defines a "managed_file" Form API field and a "file" field for Field module.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | function template_preprocess_file_link(& $variables ) { $file = $variables [ 'file' ]; $options = array (); $file_entity = ( $file instanceof File) ? $file : File::load( $file ->fid); // @todo Wrap in file_url_transform_relative(). This is currently // impossible. As a work-around, we currently add the 'url.site' cache context // to ensure different file URLs are generated for different sites in a // multisite setup, including HTTP and HTTPS versions of the same site. // Fix in https://www.drupal.org/node/2646744. $url = file_create_url( $file_entity ->getFileUri()); $variables [ '#cache' ][ 'contexts' ][] = 'url.site' ; $mime_type = $file ->getMimeType(); // Set options as per anchor format described at $options [ 'attributes' ][ 'type' ] = $mime_type . '; length=' . $file ->getSize(); // Use the description as the link text if available. if ( empty ( $variables [ 'description' ])) { $link_text = $file_entity ->getFilename(); } else { $link_text = $variables [ 'description' ]; $options [ 'attributes' ][ 'title' ] = $file_entity ->getFilename(); } // Classes to add to the file field for icons. $classes = array ( 'file' , // Add a specific class for each and every mime type. 'file--mime-' . strtr ( $mime_type , array ( '/' => '-' , '.' => '-' )), // Add a more general class for groups of well known MIME types. 'file--' . file_icon_class( $mime_type ), ); // Set file classes to the options array. $variables [ 'attributes' ] = new Attribute( $variables [ 'attributes' ]); $variables [ 'attributes' ]->addClass( $classes ); $variables [ 'link' ] = \Drupal::l( $link_text , Url::fromUri( $url , $options )); } |
Please login to continue.