Comment puis-je configurer Sitecore pour qu'il génère des liens absolus vers des éléments multimédias ?

StackOverflow https://stackoverflow.com/questions/5977809

Question

<sc:Image> et <sc:FieldRenderer>, lors du rendu d'un MediaItem, générez un code HTML qui ressemble à ce qui suit :

<img src="~/media/twitter.gif" alt="Twitter" width="100" height="22" />

Notez le chemin relatif utilisé dans src attribut:cela signifie que lorsqu'une telle image est réutilisée sur plusieurs pages, le navigateur doit la récupérer plusieurs fois (par ex.sur la page http://exemple.com/ et http://example.com/about-us/).Quand je génère le img balise dans le code, je peux utiliser l'extrait suivant pour forcer une URL absolue :

string url = Sitecore.StringUtil.EnsurePrefix('/',
    Sitecore.Resources.Media.MediaManager.GetMediaUrl(media));

Comment puis-je configurer Sitecore pour forcer la barre oblique dans les URL des médias ?

En utilisant Reflector, je peux voir que MediaOptions.AbsolutePath contrôle le comportement que je souhaite obtenir, mais je ne sais pas comment puis-je le définir pour les contrôles intégrés de Sitecore.Paramètre Media.MediaLinkPrefix ou mediaPrefixes dans web.config cela ne semble rien changer.

Était-ce utile?

La solution

J'ai travaillé sur un projet dans lequel nous stockions des ressources multimédias sur le CDN d'Akamai. Nous avons donc dû modifier la façon dont les URL multimédias étaient résolues.

Nous avons adapté le système intégré LinkProvider classe en changeant ExpandDynamicLinks().Nous avons également adapté Sitecore.Resources.Media.MediaProvider et mis à jour le GetMediaUrl() méthode.

Ceux-ci devaient gérer les liens vers les images générées par les moteurs de rendu de champ et les liens créés dans un éditeur de texte enrichi.

Autres conseils

Il existe une solution beaucoup plus simple à cela.Je me trompe peut-être un peu de syntaxe - n'hésitez pas à me corriger et j'apporterai des modifications.

MediaManager.GetItemUrl(item, new MediaUrlOptions { AbsolutePath = true });

Créer un lien vers un élément multimédia Sitecore

Vous ne pourrez pas récupérer l'élément multimédia à l'aide de la méthode LinkManager.GetItemUrl() ci-dessus.Sitecore dispose d'une API distincte pour récupérer les URL des médias.

public string ResolveSitecoreMediaURL(Sitecore.Data.Items.Item item)
{
   MediaUrlOptions mediaOptions= new MediaUrlOptions();
   mediaOptions.AlwaysIncludeServerUrl = true;
   mediaOptions.AbsolutePath =true;
   return Sitecore.Resources.Media.MediaManager.GetMediaUrl(item,mediaOptions);
}

Comme LinkManager avait les URLOptions, MediaManager est livré avec MediaUrlOptions où vous pouvez contrôler les URL absolues et relatives.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top