您在這裡

列出會員頭像

hanamizuki's 的頭像
hanamizuki 在 2008-09-16 (二) 15:32 發表

我想讓會員輸入部落格網址、自己的名字,然後在首頁希望能列出頭像、點進去直接進他的部落格,
每個頭像下面有名字,點名字可以進他的檔案頁面。
其實以drupal來講應該不難做到,但是我很笨耶!我還自己在block裡面寫連接到資料庫然後存取會員欄位什麼的php,
寫到現在還是寫不出來。

不知有沒有哪個模組可以讓我離天堂比較近一點?

ps.我用過avatar blocks,但他點進去是進到會員頁面,而且我希望每個頭向下面有名稱,
我想修改.module,可是好深奧!
所以來問問大家的意見。我是個drupal新笨手!

是聯結到外部的blog嗎?

其實在版型的地方可以設定顯示發文者的圖片.就可以簡易做到在首頁顯示發文者的照片(版型>設定>整體設定>切換顯示(文章裡的作者圖示打勾).(顯示文章的張貼資訊(把要套用的node打勾))).
以及他的blog連結(記得輸入格式要開權限給使用者用full html).

不然就是使用views來篩它.
你可以使用cck來增加一個使用者名稱的欄位以及部落格網址的欄位.然後用views來篩它...

(若理解沒錯.,那大致的設定如下):

一.我使用page為例子:
1.管理->
2.內容類型->
3.page->編輯->增加欄位->名稱(自訂.限英文ex: real_name)->(這裡可以讓使用者打入她要顯示的作者名稱)
4.Field type(選擇)Text的Text Field->
5.creat field
6.增加欄位->名稱(自訂.限英文ex: user_blog)->(這裡可以讓使用者打入他要顯示的blog網址)
7.Field type(選擇)Text的Text Field->
8.creat field
------------------------------------------------------
二,新增一個views
1.管理->
2.views->
3.add->名稱自訂(ex.userblog_views)
4.access開權限給使用者(全部不勾=全都可使用這個view).
5.頁面->Provide Page View打勾
6.網址:自己給他一個(ex:front page)
7.View Type選擇teaser list
8.use pager 若打勾則這個view會有自動沏頁功能...例如Nodes per Page:選2..那這個view的第3篇文章會顯示在第 2頁.以此類推...
9.fields->add fields->real_name(ex).
10.fields->add fields->user_blog(ex).
11.過濾器那裡可以新增一個node:distinct(會依據發表時間排列.(新發在前))...若新增node distinct需給他一個參數(ex
新增一個node:title)
12.save
--------------------------------------------------------
發一篇文試看看.(上班時間發文.沒經過測試@@)...
ps.若要將此新增的views設成首頁->管理->網站資訊->預設的首頁改成你剛自訂的網址(front page)...

在仔細看了一下...好像只需要用teaser list就可以呈現.
以下方法簡單多了..
1.管理
2.內容類型>新增一個吧>增加內容類型
3.名稱(ex.部落國)>類型(ex.bloga..不要打blog唷.會衝到.)
4.送出表單>標題欄位標籤:(改成部落格名稱).內容欄位標籤:(改成部落格連結)流程:已發表.推薦到首頁.打勾

然後再views裏使用預設的frontpage的views
設定如下:(前面和上一篇差不多)
1.找到frontpage點add
2.Provide Page View打勾...網址預設不用改
3.View Type:Teaser view
4.過濾器新增一個Node: Published(Operator(Equals) .值(是))
5.save

這方法其實是把預設node的標題和內文改成你要顯示的(名稱.和網址).
使用者輸入的訊息還是title 和 body.但用views篩出來卻可以得到你想要的效果^^
記得要在後台的輸入格式裡設定權限給使用者.

ps.以上坪記憶寫...還沒測試過..供參考@@(上班ing)...

真的很謝謝你的教學,讓我對cck和views有初步的了解了。

不過真的很抱歉,我沒說清楚,
其實我是希望直接從「使用者欄位」抓他的部落格網址和頭像,然後做出list,
就可以讓使用者在自己的頁面改自己的的資料就好。

使用者在自己頁面輸入部落格網址,然後我抓來放在首頁列出來這樣。

可以再指點一下嗎?

哦!感謝。

這給我了新方向。之前一直是以Views+CCK模組為方向在研究,
也許直接用theme功能(phptemplate)來搞定也是一種方式。

我會再研究看看,謝謝!

我搞好了。分享一下。真的非常感謝Oscar0410和charlesc的指引,我對Drupal終於有一點點了解了!
每次更了解Drupal都會超興奮的,因為他的彈性之大和難懂的程度,真會讓人心跳加速。

以下是我的做法,如果發現我的做法其實有危險或不好,請告訴我!謝謝!

我是使用phptemplate這個樣板引擎來做。我是要做個特別的userlist,所以從theme下手。
修改Drupal預設的User List頁面(http://yoursite/profile)。

1.先在theme/mytheme裡的template.php加上

function phptemplate_profile_listing($user, $fields = array()) {
return _phptemplate_callback('profile_listing', array('user' => $user, 'fields' => $fields));
}

function phptemplate_user_picture_imagecache($account, $size) {
if (variable_get('user_pictures', 0)) {
// Display the user's photo if available
if ($account->picture && file_exists($account->picture)) {
$picture = theme('imagecache', $size, $account->picture);
}
return $picture;
}
}

2.新增profile_listing.tpl.php
以下是我的範例。我的目標是:
(1)有照片的會員才顯示在這份清單。
(2)照片點進去是會員的部落格而非會員頁面。部落格是用profile欄位裡的blogurl。
(3)照片下方顯是會員暱稱,這暱稱也是profile欄位裡的。
(4)使用imagecache的preset來顯示照片,範例裡的preset叫做useravatar。
若不用這個東西的話(也就是用原本的$user->picture),會變成顯示原始大小。而且會連結到使用者頁面。

<?php if($user->picture) { //只有有照片的會員會出現在這份清單 ?>

<?php if($user->profile_blogurl){ //如果有部落格(部落格網址欄有填) ?>
profile_blogurl) ?>"><?php print theme('user_picture_imagecache', $user , 'useravatar'); ?>
<?php }else{ //沒有部落格(部落格網址欄沒有填)
print theme('user_picture_imagecache', $user , 'useravatar') ?>
<?php } ?>
<?php print check_plain($user->profile_nickname) //顯示會員暱稱 ?>
name) ?>">more

<?php }?>

以上。

嗯!我也希望快點完工,目前卡在Ubercart的部分,因為購物想以類似經銷的方式開放購買,但好像沒有「限買多少才可結帳」這種模組,另外買越多價錢越低模組也找不到,有找到這個:
Custom Price Calculation
http://www.ubercart.org/contrib/2289

但這個還要自己輸入程式碼,如果之後網站要轉移給別人管理,也太難管理了。

再研究嚕!

(PS.sorry,我每次都離題)

限買多少才可結帳

也許你可以試著透過修改購物車頁面的版型 (cart)
判斷當小計小於多少金額的時候隱藏付款按鈕