您在這裡

如何在node中呈現自訂的使用者個人資料的欄位......

hchsiao's 的頭像
hchsiao 在 2010-04-23 (週五) 09:16 發表

Dear 各位大大:

我用CCK定義了一個公告系統content(名稱為news),然後做了一個node-news.tpl.php的檔案,利用print_r($node)的功能,把公告起始時間,結束時間,公告內容....都抓出來了,而且也排版成我要的樣子,但是有一個地方我試不出來,就是我在print_r($node)抓到的$node->name是使用者帳號,可是為了系統安全及易讀性我希望呈現的是我利用profile模組建立的該使用者的所屬單位欄位(例如使用者帳號cc,單位是計算機中心,我希望呈現出來的是公告單位:計算機中心,而非公告單位:cc,但我目前只能做到「公告單位:cc」這種呈現方式),請問各位大大,我要如何在node-news.tpl.php設定呢??

煩請不吝賜教,謝謝......

不好意思,我還是試不出來耶
我到phpmyadmin看到 相關資料放在 profile-values 中
我曾想過用SQL語法去把資料抓出來

$sql = "SELECT * FROM {profile-values} WHERE uid = %d',$node->uid ";
$result = db_query($sql);

但總是出現warning.....不知有沒有大大可以給我一點提示及方向呢?

謝謝大魔王...我用你的提示網址試出來了.....

以下語法OK喔
profile_load_profile($user);
print_r($user);

想請問你怎麼做的呢, 因為我也是要在區塊中把兩個自訂欄位抓出來

不好意思....區塊我沒做過耶.....我是要把某些用CCK定義的content之node內容做我要的樣子
我是在node.tpl.php這樣的檔案中加入
比如說你在profile定義一個欄位叫unit
在node.tpl.php中加入
<?php
profile_load_profile($user);
print $user->profile_unit;
?>
就可以抓出該欄位.....
可是這樣只能給login User看到.....
訪客看不到....
我還在找解決方法.....傷腦筋啊.......

抱歉....我耍了一個烏龍......
上面語法抓到的是目前登入的使用者profile資訊,而非[發布這篇公告的作者]profile資訊......
之前因為只用自己一個人的帳號密碼登入登出測試,所以沒發現這個烏龍.....(難怪登出後就看不到了......有點笨啊)
經過修改,應該要這樣寫才對
<?php
$result = db_query('SELECT * FROM {profile_values} WHERE uid = %d', $node->uid);
$data = db_fetch_object($result);
?>
之後再用print_r($data);
看看裡面的欄位名稱,如print_r($data)後,資料是
stdClass Object ( [fid] => 1 [uid] => 34 [value] => 圖書館 )
那你就可以用
print ($data->value);
把[圖書館]show出來啦.....