Используйте drupal_add_js перед drupal_goto - PullRequest
2 голосов
/ 01 августа 2011

На моем сайте Drupal мне нужно перенаправить пользователя на определенную страницу, а затем выполнить som-javascript-код после загрузки страницы (чтобы добавить модальное диалоговое окно вверху страницы). После некоторого чтения я попробовал это в моем файле модуля:

drupal_add_js(drupal_get_path('module', 'mymodule') . '/scripts.js', 'module');
drupal_goto('path/to/redirect');

А потом в моем файле JavaScript (scripts.js):

Drupal.behaviors.mymodule_behaviour = function (context) 
{
  // do some fancy stuff
};

Это не работает, потому что при запуске drupal_goto javascript удаляется со страницы. Есть ли способ сохранить JavaScript и убедиться, что он запускается после загрузки страницы?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Почему бы не создать специальный путь в hook_menu, который добавляет JS, а затем перенаправить на этот путь из того места в вашем коде, где вы знаете, что вам нужно добавить JS.

Что-то вроде этого в вашем hook_menu:

$menu['path/to/redirect/JS'] = array(
 'page callback'  => 'my_callback',
 'page arguments' => array(TRUE), // this will pass TRUE as param 1 to the callback
);

$menu['path/to/redirect'] = array(
 'page callback'  => 'my_callback',
 'page arguments' => array(FALSE),
);

...

function my_callback($add_JS = FALSE) { // $add_JS will be set to TRUE
 if ($add_JS) {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/scripts.js', 'module');
 }
}

...

Когда вы хотите, чтобы JS добавил:

drupal_goto ('путь / к / перенаправление/ JS ');

Таким образом, вам не нужен специальный обратный вызов страницы или переменная GET, просто специальный путь, который выглядит красиво и чисто.

1 голос
/ 01 августа 2011

Вам нужно будет включить drupal_add_js(drupal_get_path('module', 'mymodule') . '/scripts.js', 'module'); на страницу, на которую вы перенаправляете, а не на страницу, с которой вы перенаправляете.

...