2011-06-29 38 views
10

Làm cách nào tôi có thể gọi hàm Drupal hoặc nhận biến toàn cầu trong tệp PHP nằm trong thư mục cài đặt drupal. Tôi làm nó lần đầu tiên. Có bất kỳ tệp nào tôi cần đưa vào mã của tôi để truy cập vào hàm hoặc biến Drupal không?Gọi hàm Drupal trong tệp PHP bên ngoài

+0

có thể trùng lặp: http://stackoverflow.com/questions/5014244/drupal-how-to-access-to-drupals-apis-with-a-standalone-php-script – Laxman13

+2

Tôi mạnh mẽ recmmend mà bạn xem xét viết một mô-đun thay vì thêm các tệp PHP tùy ý cho những thứ phải là một phần của trang web. Và đối với các kịch bản lệnh, bạn có thể viết các tập lệnh drush (http://drupal.org/project/drush). – Berdir

+0

@Berdir Tôi đang sử dụng nó cho mục đích thử nghiệm. –

Trả lời

7

Taken từ các câu hỏi liên quan trong các bình luận trên

Bạn cần phải Bootstrap Drupal trong file PHP bên ngoài:

/** bootstrap Drupal **/ 
chdir("/path/to/drupal/site/htdocs"); 
require_once './includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 

Hãy chắc chắn để thay đổi đường dẫn để cài đặt Drupal của bạn, sau đó thêm mã của bạn bên dưới mã được đăng ở trên.

+0

điều này sẽ không hoạt động trong drupal 8 – tremor

10

Nếu ở trên giải thích ví dụ không hoạt động thử điều này:

$path = $_SERVER['DOCUMENT_ROOT']; 
chdir($path."/drupal"); 
define('DRUPAL_ROOT', getcwd()); //the most important line 
require_once './includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
+0

này trông giống như một lai của cả hai drupal 6 và drupal 7 – ErichBSchulz

+1

Điều này là tốt và làm việc với tôi trong drupal 7 – zhilevan

1
define('DRUPAL_ROOT', getcwd()); 
require_once './includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 

Đoạn mã trên làm việc cho tôi, khi kịch bản là trong thư mục gốc Drupal của tôi. Điều này tải hoàn toàn tất cả mọi thứ, không chỉ lõi Drupal, bao gồm cả móc mô-đun đóng góp.

0
define('DRUPAL_ROOT', getcwd()); 

require_once DRUPAL_ROOT . '/includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
global $user; 
print_r($user); 
+0

Câu hỏi này đã có một câu trả lời được chấp nhận. Nếu câu trả lời của bạn là một cải tiến, bạn nên thêm một số chi tiết giải thích lý do tại sao. –

Các vấn đề liên quan