スレッド表示 | 古いものから | <<<前の話題 | 次の話題>>> | ↓ |
投稿者 | 掲載内容 |
---|---|
掲載日時: 2006/03/23 19:43 |
|
新人 |
管理人さま
提供いただいたソースを参考に。 何とか表示できました。 感謝です。 |
掲載日時: 2006/03/18 19:13 |
|
新人 |
管理人さま。
まことにまことにありがとうございます。 管理人さまのご提供のソースにて無事表示できました。 |
掲載日時: 2006/03/18 17:36 |
|
運営事務局 |
変数は変えなくても、個別にechoで表示させて送ればどうでしょう?
// ブロック用phpソースと異なり、サイトURL指定は {X_SITEURL}(ブロック用)から // ".XOOPS_URL."/(php用)に変更してあります。(/も必須) // 同様にデータファイルのディレクトリ指定も相対アドレスで変更してあります。 // ----------------------------------------------------------- // めるちゃっと・インジケーター付きリンクブロック // ----------------------------------------------------------- echo "<CENTER><TABLE CELLSPACING='0' CELLPADDING='0' WIDTH='100%'>" ."<TR CLASS='even'>" ."<TD ALIGN='CENTER' VALIGN='CENTER'>" ."<!-- INLINE BLOCK START!-->" ."<CENTER><TABLE CELLSPACING='4' CELLPADDING='4' WIDTH='100%'>" ."<TR CLASS='even'>" ."<!-- INLINE BLOCK 1!-->" ."<TD NOWRAP>" ."<table cellspacing='4' celpadding='4' border='1' bordercolor='#cccccc'>" ."<tr>"; // ----------------------------------------------------------- // 初期設定値 $module_name = "ひまわり"; $module_dirname = 'mailchat'; // 前後のスラッシュは不要です // ----------------------------------------------------------- // メインブロック(入室カウンター返し値)-> $members $user_file = '../../modules/'.$module_dirname.'/user.dat'; $members = count(file($user_file)); // ----------------------------------------------------------- echo "<td align='center' valign='top' nowrap width='16%'>" ."<a href='".XOOPS_URL."/modules/".$module_dirname."/'>".$module_name."</a>" ." <font color='#666666'>(</font>"; if ($members >=1 ) { // 1人以上の場合だけ人数表示 echo "<font color='#FF0000'>".$members."人</font>"; } else { echo "<font color='#666666'>空室</font>"; } echo "<font color='#666666'>)</font></td>"; // ----------------------------------------------------------- // ----------------------------------------------------------- // 初期設定値 $module_name = "あじさい"; $module_dirname = 'mailchat01'; // 前後のスラッシュは不要です // ----------------------------------------------------------- // メインブロック(入室カウンター返し値)-> $members $user_file = '../../modules/'.$module_dirname.'/user.dat'; $members = count(file($user_file)); // ----------------------------------------------------------- echo "<td align='center' valign='top' nowrap width='16%'>" ."<a href='".XOOPS_URL."/modules/".$module_dirname."/'>".$module_name."</a>" ." <font color='#666666'>(</font>"; if ($members >=1 ) { // 1人以上の場合だけ人数表示 echo "<font color='#FF0000'>".$members."人</font>"; } else { echo "<font color='#666666'>空室</font>"; } echo "<font color='#666666'>)</font></td>"; // ----------------------------------------------------------- // ----------------------------------------------------------- // 初期設定値 $module_name = "たんぽぽ"; $module_dirname = 'mailchat02'; // 前後のスラッシュは不要です // ----------------------------------------------------------- // メインブロック(入室カウンター返し値)-> $members $user_file = '../../modules/'.$module_dirname.'/user.dat'; $members = count(file($user_file)); // ----------------------------------------------------------- echo "<td align='center' valign='top' nowrap width='16%'>" ."<a href='".XOOPS_URL."/modules/".$module_dirname."/'>".$module_name."</a>" ." <font color='#666666'>(</font>"; if ($members >=1 ) { // 1人以上の場合だけ人数表示 echo "<font color='#FF0000'>".$members."人</font>"; } else { echo "<font color='#666666'>空室</font>"; } echo "<font color='#666666'>)</font></td>"; // ----------------------------------------------------------- ここにインジケータを複製して次々に配置‥‥‥‥ ‥‥‥‥ ‥‥‥‥ echo "</tr></table>" ."</TD>" ."</TR>" ."</TABLE></CENTER>" ."<!-- INLINE BLOCK END!-->" ."</TD>" ."</TR>" ."</TABLE></CENTER>"; ?> 参考になれば幸いです。 コミュネス運営事務局 |
掲載日時: 2006/03/18 17:33 |
|
運営事務局 |
naritoさん、こんにちは
Windows版のFirefoxではbodyの透過モードが効かないようですね。 同じfirefoxでもMaxOSX版1.5.0.1では大丈夫の場合もあるようです。(ただFireFoxのMac版のテーマによっては背景がブルー一色になるようです。) MacのSafariでは全く問題無い、とのことです。 ここまでの情報まとめ:(結論) 根本的にWindows版FireFoxだけに見られる独得のブラウザ側の障害トラブル。 FireFoxのツールから拡張インストールするテーマによっては解決する場合もある。 FireFox自体がHTMLの<body>を正しく処理できない(透過モードが効かない) しかしスタイルシートを多様化することで、BODYに関する設定を全て廃止し(FireFoxのためだけの労力)、WindowsインターネットエクスプローラーやMacOSX Safariと互換を保ったまま、Windows版FireFoxに対応させることは理論的に可能(だが‥‥チャットプログラムでブラウザの個別のagentをチェックしていたら負荷も気にしないと‥‥軽くなければならない。) ということで、いくつか考案しましたが、いちばんシンプルなスタイルで、かつ速度性を保ちつつ、Windows版FireFoxへの対応を施したバージョンを作ってみました。 → めるちゃっと ver1.08 実物 ご要望が多ければ、近いうちにモジュールを公開する予定です。 コミュネス運営事務局 |
掲載日時: 2006/03/18 16:10 |
|
新人 |
ところでチャットルームが何部屋かあり
同一カスタムブロック内に全室の参加者表示をしたいとき 変数の名をいちいち変えるやり方でよろしいのでしょうか? ほんとうに無知で申し訳ありませんがご指南ください。 |
掲載日時: 2006/03/18 15:58 |
|
新人 |
いろいろソースを眺めていましたらあることに気づきました
custom_block_sample.txtには $user_file = './modules/'.$module_dirname.'/user.dat'; $members = count(file($user_file)); とあり、この通りやると参加人数は表示されるわけです ところで管理人様の提示してくださったソースは $online_user=""; // 変数クリア $log = file('../../modules/'.$module_dirname.'/user.dat'); // トップページから見たファイル位置 $members = count($log); for($i=0;$i<$members;$i++){ list($name2,$userid2) = split( ",", $log[$i]); $online_user .= "<option>".$name2; //入室状況表示用に<option>を加えておく } で参加者名が表示できました それで見比べるとuser.datへのパスが違っていますね そこでちょっと邪道だとは思ったんですが あまり知識のない私としては上記のソースを $online_user $online_user=""; // 変数クリア $log = file('./modules/'.$module_dirname.'/user.dat'); // トップページから見たファイル位置 $log2 = file('../../modules/'.$module_dirname.'/user.dat'); $members = count(file($log)); for($i=0;$i<$members;$i++){ list($name2,$userid2) = split( ",", $log2[$i]); $online_user .= "<option>".$name2; //入室状況表示用に<option>を加えておく } と書き換えたところ、ちゃんと表示できるようになりました。 |
掲載日時: 2006/03/18 13:50 |
|
運営事務局 |
こんにちは、まりやさん。
> のところで退室しているのにもかかわらず > 人数が表示されてしまうのはなぜでしょう? なぞですね? 本体(ここのサイト)に組込まれたものとソースは同じですので、いろいろ実験されてみてはいかがでしょうか。サーバー環境の違いなどもあるのかと思われます。パーミッションの問題や、PHPのバージョン違いもあると思います。 めるちゃっとの入室状況は独自のログファイルから判定していますので、XOOPSのガベージコレクションgc(300)は使っていません。 ガベコレは10分の1の確率でクリアしたり、しなかったり、ランダムシードでの処理ですから、入室状況の正確さを求めるチャットには不向きですし、ガベコレの更新を100%までハネあげると、極端にサーバー負荷が増大する、といったXoops本来の(限界?)のようなものがあります。 独自ログファイルからデータを吸い出して入室状況を計算していますので、PHPのバージョンに応じたfile()関連命令をご自身のマイサーバーに書き換えてみてはいかがでしょうか。 PHPやApacheのバージョンの違いや、またレンサバの場合などはサーバーの制約などにより、$membersの読み出しに失敗すると、以下の変数の内容は上書きされません。(1人で残りっぱなし=レンサバのサーバ制約/サーバ側の処理問題)file()命令 $members = count(file($user_file)); 予め$members = 0;のようにして強制的にクリアさせたり、行頭で指定している$user_fileの指定を見直してみるのも手でしょう。(入室状態で問題なく他PCなどからインジケータが正しく表示されていればここは問題では無いでしょうから、PHPのバージョンの違いなどfile()の取扱い命令をご自身のマイサーバーに応じて書き換えてみて下さい。)原作はPHP4.xで作られています。 コミュネス運営事務局 |
掲載日時: 2006/03/18 13:25 |
|
新人 |
同じ質問をしようと思ってきましたら、
お話が進んででましたね。 僕のサイト(メインとは別)はまだ構築中ですので 僕しかいませんが、まりやさんと同じように誰も入ってないのに 1と表示されます。 また、TOPページには なにも反映されなくて チャットページだと人数も名前も表示されます。 因みに FIREFOXではブルー画面になりますね ここのチャットにはいっても同じ状態です |
掲載日時: 2006/03/18 10:47 |
|
新人 |
ご教授ありがとうございました。
概ね希望通りとなりましたが、 if ($members >=1 ) { // 1人以上の場合だけ人数表示 echo "<select>".$online_user."</select> " ."<font color='#FF0000'>".$members."人</font>"; } else { echo "<font color='#666666'>空室</font>"; } のところで退室しているのにもかかわらず 人数が表示されてしまうのはなぜでしょう? まだ私のサイトへのアクセスの頻度が少ないので XOOPSのオンライン状況と同じことが起きているだけなのでしょうか? |
掲載日時: 2006/03/18 00:03 |
|
運営事務局 |
まりやさん、こんにちは♪
ご希望の内容かどうかわかりませんが、簡単に書くと以下のような感じかな、と思います。モジュールをmailchat0001として複製した場合を想定して、ユーザ名(ハンドル名)を表示するPHPを書きますね。(適宜tableタグtrタグを補って下さい。以下tdの中にハンドル名と人数が返ります。) どうぞご参考までに♪ // ----------------------------------------------------------- // 初期設定値 $module_name = "ちゃっとネーム"; $module_dirname = 'mailchat0001'; // 前後のスラッシュは不要です(複製時) // ----------------------------------------------------------- // メインブロック(入室カウンター返し値)-> $members (ユーザ名返し値)-> $online_user $online_user=""; // 変数クリア $log = file('../../modules/'.$module_dirname.'/user.dat'); // トップページから見たファイル位置 $members = count($log); for($i=0;$i<$members;$i++){ list($name2,$userid2) = split( ",", $log[$i]); $online_user .= "<option>".$name2; //入室状況表示用に<option>を加えておく } // ----------------------------------------------------------- echo "<td align='center' valign='top' nowrap width='33%'>" ."<a href='".XOOPS_URL."/modules/".$module_dirname."/'>" ."<div style='font-size: large; font-weight: bold; margin-bottom: 0; text-shadow: 5px 3px 2px #CCCCCC'>" .$module_name ."</div></a>"; if ($members >=1 ) { // 1人以上の場合だけ人数表示 echo "<select>".$online_user."</select> " ."<font color='#FF0000'>".$members."人</font>"; } else { echo "<font color='#666666'>空室</font>"; } echo "</td>"; // ----------------------------------------------------------- スタイルのshadowはMacユーザへの配慮です。 IEでは表示されませんが、Macだとかっこよくcoolに表示されます。 コミュネス運営事務局 |
<< 1 2 >> |
スレッド表示 | 古いものから | <<<前の話題 | 次の話題>>> | ↑ |