Dear 各位大大:
我用CCK定義了一個公告系統content(名稱為news),然後做了一個node-news.tpl.php的檔案,利用print_r($node)的功能,把公告起始時間,結束時間,公告內容....都抓出來了,而且也排版成我要的樣子,但是有一個地方我試不出來,就是我在print_r($node)抓到的$node->name是使用者帳號,可是為了系統安全及易讀性我希望呈現的是我利用profile模組建立的該使用者的所屬單位欄位(例如使用者帳號cc,單位是計算機中心,我希望呈現出來的是公告單位:計算機中心,而非公告單位:cc,但我目前只能做到「公告單位:cc」這種呈現方式),請問各位大大,我要如何在node-news.tpl.php設定呢??
煩請不吝賜教,謝謝......
Re: ...
try一下這方式看看
http://drupal.org/node/35728
心中常存善解、包容、感思、知足、惜福 (靜思語錄)
Re: ...
不好意思,我還是試不出來耶
我到phpmyadmin看到 相關資料放在 profile-values 中
我曾想過用SQL語法去把資料抓出來
如
$sql = "SELECT * FROM {profile-values} WHERE uid = %d',$node->uid ";
$result = db_query($sql);
但總是出現warning.....不知有沒有大大可以給我一點提示及方向呢?
Re: ...
謝謝大魔王...我用你的提示網址試出來了.....
以下語法OK喔
profile_load_profile($user);
print_r($user);
Re: ...
想請問你怎麼做的呢, 因為我也是要在區塊中把兩個自訂欄位抓出來
Re: ...
不好意思....區塊我沒做過耶.....我是要把某些用CCK定義的content之node內容做我要的樣子
我是在node.tpl.php這樣的檔案中加入
比如說你在profile定義一個欄位叫unit
在node.tpl.php中加入
<?php
profile_load_profile($user);
print $user->profile_unit;
?>
就可以抓出該欄位.....
可是這樣只能給login User看到.....
訪客看不到....
我還在找解決方法.....傷腦筋啊.......
Re: ...
邏輯上是這樣:
<?php
if (UID == 0){ // not login
$user = user_load (UID); // UID 可能從 URL arg(X) 或其他途徑取得
}
profile_load_profile($user);
print $user->profile_unit;
?>
---
notaBlueScreen | 訂閱RSS | Plurk | twitter
Re: ...
抱歉....我耍了一個烏龍......
上面語法抓到的是目前登入的使用者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出來啦.....