Par défaut, Drupal définit le passage de tous les fichiers comme un passage relatif, par exemple /sites/default/files/2022-03/dummy.pdf. Ainsi, si vous utilisez votre site Drupal comme une API (Rest ou graphQl) et que le texte wysiwyg (Body par exemple) contient des fichiers, votre site frontal (https://www.front-site.com) vous redirigera vers le mauvais passage parce que votre serveur frontal cherchera dans https://www.front-site.com/sites/default/files/2022-03/dummy.pdf, qui n'existe pas sur votre serveur frontal.

Alors comment convertir le passage de tous les fichiers en passage absolu ?

Pour changer le passage des fichiers, nous devons prétraiter le hook file_link et rendre l'URL absolue, pour ce faire nous utiliserons hook_preprocess_HOOK comme suit :

use Drupal\Core\Url;

/**
 * Implements hook_preprocess_HOOK().
 */
function [MODULE_NAME]_preprocess_file_link(&$variables) {
  if (isset($variables['link']['#url']) && $variables['link']['#url'] instanceof Url) {
    // Set url absolute to true.
    $variables['link']['#url']->setAbsolute(TRUE);
  }
}

Vous aurez maintenant :

après le hook
URL du fichier après l'implémentation du hook

Au lieu de :

avant le hook

 

Nous espérons avoir répondu à votre problématique. 

Vous avez un projet ? Contactez-nous pour en parler davantage : Contact

Auteur : Azz-eddine BERRAMOU

Share this article: