2

There is a way to define a specific bootstrap mode for a hook_menu URL (MENU_CALLBACK)?

I just want the request returns to me a result of a simple query in JSON and for that, I don´t need load the Drupal bootstrap in full mode, damaging the response performance.

Thanks!

2

It's not possible, because hook_menu() is invoked when Drupal is completely bootstrapped, also because only when Drupal has been completely bootstrapped, all the modules are loaded; only in this case all the menu callbacks defined in hook_menu() are available.

If you really need to limit the bootstrap to a phase, then you can write a file that is similar to index.php, for example.

define('DRUPAL_ROOT', getcwd());

require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
menu_execute_active_handler();

An example of file used for a specific task is cron.php.

define('DRUPAL_ROOT', getcwd());

include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

if (!isset($_GET['cron_key']) || variable_get('cron_key', 'drupal') != $_GET['cron_key']) {
  watchdog('cron', 'Cron could not run because an invalid key was used.', array(), WATCHDOG_NOTICE);
  drupal_access_denied();
}
elseif (variable_get('maintenance_mode', 0)) {
  watchdog('cron', 'Cron could not run because the site is in maintenance mode.', array(), WATCHDOG_NOTICE);
  drupal_access_denied();
}
else {
  drupal_cron_run();
}

Generally, there isn't the need to limit the bootstrap, only to serve data in JSON format. Creating a file like cron.php should be done for a dedicated task that is time consuming, or for limiting the pages being served, as with install.php.

0

Try this module: https://www.drupal.org/project/js It does not let you choose the bootstrap level, but it allows you to define a callback that only loads the bare bone of drupal.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.