Bonne pratique url simplifiées / images

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Nous utilisons Drupal sur plusieurs serveurs de préproduction, parfois dans des sous répertoire et nous utilisons des urls relatifs de type : site/default/files/nomimage

Sauf que dès qu'on passe en url simplifiées ça en fonctionne plus, les images ne sont plus là... Quelle est la bonne pratique pour ne plus avoir ce genre de problème et ne pas être obligée de retapé le chemin entier quand on passe en url simplifiée.

Merci d'avance

Version de Drupal : 

L'explication est simple.

Dans le cas des url non simplifiés, on a par exemple :
www.exemple.com/?q=node/1
Si ici on utilise une url relative de type site/default/files/nomimage (sans / au début), ceci donne au final :
www.exemple.com/site/default/files/nomimage
Ca fonctionne

Dans le cas des url simplifiés, on a par exemple :
www.exemple.com/node/1
Si ici on utilise une url relative de type site/default/files/nomimage (sans / au début), ceci donne au final :
www.exemple.com/node/1/site/default/files/nomimage
Ce ne marche plus

On pourrait donc conclure :
J'utilise /site/default/files/nomimage a la place de site/default/files/nomimage et le soucis sera reglé !
Oui ... et (surtout) non. site/default/filtes est le repertoire par defaut, il peut être changé. Et dans ce cas, ça voudrait dire que notre chemin ves l'image est fortement lié a la configuration du site. Ca, c'est mal :)

L'astuce, c'est d'utiliser la fonction file_directory_path() qui va se charger de retourner le bon chemin vers le "files" du sites. (et avec base_path() c'est encore plus joli)
Dans un template, ca pourrait donner quelque chose du genre :

<img src="<?php print base_path() . file_directory_path(); ?>/nomimage.jpg" alt="" />

Merci Haza,

Dans le template ok.

Pour ce qui est des images insérées dans les contenus, et notamment avec IMCE pour les tests / validations clients comment pratiquez-vous ?

Chemin en dur du serveur provisoire puis requêtes SQL sur le serveur définitif ?

? autrement

Merci pour vos retours.

Pas compris...

Il me semble que IMCE fait rajoute ses fichiers avec un "/" devant l'url relative des fichiers/images. Pour le "mais il est où le files", devrait se débrouiller tout seul, vu qu'il sait où chercher les fichiers de toutes facon. Evidement, l'environnement de test/dev doit être identique a la prod dans ce cas là.