您在這裡

線上人數列出名字

想詢問~若線上人數想讓它旁邊出現使用者的名字要怎制作呢?
有用profile建一個profile_name來記使用者名字~
是不是得修改模組中的user.module但profile_name是記在另一張資料表中~>w<

// Display a list of currently online users.
$max_users = variable_get('user_block_max_list_count', 10);
if ($authenticated_count && $max_users) {
$output .= theme('user_list', $items, t('Online users'));
}

附加檔案大小
Image icon 線上使用者.PNG3.44 KB

如果是用套版來做修改
把下面的程式碼貼到版型內的 template.php 試試看


<?php
//覆寫輸出使用者列表的 theme_user_list
function phptemplate_user_list($users, $title = NULL) {
if (!empty($users)) {
foreach ($users as $user) {
$user->name = $user->profile_name;
$items[] = theme('username', $user);
}
}
return theme('item_list', $items, $title);
}
?>

hom謝謝您:
(>w<有機會drupal的成員們下來雲林請您們吃我們家的蚵仔煎~~ >w<…)

但我的出現了如下的訊息!

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

改成下面這樣

<?php
function phptemplate_user_list($users, $title = NULL) {
if (!empty($users)) {
foreach ($users as $user) {
$account = user_load(array('uid' => $user->uid));
if( $account->profile_name) $user->name = $account->profile_name;
$items[] = theme('username', $user);
}
}
return theme('item_list', $items, $title);
}
?>

這我剛剛有實際覆寫過是 ok 的
$users 裡面只有 uid 和 帳號的資料,跟一般的 user object 不太一樣
需要另外用 user_load 讀取使用者資料
中間多加一個有設定 profile_name 才套用的判斷
避免沒有設定 profile_name ,造成登入時被顯示成訪客

hom~

(1)登入帳號密碼後會引導入一頁空白頁說

(2)然後重新整理頁面後還是有出現如下圖示中的問題

* warning: Cannot modify header information - headers already sent by (output started at C:\cfd2\htdocs\cfd\sites\all\themes\nigraphic\template.php:30) in C:\cfd2\htdocs\cfd\includes\session.inc on line 101.
* warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent in C:\cfd2\htdocs\cfd\includes\session.inc on line 104.

而且都指到session.inc的101行和104行之中~去includes\session.inc看也沒看不出什麼問題

if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}

session_regenerate_id();

(3)然後再重新整理頁面就沒上述問題。 >w<但每次登入帳號密碼就得會遇到(1)和(2)的問題…好奇怪哦

會不會跟我的版本的關系呢?我的是drupal 6.x的

謝謝>w<

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

我是用 6.x 的 garland 版型做測試
沒有遇到這樣的問題

把覆寫的部份註解掉,看看是不是還有一樣的問題
然後也用 garland 版型做修改測試看看
不然可能要請你提供一下 template.php
看看裡面到底改了什麼東西

hom我改回garland 版型都沒出現那些問題了耶!! =_="
我剛出現錯誤訊息的版型是使用007 niGraphic Studio的版型…

而我的template.php就只有放hom所提供的程式檔案權限和人數

hom問你一個問題哦~是不是測試程式和模組是不是都先用預設的garland 版型來做。
而若要修改版型是不是以預設的garland 版型來做修改比較不會有問題呢?

>w<

謝謝

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

開發新功能的時候
通常會比較喜歡先在單純的環境上測試
預設模組 + 預設版型,比較不會出現程式產生衝突的狀況
出現錯誤時也比較好抓出來

而且突然想到一個疑問說~我是不是不能用profile模組建一個profile_name來記使用者名字。
因為就變成它是記到另一張資料表中~

以下是我用profile模組建一個profile_name後產生的資料表

-- 資料表格式: `profile_fields`
--

CREATE TABLE IF NOT EXISTS `profile_fields` (
`fid` int(11) NOT NULL auto_increment,
`title` varchar(255) default NULL,
`name` varchar(128) NOT NULL default '',
`explanation` text,
`category` varchar(255) default NULL,
`page` varchar(255) default NULL,
`type` varchar(128) default NULL,
`weight` tinyint(4) NOT NULL default '0',
`required` tinyint(4) NOT NULL default '0',
`register` tinyint(4) NOT NULL default '0',
`visibility` tinyint(4) NOT NULL default '0',
`autocomplete` tinyint(4) NOT NULL default '0',
`options` text,
PRIMARY KEY (`fid`),
UNIQUE KEY `name` (`name`),
KEY `category` (`category`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

-- 資料表格式: `profile_values`
--

CREATE TABLE IF NOT EXISTS `profile_values` (
`fid` int(10) unsigned NOT NULL default '0',
`uid` int(10) unsigned NOT NULL default '0',
`value` text,
PRIMARY KEY (`uid`,`fid`),
KEY `fid` (`fid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

而且錯誤訊息是說...>W<不理解意思?

*警告:無法修改標題訊息-標題已經發出的(輸出開始在C : \ cfd2 \ htdocs \的CFD \網站\所有\主題\ nigraphic \ template.php : 32 )在C : \ cfd2 \ htdocs \的CFD \包括\ session.inc上線101 。
*警告: session_regenerate_id ( ) [ function.session -再生編號] :無法再生會議編號-標題已經發出已在C : \ cfd2 \ htdocs \的CFD \包括\ session.inc上線104 。

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