2017-08-31 29 views
0

drupalで宛先にリダイレクトした後にjsファイルをロードします。 hook_user_loginを使用してカスタムモジュールを作成しました。ログインに成功するとページをリダイレクトし、redirect.nowファイルがログイン成功からリダイレクトまでの間にロードされた後にjsファイルをロードします。リダイレクト後に成功したログインで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

あなたはあなたの宛先ページに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'; 
    } 
} 

お知らせを別のJS関数を使ってJSを焼成:

は、私は、次のexampesの 'user_pass_reset' 形式のIDをチェックしていますどのように参照してください。 #celebrationpopup)を宛先URLに追加します。 私たちが必要とする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', 
    ); 
    } 
} 

あなたにもページの前処理機能を使用する場合があります。

これは明らかです。

関連する問題