KENT-WEB サポートコーナー 過去ログ [ 0191 ]


記事No: 2997
投稿日: 2008/02/26(Tue) 10:23:36
タイトルDiaryNOTEの表示について
ID情報: maxweb
投稿者: max
URLhttp://www.2002max.com/oodiary/diary.cgi

Diary noteですが、開いたときに、最新日記が表示されるようにできますでしょうか?

よろしくお願いいたします。


記事No: 3005
投稿日: 2008/02/26(Tue) 16:43:38
タイトルRe: DiaryNOTEの表示について
ID情報: fuyuki
投稿者: BAL
URLhttp://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"> &nbsp;&nbsp; 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>";
}


[検索ページ]