您在這裡

如何用"暱稱"替代帳號名稱

vnsjustin's 的頭像
vnsjustin 在 2007-01-15 (週一) 18:57 發表

我在 設定/個人資訊 下新增一個欄位"暱稱". 請問要做甚麼樣的設定讓"暱稱"替代使用者帳號出現在網站上? 謝謝~~

還速實作不出~>w<…

(1)修改了template

由於我的版型為magazeen,所以在function和return都下了

function phptemplate_magazeen_username($object) {
if ($object->in_preview) {
return theme_username($object);
}
return phptemplate_magazeen_callback('username', array('object' => $object));
}

(2)增加一個username.tpl.php(有先於profile去增加一個叫name的個人欄位~然後於下面的代碼都有改上~

$profilename = $object->name;
if (!empty($account->profile_fullname)) {
$profilename = $account->profile_fullname;
}


<?php
if ($object->uid && $object->name) {
// If the user has a full name defined, use that
$account = user_load(array(uid => $object->uid));
$profilename = $object->name;
if (!empty($account->profile_fullname)) {
$profilename = $account->profile_fullname;
}
// Shorten the name when it is too long or it will break many tables.
if (drupal_strlen($profilename) > 20) {
$name = drupal_substr($profilename, 0, 15) .'...';
}
else {
$name = $profilename;
}
if (user_access('access user profiles')) {
$output = l($name, 'user/'. $object->uid, array('title' => t('View user profile.')));
}
else {
$output = check_plain($name);
}
}
else if ($object->name) {
// Sometimes modules display content composed by people who are
// not registered members of the site (e.g. mailing list or news
// aggregator modules). This clause enables modules to display
// the true author of the content.
if ($object->homepage) {
$output = l($object->name, $object->homepage, array('title' => t('View link')));
}
else {
$output = check_plain($object->name);
}
$output .= ' ('. t('not verified') .')';
}
else {
$output = variable_get('anonymous', 'Anonymous');
}
print $output;

心中常存善解、包容、感思、知足、惜福 (靜思語錄)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

修改drupal theme.inc中的code,要修改登入名稱
實驗整段code拿掉~也無法將登入的帳號名也拿掉。

/**
* Format a username.
*
* @param $object
* The user object to format, usually returned from user_load().
* @return
* A string containing an HTML link to the user's page if the passed object
* suggests that this is a site user. Otherwise, only the username is returned.
*/
function theme_username($object) {

xxxxxxx
}

找到相關代碼~但不知要如何修改較為妥當 =oo="
先到profile建立一個欄位(例profile_name)
但怎改也不對

global $user;
if ($block->subject == $user->name && isset($user->profile_name)) {
$block->subject = $user->profile_name;
}

http://drupal.org/node/67741 -->這也不支原了~~

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

kay.L
有使用real name 模組~但是如下圖所示的它的登入後的部份還是沒變~

及而是使用者列表都變了~然後以下是我的的real name 設定
http://drupaltaiwan.org/files/admin_1.PNG
http://drupaltaiwan.org/files/admin_2.PNG
http://drupaltaiwan.org/files/admin_3.PNG (是指這裡需修改嘛?)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

real name 模組好像只能到線上人數和使用者管理還有節點類頁面會秀真實名字~
但在登入的那個帳號的部份無法秀出~

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

真的不行就改區塊的樣板吧
自行控制區塊標題的輸出

在版型增加 block-user-1.tpl.php ,複製貼上 block.tpl.php 的內容,然後把

<?php if (!empty($block->subject)): ?>

<?php print $block->subject ?>

<?php endif;?>

這一段改成

<?php print empty($user->profile_fullname) ? $user->name:$user->profile_fullname ?>

ps. $user->profile_fullname 我隨便打的,看你暱稱放在哪個變數就把它換掉

hom:
   我覺得好奇怪…之前照這樣做能秀出暱稱。但現在卻秀不出來~
   有清掉快取結果還是捉不到profile_name的值~~

">
module .'-'. $block->delta; ?>" class="block block-<?php print $block->module ?> <?php if ($themed_block): ?>themed-block<?php endif; ?>">
<?php if ($block->subject): ?>
<?php if ($themed_block): ?>

<?php endif; ?>

<?php print empty($user->profile_name) ? $user->name:$user->profile_name ?>

<?php endif; ?>

<?php print $block->content ?>

心中常存善解、包容、感思、知足、惜福 (靜思語錄)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

於中block-user-1.tpl.php 樣版
<?php print_r($user) ?> 印出有無profile_fullname 的部份~
結果完全沒有…

心中常存善解、包容、感思、知足、惜福 (靜思語錄)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

我要修改登入後的區塊~當使用者登入後看到的是暱稱而不是帳號
http://drupaltaiwan.org/files/block_user.PNG
所以就以hom的方式自行控制區塊標題的輸出
在版型增加 block-user-1.tpl.php ,複製貼上 block.tpl.php 的內容,然後把h2和/h2之間的

<?php if (!empty($block->subject)): ?>

<?php print $block->subject ?>

<?php endif;?>


改成

<?php print empty($user->profile_fullname) ? $user->name:$user->profile_fullname ?>

而其中profile_fullname是admin/user/profile所設定的欄位~

心中常存善解、包容、感思、知足、惜福 (靜思語錄)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

joe還是秀不出來profile_fullname變數中的東西

之後再印出來看它的array是出現以下訊息


[profile_fullname] => 李小芳 [content] => Array ( [個人檔案] => Array ( [#type] => user_profile_category [#title] => 個人檔案 [profile_fullname] => Array ( [#type] => user_profile_item [#title] => 姓名 [#value] => 李小芳 [#weight] => 0 [#attributes] => Array ( [class] => profile-profile_fullname ) ) ) ) )

心中常存善解、包容、感思、知足、惜福 (靜思語錄)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

還是不行

">
module .'-'. $block->delta; ?>" class="block block-<?php print $block->module ?> <?php if ($themed_block): ?>themed-block<?php endif; ?>">
<?php if ($block->subject): ?>
<?php if ($themed_block): ?>

<?php endif; ?>
<?php
global $user;
profile_view_profile($user);
?>

<?php print empty($user->content['個人檔案']['profile_fullname']) ? $user->name:$user->content['個人檔案']['profile_fullname']['#value']?>

<?php //print_r($user) ?>
<?php endif; ?>

<?php print $block->content ?>

結果print出來看~變成以下~好奇怪的是一直捉不到[profile_fullname]這個


=> Array ( [8] => 8 ) [contact] => 1 [remember_me] => [roles] => Array ( [2] => authenticated user [3] => 最高管理者 [8] => -系統管理者 ) [profile_fullname] => 李小芳 [content] => Array ( [個人檔案] => Array ( [#type] => user_profile_category [#title] => 個人檔案 [profile_fullname] => Array ( [#type] => user_profile_item [#title] => 姓名 [#value] => 李小芳 [#weight] => 0 [#attributes] => Array ( [class] => profile-profile_fullname ) ) ) ) )

心中常存善解、包容、感思、知足、惜福 (靜思語錄)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

後來也試了以下的方式終於試出來~>w<…感動~~供大家參考了~~

<?php global $user; print ($block->module == 'user' && $block->subject == $user->name) ? theme('username', $user) : $block->subject ?>

心中常存善解、包容、感思、知足、惜福 (靜思語錄)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)