使用templates 自定user 頁

終於來到預定的templates 最後一章
這次只是給多一個例子給大家參考
並沒有新的技術, 函數要認識, 使用

在一個用戶登入之後,
預設會到逹 user/[uid] 頁面
今次的目的就是改動這個頁面
例如:

  • 令登入都立即看到自己建立的nodes ( 配合使用views )
  • 不同的登入id 使用不同的頁面
  • 不同的roles 使用不同的頁面
  • 不同的profile fields(例如"城市")到不同的頁面

等等
建立社區主導的網站應該會使用到這個教學

因為url 為 user/[uid]
很有機會相關的輸出都是來自user/module
打開user/module, 到 user_menu() 函數
line 810 的 'path' 為 user/arg(1)
callback 到 user_view() 函數

line 1504 user_view(), 最後的一句:

<?php
 
return theme('user_profile', $account, $fields);
?>

找到了

到 user.module 內的 line 654, theme_user_profile()
將內裏的內容放到新建的 user_profile.tpl.php
'return' 改為 'print'
template 文件(user_profile.tpl.php) 放到你的theme 的目錄之下
user.module 的部份完成

到template.php 了, 打開你的theme 之下的template.php
新建一個函數, [theme_name]_user_profile()

<?php
function joe2_user_profile($account, $fields) {
  return
_phptemplate_callback( //此函數令drupal 找*.tpl.php
   
'user_profile', //找user_profile.tpl.php 文件來使用
   
array( 'account'=>$account , 'fields'=>$fields ), //傳給 user_profile.tpl.php
   
array( 'user_profile_'.$account->uid ) //根據你的特別要求, 使用不同的template, 注(一)
 
);
}
?>


注一:
這個例子建議使用user_profile_[uid].tpl.php (如有)
你也可以使用:
<?php
   
array( 'user_profile_'.$account->role )
?>

建議使用user_profile_[role].tpl.php (如有)

可以再配合template redirect, 轉到views 頁面等等,
就看你的創意了

以後要自定user 頁,
只要修改user_profile.tpl.php 就可以了

Google