我想在drupal中重定向到目标后加载js文件。我创建了一个带有hook_user_login的自定义模块。我在成功登录时重定向了一个页面,并希望在redirect.now文件加载到登录成功和重定向之间加载一个js文件。
function one_time_popup_user_login(&$edit, $account){
$userName='test';
if(!isset($_COOKIE[$userName])){
$count=1;
if($count==1)
{
drupal_add_js(array('one_time_popup' => array('aniv' => $anniversaryCount,'userName'=>$userName,'celeType'=>'Anniversary')), array('type' => 'setting'));
drupal_add_js(drupal_get_path('module', 'one_time_popup') . '/celebrationPopup.js','file');
$settings=variable_get('one_time_popup_effects',unserialize(ONE_TIME_POPUP_DEFAULT));
drupal_add_js(array('onetimepopupmenu'=>$settings),'settings');
setcookie($userName, '1', time()+(24 *3600));
}
if (!isset($_GET['destination'])) {
$_GET['destination'] = drupal_get_destination(); //get the current url
}
}
}
答案 0 :(得分:0)
我认为您需要在目标网页中安装JS。并告诉该页何时运行它。或者将其添加到以特定页面为目标的钩子中。
首先,我会在您的钩子中包含一些额外的验证,以便在用户尝试恢复密码时不会发生重定向。
了解我如何检查' user_pass_reset'表格ID在以下例子中:
使用其他JS函数启动JS
function one_time_popup_user_login(&$edit, $account) {
if (!isset($_POST['form_id']) || $_POST['form_id'] != 'user_pass_reset') {
$_GET['destination'] = 'your/custom/path#celebrationpopup';
}
}
注意我是如何将哈希(#celebrationpopup)添加到目标网址的。 稍后我们将在目标页面中使用它来运行我们需要的JS函数。
您需要放置在目标页面中的示例jQuery代码。为此,您需要在代码中加载函数one_time_popup()。这只是一个例子。
$(document).ready(function() {
//Get hash from URL
var hash = location.hash;
if (hash == '#celebrationpopup') {
one_time_popup();
}
});
另一种选择:使用钩子
如果目标网页是您可以使用的节点:
function one_time_popup_user_login(&$edit, $account) {
if (!isset($_POST['form_id']) || $_POST['form_id'] != 'user_pass_reset') {
$_GET['destination'] = 'your/custom/path?celebrationpopup=true';
}
}
function one_time_popup_node_view($node, $viewmode, $langcode) {
if($node->type == 'some_type' && isset ($_GET["celebrationpopup"])) // You can also use a node ID.
{
drupal_add_js(array('one_time_popup' => array('aniv' => $anniversaryCount,'userName'=>$userName,'celeType'=>'Anniversary')), array('type' => 'setting'));
$node->content['#attached']['js'][] = array
(
'type' => 'file',
'data' => drupal_get_path('module', 'one_time_popup') . 'js/celebrationPopup.js',
);
}
}
您也可以使用页面预处理功能。
希望这很清楚。