找到一個login destination模組,是控制登入後目的地的。 但是又不想用太多模組,以免升級時模組滯後。 1)是不是有比較簡單達到改變登入後目的地的方法,如幾行php code 2)前面有指導說 通過在路徑後加?destination=??, 可實現直接跳轉,但是這?destination=??是如何加到路徑上的呢? 謝謝! 模組/Modules5.x 發表回應前,請先登入或註冊 Re: 1 可以 hook_user 來達成 <?php function mymodule_user($op, &$edit, &$account){ switch($op){ case 'login': drupal_goto('mypath/xxx'); break; } } ?> $op 為 'login' 的時候表示使用者已經登入 此時使用 drupal_goto() 來把使用者轉向即可 如果只有 處理 login 的話 switch 的部分可以改成直接用 if($op == 'login') drupal_goto('path/xxx'); 2 destination 的部分 最簡單的做法就是直接打在路徑後面 或是用drupal產生連結的funciton => l('登入', 'user/login', Null, 'destination=path/xxx') 來建立連結 (function 是小寫 L) 用內建的 menu 應該是沒辦法使用 如果是用 user/login 頁面來進行登入 可以建立一個連結為 user/login?destination=path/xxx 點選該連結後 還是會顯示相同的登入表單 但是送出之後會被導至 destination 所設定的路徑 destination 的設定 必須是表單 或是該頁面有使用 drupal_goto() 來轉向 才會有作用 因為 drupal_goto() 會去檢查是否有設定 destination 至於如果是要修改 user login block 的話 則必須在 form_alter 裡面 去修改 user_login_block 這個表單的 form['action'] 所以單就登入來講的話 不管是用 user/login 頁面登入 或是用 user login block 登入 都會被 hook_user 下的 $op == 'login' 處理到 直接在 hook_user 下面寫應該是比較方便的 發表回應前,請先登入或註冊 Re: 如何控制登入後訪問的第一頁 敬禮先,再謝謝,你的回複讓我解決了這個問題,還讓我知道了background knowledge. 發表回應前,請先登入或註冊 Re: 写的很好,再问一下: drupal默认的发表内容后的redirected路径是什么?我的怎么提交完一篇内容后就显示一个这样的连接:The user is being redirected to http://127.0.0.1/drupal-5.6/node/79#comment-18.不能直接回到刚才发布内容的页,和这里不一样,这个网站的代码做过修改吗? 發表回應前,請先登入或註冊
Re: 1 可以 hook_user 來達成 <?php function mymodule_user($op, &$edit, &$account){ switch($op){ case 'login': drupal_goto('mypath/xxx'); break; } } ?> $op 為 'login' 的時候表示使用者已經登入 此時使用 drupal_goto() 來把使用者轉向即可 如果只有 處理 login 的話 switch 的部分可以改成直接用 if($op == 'login') drupal_goto('path/xxx'); 2 destination 的部分 最簡單的做法就是直接打在路徑後面 或是用drupal產生連結的funciton => l('登入', 'user/login', Null, 'destination=path/xxx') 來建立連結 (function 是小寫 L) 用內建的 menu 應該是沒辦法使用 如果是用 user/login 頁面來進行登入 可以建立一個連結為 user/login?destination=path/xxx 點選該連結後 還是會顯示相同的登入表單 但是送出之後會被導至 destination 所設定的路徑 destination 的設定 必須是表單 或是該頁面有使用 drupal_goto() 來轉向 才會有作用 因為 drupal_goto() 會去檢查是否有設定 destination 至於如果是要修改 user login block 的話 則必須在 form_alter 裡面 去修改 user_login_block 這個表單的 form['action'] 所以單就登入來講的話 不管是用 user/login 頁面登入 或是用 user login block 登入 都會被 hook_user 下的 $op == 'login' 處理到 直接在 hook_user 下面寫應該是比較方便的 發表回應前,請先登入或註冊
Re: 写的很好,再问一下: drupal默认的发表内容后的redirected路径是什么?我的怎么提交完一篇内容后就显示一个这样的连接:The user is being redirected to http://127.0.0.1/drupal-5.6/node/79#comment-18.不能直接回到刚才发布内容的页,和这里不一样,这个网站的代码做过修改吗? 發表回應前,請先登入或註冊
Re:
1 可以 hook_user 來達成
<?php
function mymodule_user($op, &$edit, &$account){
switch($op){
case 'login':
drupal_goto('mypath/xxx');
break;
}
}
?>
$op 為 'login' 的時候表示使用者已經登入
此時使用 drupal_goto() 來把使用者轉向即可
如果只有 處理 login 的話 switch 的部分可以改成直接用 if($op == 'login') drupal_goto('path/xxx');
2 destination 的部分
最簡單的做法就是直接打在路徑後面
或是用drupal產生連結的funciton => l('登入', 'user/login', Null, 'destination=path/xxx') 來建立連結 (function 是小寫 L)
用內建的 menu 應該是沒辦法使用
如果是用 user/login 頁面來進行登入
可以建立一個連結為 user/login?destination=path/xxx
點選該連結後 還是會顯示相同的登入表單
但是送出之後會被導至 destination 所設定的路徑
destination 的設定
必須是表單
或是該頁面有使用 drupal_goto() 來轉向
才會有作用
因為 drupal_goto() 會去檢查是否有設定 destination
至於如果是要修改 user login block 的話
則必須在 form_alter 裡面
去修改 user_login_block 這個表單的 form['action']
所以單就登入來講的話
不管是用 user/login 頁面登入
或是用 user login block 登入
都會被 hook_user 下的 $op == 'login' 處理到
直接在 hook_user 下面寫應該是比較方便的
Re: 如何控制登入後訪問的第一頁
敬禮先,再謝謝,你的回複讓我解決了這個問題,還讓我知道了background knowledge.
Re:
写的很好,再问一下:
drupal默认的发表内容后的redirected路径是什么?我的怎么提交完一篇内容后就显示一个这样的连接:
The user is being redirected to http://127.0.0.1/drupal-5.6/node/79#comment-18.不能直接回到刚才发布内容的页,和这里不一样,这个网站的代码做过修改吗?