что включить?


Я пишу свою собственную PHP-программу в root или внутри модуля, который должен возвращать регистрационную форму. Содержание abc.php программа:

<?php
  $form1=drupal_get_form('user_register_form');
  $output1 = drupal_render($form1);
  echo $output1;
?>

На самом деле это вызывается функцией jQuery, и результат должен быть вставлен во всплывающий раздел. Но это дает мне ошибку:

Отменить поиск функции drupal_get_form.

Что мне нужно включить в файл, чтобы эта ошибка исчезла?

Заранее благодарю

 2
Author: Laxman13, 2011-07-29

3 answers

Ответ зависит от того, куда вы поместили PHP-файл. Вообще говоря, в Drupal вы не создаете файл, который загружает Drupal, но обычно вы создаете модуль или тему, которая вызывается Drupal после ее начальной загрузки или когда загрузка все еще не завершена (это относится к реализациям hook_boot()).

  • Внутри каталога модуля: Поскольку у вас есть модуль, все, что вам нужно сделать, это убедиться, что файл включен, когда модуль запущен. То есть что-то автоматически делает Drupal, если реализация hook_menu() аналогична следующей (это фактическая реализация, выполненная из модуля Книги). Когда пользователи получают доступ к "администратор/содержимое/книга/настройки", Drupal загружает файл book.admin.inc, содержащийся в каталоге, содержащем файл book.module.
function book_menu() {
  $items['admin/content/book'] = array(
    'title' => 'Books', 
    'description' => "Manage your site's book outlines.", 
    'page callback' => 'book_admin_overview', 
    'access arguments' => array('administer book outlines'), 
    'type' => MENU_LOCAL_TASK, 
    'file' => 'book.admin.inc',
  );
  $items['admin/content/book/list'] = array(
    'title' => 'List', 
    'type' => MENU_DEFAULT_LOCAL_TASK,
  );
  $items['admin/content/book/settings'] = array(
    'title' => 'Settings', 
    'page callback' => 'drupal_get_form', 
    'page arguments' => array('book_admin_settings'), 
    'access arguments' => array('administer site configuration'), 
    'type' => MENU_LOCAL_TASK, 
    'weight' => 8, 
    'file' => 'book.admin.inc',
  );

  // …
}
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
echo drupal_render(drupal_get_form('user_register_form'));

Существует несколько случаев, когда создание файла, подобного cron.php или update.php действительно необходимо, например, когда вы создаете soap.php файл, похожий на xmlrpc.php, но для запросов на МЫЛО. Для таких случаев, как ваш, вам просто нужно создать модуль и реализовать необходимые крючки.

 2
Author: kiamlaluno, 2017-04-13 12:47:09

Вы не должны писать код в автономных php-файлах и вызывать их (если вы не знаете, что делаете, и делаете это по соображениям производительности, чтобы избежать начальной загрузки Drupal при вызове чисто внешней веб-службы, одним из таких примеров может быть).

Вместо этого вам следует написать модуль. Используйте hook_menu, чтобы определить путь, который вы хотите прослушать, и создать функцию обратного вызова, которая будет обрабатывать входящие запросы. Выполнение этого таким образом позволит вам на самом деле использовать Drupal API.

Вы можете найти крючки и функции, которые вам нужно использовать, на справочном сайте API Drupal

 2
Author: googletorp, 2011-07-29 13:54:00

Для начала ознакомьтесь с http://drupal.org/developing/modules который проведет вас по разработке модулей в Drupal или проверит http://drupal.org/project/examples здесь показано, как использовать API Drupal.

 0
Author: nmillin, 2011-07-29 15:20:28