1 頁 (共 2 頁)

[討論]修改查看誰在線上....

發表於 : 2004-04-28 18:33
依夢兒
逛了一下 Discuz! 論壇,他們的線上名單看起來很整齊,一目瞭然,例如:
http://www.jpmac.net/bbs/
http://www.sundns.org/discuz/

就是最下面那個在线用户

之前我有嘗試過將 phpBB 的查看誰在線上改成這個樣子,但是失敗了,好像沒有想像中的簡單....

不知道有沒有人有興趣也來研究看看?

發表於 : 2004-04-28 19:03
小竹子
我記得那個有人改過吧!應該有 MOD,還有個小小的建議,那東西會增加流量^^!!

發表於 : 2004-04-28 21:59
依夢兒
小竹子 寫:我記得那個有人改過吧!應該有 MOD,還有個小小的建議,那東西會增加流量^^!!
竹大你說的外掛是指這個吧\r
http://phpbb-tw.net/phpbb/viewtopic.php?t=10396

你可能誤會我的意思了。^^"
這支外掛我有裝過,它的功用是依照會員身分,在人名前面顯示一個圖示,看起來的確是比較美觀。
但是我上一篇提到的重點不是有沒有圖示,而是像 Discuz! 那般,人名的部份能夠整齊排列。
phpBB 的設計是在人名後面加上一個逗點再連著人名,在線人數一多的話老實說看起來有一點亂。

理論上來說,這樣的效果應該是不會增加流量和伺服器的負擔,只是風格上的一點小修飾而已。
如果圖示的部份會增加流量的話,可以捨去沒有關係,只要人名的部份能夠像 Discuz! 那般整齊排列即可。

發表於 : 2004-04-28 23:28
動機不明
設計個 TABLE ,在套用上去,就可以了吧?
假設\r

前面固定不動 <table><tr>

然後變數代進來...

<td> 名單1 </td>

設定 n=n++ (取到某位後歸0,表示要換行了...)

<td> 名單1 </td>
<td> 名單2 </td>
<td> 名單3 </td>
<td> 名單4 </td>
<td> 名單5 </td>
........

最後面再接 </tr></table>


這只是我的猜想啦,應該可以吧!?

發表於 : 2004-04-30 01:06
依夢兒
之前我有試過,不過失敗了....
原因說不上來,反正不是想像中的,直接寫個表格的 HTML 語法來美化就是了。 =.=
至於你說的什麼 n=n++ 的,我就不懂了。

發表於 : 2004-04-30 01:31
Martinet
我以為這種東西修改很簡單說一o一

其實是跟猴大說的一樣...用td來做的

只是..不能全部td一o一

要每幾個就要換個 tr 區段一.一

像是 ( http://www.jpmac.net/bbs/ )每 7個 會員就換一個 tr 區段\r

我想應該只要修改 page_header.php就行了

重點在下面這一段附近的程式碼\r

代碼: 選擇全部

if ( $row['user_allow_viewonline'] )
				{
					$user_online_link = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']) . '"' . $style_color .'>' . $row['username'] . '</a>';
					$logged_visible_online++;
				}
				else
				{
					$user_online_link = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']) . '"' . $style_color .'><i>' . $row['username'] . '</i></a>';
					$logged_hidden_online++;
				}

附近要改成每 X 個會員就output 一次 tr 的區段一.一
然後在裡面把純 link 旁邊加上 td ~

聽不懂沒關係一..一
是我的表達不好而不是你的國文差XD

題外話 : 每次看到依夢兒的 早安站的網址..就會不自覺得唸出「morningmushroom.net」 一.一

發表於 : 2004-05-02 00:25
依夢兒
雖然還是看不太懂(汗),不過還是謝了。^^"

發表於 : 2004-05-02 00:58
messagebox
不用這麼麻煩吧~
擅用HTML的標籤就OK了~
開啟./includes/page_header.php
尋找\r

代碼: 選擇全部

				if ( $row['user_allow_viewonline'] || $userdata['user_level'] == ADMIN )
				{
					$online_userlist .= ( $online_userlist != '' ) ? ', ' . $user_online_link : $user_online_link;
				}
修改為\r

代碼: 選擇全部

				if ( $row['user_allow_viewonline'] || $userdata['user_level'] == ADMIN )
				{
					$online_userlist .= '<span style="width:20%;">'.$user_online_link.'</span>';
				}
其中
style="width:20%
請自行修改~~20%表示一行5個元素

發表於 : 2004-05-02 03:34
依夢兒
謝謝 messagebox 兄,您這個方法簡單又好用~ :mrgreen:

發表於 : 2004-05-02 12:40
天霜
依夢兒 寫:謝謝 messagebox 兄,您這個方法簡單又好用~ :mrgreen:
但是你家Portal的查看誰在線上就亂掉了 :-|

發表於 : 2004-05-02 13:30
shihchieh
按動機大哥的構想下去改應該可以改得出來~

發表於 : 2004-05-02 15:48
依夢兒
嗯,剛剛才發現天霜提到的問題。
這麼一來 portal.php 的查看誰在線上,以及 viewforum.phop 左上角的正在瀏覽此區的會員也會跟著一起變動,不太好看。

有沒有辦法只針對 index.php 的部份下手呢?

發表於 : 2004-05-02 16:15
messagebox
程式要重寫~~~
我有個建議就是~~~原本的不動~~~
但加一個新變數專程只給INDEX_BODY.TPL來顯示~~


[php]
//開啟./includes/page_header.php

//原本的
$online_userlist = '';
//後面加入\r
$online_userlist2 = '';

//原本的
$online_userlist .= ( $online_userlist != '' ) ? ', ' . $user_online_link : $user_online_link;
//後面加上
$online_userlist2 .= '<span style="width:20%;">'.$user_online_link.'</span>';

//原本的
'LOGGED_IN_USER_LIST' => $online_userlist,
//後面加上
'LOGGED_IN_USER_LIST2' => $online_userlist2,

//開啟./templates/subSilver/index_body.tpl

//將
{LOGGED_IN_USER_LIST}
//取代為\r
{LOGGED_IN_USER_LIST2}
[/php]
這樣就OK了~~~
這麼一來就只改變首頁的線上列表~~~
基本上會放在./includes/page_header.php的變數都是共用的~~
例如

所有的時間均為 台北時間 (GMT + 8 小時)
竹貓星球 首頁

這些資訊等等~~所以一定是全部都會更著變~
之前動機的方法則需要大量修改程式~~(用table來分)
基本上不是建議這樣做~~

直接丟個迴圈就能作出這種效果了~~
有興趣的人可以自行研究~~~
ex.
[php]<?php
for ($i=0;$i<100;$I++){
echo '<span style="width:20%;">'.$i.'</span>';
}
?>[/php]
上面的範例是列出0-99~且一行5個~
有興趣者可以試著寫一個用TABLE來印出同樣效果~
在來比較兩者的差別~~

EX.用表格來作
[php]<?php
$all_count = 100; //總數\r
$line_count = 5; //一行有多少數目\r

$much_line = intval($all_count / $line_count);
if ( ($all_count % $line_count) != 0 ){
$much_line++;
}

echo '<table width="100%">';

for ($x=0;$x<$much_line;$x++){
echo '<tr>';
for ($y=0;$y<$line_count;$y++){
$show_num = ($x*$line_count)+$y;
if ($show_num < $all_count){
echo '<td>'.$show_num.'</td>';
}else{
echo '<td> </td>';
}
}
echo '</tr>';
}
echo '</table>';
?>[/php]

雖然說是達到相同的目的~~
但計算出錯率卻是大不相同~~~

當然~表格方式可以做到其他比較特殊的需求~~
例如~~輸出的東西要有背景~~~

不過基本上~~CSS都還能解決的~~

發表於 : 2004-05-02 16:34
依夢兒
呼,讓我長了不少知識。
謝謝 messagebox 的熱情指導,待會我試試。^^

發表於 : 2004-05-03 00:49
shihchieh
plus的index部份就不會撐大直接參考也應該可以