記事No | : 2997 |
投稿日 | : 2008/02/26(Tue) 10:23:36 |
タイトル | : DiaryNOTEの表示について |
ID情報 | : maxweb |
投稿者 | : max |
URL | : http://www.2002max.com/oodiary/diary.cgi |
Diary noteですが、開いたときに、最新日記が表示されるようにできますでしょうか?
よろしくお願いいたします。
記事No | : 3005 |
投稿日 | : 2008/02/26(Tue) 16:43:38 |
タイトル | : Re: DiaryNOTEの表示について |
ID情報 | : fuyuki |
投稿者 | : BAL |
URL | : http://f43.aaa.livedoor.jp/~sumure/ |
> Diary noteですが、開いたときに、最新日記が表示されるようにできますでしょうか?
>
> よろしくお願いいたします。
以下でどうでしょうか。
●diary.cgi
#!/usr/local/bin/perl
#┌────────────────────────
#│ Diary Note
#│ diary.cgi - 2007/09/08
#│ Copyright (c) KentWeb
#│ http://www.kent-web.com/
#└────────────────────────
# 外部ファイル取り込み
require './init.cgi';
require $holiday;
&parse_form;
if ($mode eq "read") { &read; }
elsif ($mode eq "topmenu") { &topmenu; } ## ←★追加
elsif ($mode eq "popup") { &popup; }
elsif ($mode eq "check") { ✓ }
#&topmenu; ## ←★コメントアウト
&read; ## ←★追加
#-------------------------------------------------
# TOP画面
#-------------------------------------------------
#-------------------------------------------------
# 内容閲覧
#-------------------------------------------------
sub read {
# 汚染チェック
$in{'y'} =~ s/\D//g;
$in{'m'} =~ s/\D//g;
#▼ここから▼
open(IN,"$newlog");
$ym = <IN>;
close(IN);
($ym, $no) = split(/<>/, $ym);
$ym =~ /^(\d{4})(\d{2})(\d{2})/;
$in{'y'} ="$1" if(!$mode);
$in{'m'} ="$2" if(!$mode);
$in{'m'} =~ s/^0//;
#▲ここまで追加▲
my $data = sprintf("%04d%02d", $in{'y'},$in{'m'});
my $sub_width = $log_width + 30;
&header('js');
print <<EOM;
<div align="center">
<Table cellpadding="3"><Tr><Td align="center" valign="top">
<table width="$sub_width" cellpadding="0" border="0">
<tr>
<td class="tbl_1m" height="27"> Diary $in{'y'}. $in{'m'}</td>
</tr></table>
<table width="$log_width" border="0">
<tr>
<td align="right" height="35"><a href="$script?mode=topmenu" onMouseover="image2.src='$imgurl/back2.gif'" onMouseout="image2.src='$imgurl/back1.gif'"><img src="$imgurl/back1.gif" name="image2" border="0" alt="メニューに戻る"></a></td><!-- ★修正 -->
</tr>
</table>
EOM
●admin.cgi
#-------------------------------------------------
# 個別記事
#-------------------------------------------------
-- 途中省略 --
print DAT @data;
truncate(DAT, tell(DAT));
}
close(DAT);
#▼ここから▼
open(DAT,"+< $newlog") || &error("Open Error: $newlog");
eval 'flock(DAT, 2);';
seek(DAT, 0, 0);
print DAT "$y$m$in{'d'}<>$num";
truncate(DAT, tell(DAT));
close(DAT);
#▲ここまで追加▲
$y = $in{'y'};
$m = $in{'m'};
# 修正画面
●init.cgi
# 日の並び順
# 0 : 昇順
# 1 : 降順
$sort_day = 1;
基本設定に追加
# 最新記事
$newlog = "./new.dat";
●new.dat という名前のファイルをdiary.cgiと同じ階層転送
●以下はトップメニューをカレンダーの下の空きスペースに表示させる方法です。他の月を表示するのに便利です。
-- 途中省略 --
print <<EOM;
</tr></table>
</Td>
<Td width="30"></Td>
<Td valign="top">
EOM
&calen;
&topmenu2; ## ←★追加
print <<EOM;
</Td>
</Tr></Table>
<!-- ▼ここから▼ -->
<!-- $ver -->
<span style="font-size:10px; font-family:Verdana,Helvetica,Arial;">
- <a href="http://www.kent-web.com/" target="_top">DiaryNote</a> -
</span>
<!-- ▲ここ迄追加▲ -->
</div>
</body>
</html>
EOM
exit;
}
#-------------------------------------------------
# カレンダ
#-------------------------------------------------
●以下のサブルーチンをdiary.cgiの最下部当りに追加
#-------------------------------------------------
# TOP画面2
#-------------------------------------------------
sub topmenu2 {
print "<table>";
# index読み取り
open(IN,"$logdir/index.dat") || &error("Open Error: index.dat");
while (<IN>) {
my @f = split(/,/);
print "<br><font color=\"red\"><b>$f[0]年</b></font><br>";
foreach $i (1 .. 12) {
if ($f[$i]) {
print "<a href=\"$script?mode=read&y=$f[0]&m=$i\">$i月</a>";
} else {
print "$i月";
}
print"<br>";
}
}
close(IN);
print "</table>";
}