2010-10-18 8 views
6

All'interno di un modulo Drupal ho bisogno di ottenere il percorso di base in cui è installato il sito Drupal.Qual è il modo corretto per ottenere Drupal root del documento installato?

Ad esempio, se il sito Drupal è installato in: www.example.com/mysite/ allora voglio ottenere '/ var/www/myseite'

se è installato in: www.example.com/ poi voglio '/ var/www'

Qual è il modo corretto di Drupal per ottenere questo? Voglio evitare le variabili del server di PHP, mentre leggo sono inaffidabili.

(Drupal 6 e Drupal 7)

+0

Non mi è stato chiaro in questa domanda. Volevo la radice del documento. – Justin

risposta

10

In Drupal 7, c'è una nuova costante chiamata DRUPAL_ROOT che è possibile utilizzare per questo.

1

base_path() fa questo sia D6 e D7.

+0

base_path() non restituisce il percorso di docroot come '/ var/www/mysite'. – zsd

2

aggiunta alla risposta di Scott Reynen:

Nel modello page.tpl.php, è disponibile nella variabile $base_path anche.

In molti casi, non è nemmeno necessario conoscere il percorso di base, poiché le funzioni API di Drupal lo aggiungono da soli. Per esempio, per stampare un link, si potrebbe fare questo:

<?php print '<a href="' . base_path() . 'foo/bar">Foo Bar</a>'; ?> 

Ma la "via Drupal" per farlo è quello di utilizzare la l) la funzione (:

<?php print l('Foo Bar', 'foo/bar'); ?> 

L() funzione aggiungerà automaticamente il percorso di base a href.

+0

Grazie, questo è corretto ma non ero chiaro nella mia domanda. Voglio la radice del documento. Le modifiche sopra dovrebbero aiutare a chiarire. – Justin

+0

Non penso che Drupal abbia una funzione specifica per questo. Drupal cerca sempre di essere indipendente dall'ambiente del server. L'idea è che usi le funzioni API, non dovresti conoscere il percorso del server. – marcvangend

5

Per ottenere la radice documento completo del file system che uso:

$_SERVER['DOCUMENT_ROOT'] . base_path() 

su un server Linux si otterrà qualcosa di simile a:

/var/www/html/www.example.com/mysite/ 

Se si utilizza solo "base_path()" , si otterrà solo:

/mysite/ 

Same su Drupal 6 e 7.

0

È possibile utilizzare la costante DRUPAL_ROOT per questo.

+0

Leggi le altre risposte prima di aggiungere le tue. – manuell

Problemi correlati