2010-10-18 21 views
6

Wewnątrz modułu Drupala muszę uzyskać ścieżkę podstawową, na której jest zainstalowana witryna Drupal.Jaki jest prawidłowy sposób uzyskania zainstalowanego katalogu głównego Drupala?

Na przykład, jeśli strona jest Drupal zainstalowane na: www.example.com/mysite/ następnie chcę uzyskać '/ var/www/myseite'

Jeśli jest on zainstalowany w: www.example.com/ następnie chcę "/ var/www"

Jaki jest właściwy sposób Drupal, aby to uzyskać? Chcę uniknąć zmiennych serwerowych PHP, ponieważ czytam, że są niewiarygodne.

(Drupal 6 Drupal 7)

+0

W tym pytaniu nie było dla mnie jasne. Chciałem root dokumentu. – Justin

Odpowiedz

10

W Drupal 7 istnieje nowa stała o nazwie DRUPAL_ROOT, której można użyć do tego celu.

1

base_path() czyni to zarówno D6 i D7.

+0

base_path() nie zwraca ścieżki docroot takiej jak "/ var/www/mysite". – zsd

2

Dodawanie do Scotta Reynen za odpowiedź:

w szablonie page.tpl.php, jest również dostępna w zmiennej $base_path.

W wielu przypadkach nie trzeba nawet znać ścieżki podstawowej, ponieważ funkcje API Drupal same ją dodają. Na przykład, aby wydrukować linku, można to zrobić:

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

ale "Drupal drogę", aby to zrobić jest użycie l() funkcja:

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

L() funkcja automatycznie doda ścieżkę podstawową do href.

+0

Dzięki, to prawda, ale nie było jasne w moim pytaniu. Chcę root dokumentu. Powyższe poprawki powinny pomóc w wyjaśnieniu. – Justin

+0

Nie sądzę, że Drupal ma do tego określoną funkcję. Drupal zawsze stara się być agnostykiem wobec środowiska serwera. Chodzi o to, że używasz funkcji API, nie powinieneś znać ścieżki serwera. – marcvangend

5

Aby uzyskać pełną korzenia dokumentu systemu plików używam:

$_SERVER['DOCUMENT_ROOT'] . base_path() 

Na serwerze Linux otrzymasz coś takiego:

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

Jeśli tylko użyć „base_path()” , dostaniesz tylko:

/mysite/ 

samo na Drupal 6 i 7.

0

Możesz użyć stałej DRUPAL_ROOT dla tego.

+0

Przeczytaj inne odpowiedzi przed przystąpieniem do reklamowania. – manuell

Powiązane problemy