2010-08-19 17 views

risposta

12

Se Drupal è nel proprio dominio (ad esempio, http://example.com), il percorso assoluto sarà /sites/default/files/images/abc.jpg.

Se Drupal si trova in una sottocartella (ad esempio http://example.com/drupal), il percorso assoluto sarà /drupal/sites/default/files/images/abc.jpg.


Come ho spiegato nella mia risposta alla stessa domanda è stata eliminata, se si sta cercando di generare a livello di codice il percorso (cioè, non si sa dove la directory dei file è), è necessario utilizzare file_directory_path():

$image = file_directory_path() . "/images/abc.jpg"; 

Quindi, se i file sono in:

  • sites/default/files: $image = "sites/default/files/images/abc.jpg".
  • siti/esempio.com/file: $image = "sites/example.com/files/images/abc.jpg".

Supponendo che la tua domanda precedente è ancora il caso d'uso, si dovrebbe utilizzare l() e theme_image() per generare i link e le immagini, rispettivamente entro il modulo. Ciò garantirà che i percorsi generati siano corretti in base all'ambiente di Drupal.

Utilizzando l'output previsto che hai fornito in precedenza, una soluzione potrebbe essere:

// Images are in drupalroot/sites/default/files/images 
$path = file_directory_path() . '/images/'; 

$detail_file = 'detail_1.jpg'; 
$image_file = '1.jpg'; 

$img = theme('image', $path . $image_file); 

$options = array(
    'attributes' => array(
    'title' => t('Sample title for image 1 lorem ipsum'), 
), 
    'html' => TRUE, 
); 
$output = l($img, $path . $detail_file, $options); 

Quindi, supponendo che il sito è a http://example.com/, l'output sarà:

<a href="/sites/default/files/images/default_1.jpg" title="Sample title for image 1 lorem ipsum"> 
    <img src="/sites/default/files/images/1.jpg" height="<image height>" width="<image width>" /> 
</a> 

Ma se il vostro sito è stato in una sottocartella (ad esempio http://example.com/drupal), l'output sarà:

<a href="/drupal/sites/default/files/images/default_1.jpg" title="Sample title for image 1 lorem ipsum"> 
    <img src="/drupal/sites/default/files/images/1.jpg" height="<image height>" width="<image width>" /> 
</a> 
0

Ho provato la soluzione di mark e ho scoperto che la mia directory è "/sites/default/files/images/a.jpg"

Ma quando scrivo questo nei miei nodi come img src, non ha mostrato immagini correlate . Oltre Quando ho scritto "../sites/default/files/images/a.jpg" ha funzionato :)

Perché nel primo caso, Drupal ha cercato di trovare il file in "contenuti/siti/default /files/images/a.jpg "

4

Basta usare

$url_image = url('sites/default/files/'.file_uri_target($uri), array('absolute'=>true)); 

In questo caso si avrà un percorso di tipo" http://www.mywebsite.com/sites/default/files/images/ image.jpeg "

$ uri è un inte percorso finale, come "public: // images/image.jpeg"

Questo è Drupal 7, godere, lo amano

1

public:// vi darà il percorso assoluto della cartella pubblica

Esempio: per accedere

drupal/sites/default/files/images/ 

appena messo

public://images/ 
10

Per Drupal 7

$relativePath = "blabla/abc.jpg"; 

$uri = file_build_uri($relativePath); 

//show public://blabla/abc.jpg 
echo $uri; 

$url = file_create_url($uri); 

//show http://www.yoursite.com/sites/default/files/blabla/abc.jpg 
echo $url; 
Problemi correlati