CGIなどのの質問を受付ます。
現在SPAM対策の為、一部ホストアドレスを規制中。
▼スレッド
│
└◇274:Re:日記SP「開いた時にその月のログを表示」にはできませんか? [moon(もしかしたら管理人)] 01/16 16:44
├◇276:Re[2]:日記SP「開いた時にその月のログを表示」にはできませんか? [ぷりん] 01/17
│└◇277:Re[3]:日記SP「開いた時にその月のログを表示」にはできませんか? [moon(管] 01/17
│ └◇278:Re[4]:日記SP「開いた時にその月のログを表示」にはできませんか? [ぷりん] 01/18
│ └◇279:Re[5]:日記SP「開いた時にその月のログを表示」にはできませんか? [moon(管] 01/18
│ └◇280:Re[6]:日記SP「開いた時にその月のログを表示」にはできませんか? [ぷりん] 01/18
│ └◇281:すみません、もう1つ・・・ [ぷりん] 01/25
│ └◇282:Re:すみません、もう1つ・・・ [moon(管] 01/25
└◇284:便乗質問です。日記でできません。 [dan] 02/05
└◇285:Re:便乗質問です。日記でできません。 [moon(管] 02/05
└◇287:Re[2]:便乗質問です。日記でできません。 [dan] 02/06
└◇288:Re[3]:便乗質問です。日記でできません。 [moon(管] 02/06
└◇289:Re[4]:便乗質問です。日記でできません。 [dan] 02/06
└◇290:Re[5]:便乗質問です。日記でできません。 [moon(管] 02/07 <
はじめまして。スレッド一覧
ご質問の件ですが、
日記SPに関しては元となった日記のCGIのバージョンアップが激しく、
あまりバージョンアップする気はなかったりします。
申し訳ございません。
今の構想としては今後日記から複数の画像投稿ができるようになればいいな(希望)と思っているのです。(気力と時間がなくて手をつけられませんが)
あと、最初に月間のLOGをやる場合は改造が必要になってしまいます。
それは、最新のLOGだけは通常のLOGとは別に保存してあるためです。
なので、何も指定がないときはこの最新LOGを読みに行ってしまいますので、
自動で月ごとの表示は難しいです。
逆にいえば、そこさえいじれば何とかなるとは思いますが。
場所としては630行目くらいからが最新LOGを読み出しています。
open (IN,$file);
@line = <IN>;
close (IN);
if (@line) { print qq|<h3><font color="$tc">最近の日記</font></h3>\n|; }
else { print qq|<h3><font color="$tc">LOGがありません。</font></h3>\n|; }
これを削除してしまえば最新LOGは表示されません。
ついでに言えば、ここで月のLOGを読めばいいのかなと思います。
&gettime;
$in{'log'} = $year .$mon;
open (IN,"$direct/$in{'log'}");
@line2 = <IN>;
close (IN);
if ($in{'id'}) {
foreach (@line2) {
if ($_ =~ /$in{'id'}/) {
push(@line,$_);
}
}
} else {
@line = @line2;
print "<h3><font color=\"$tc\">" .substr($in{'log'},0,2) ."年";
print substr($in{'log'},2,2) ."月";
if ($view_sw == 1) {
if ($in{'view'} eq 'a') { print "前半"; }
elsif ($in{'view'} eq 'b') { print "後半"; }
} elsif ($view_sw == 2) {
if ($in{'view'} eq 'a') { print "上旬"; }
elsif ($in{'view'} eq 'b') { print "中旬"; }
elsif ($in{'view'} eq 'c') { print "下旬"; }
}
print "の日記</font></h3>\n";
}
とやれば月ごとに読み出せるような気がします。
分からなかったら再度質問してください。
早速のお答え有難うございました。スレッド一覧
これだけのcgiの新しいものを作るのには、さぞかし気力も時間も必要でしょうね。
無料でここまでのものを提供し、質問にも答えて下さって感謝感謝です。
お答え頂いたものをやってみたのですが、最新ログを表示しないところまでできましたが、月のログは読み込めません。。。わかりません・・・(T_T)削除した場所にそのまま貼り付ければいいんですよね?
今日はもう時間がないのでまた明日やってみようと思います。
> お答え頂いたものをやってみたのですが、最新ログを表示しないところまでできましたが、月のログは読み込めません。。。わかりません・・・(T_T)削除した場所にそのまま貼り付ければいいんですよね?スレッド一覧
多分全角のスペースが入っているので、それが入るとエラーになります。
全角のスペースは半角にするか削除してください。
スペース消したらできました!有難うございます。。。スレッド一覧
もう1つお聞きしたいです・・・
今回の改造によって最新ログ(nik.logですか)は全く表示されないようになりますよね。
できればプルダウンで選べば最新ログで書込or編集順も見られるようになるといいのですが、
大幅改造にならないご負担にならない程度でできるのでしたら教えて下さい。
動いたのですね。よかったです。スレッド一覧
> 最新ログ(nik.logですか)は全く表示されないようになりますよね。
> できればプルダウンで選べば最新ログで書込or編集順も見られるようになるといいのですが、
とりあえず手順だけを説明します。
1338行目あたり。
print qq|<option value="$cgi">最近の日記\n|;
↓
print qq|<option value="$cgi?saisin=new">最近の日記\n|;
590行目あたり
# 月間LOG/タイトル一覧からの個別ログ
if ($in{'mode'} eq 'res') {
print qq|<p>レスを書き込みます</p>\n|;
} elsif ($in{'log'}) {
↓
if ($in{'saisin'}) {
open (IN,$file);
@line = <IN>;
close (IN);
if (@line) { print qq|<h3><font color="$tc">最近の日記</font></h3>\n|; }
else { print qq|<h3><font color="$tc">LOGがありません。</font></h3>\n|; }
} elsif ($in{'mode'} eq 'res') {
print qq|<p>レスを書き込みます</p>\n|;
} elsif ($in{'log'}) {
とすれば動くような気がします。
(動作確認をしてないので、動かなかったらゴメンナサイ)
以上、がんばってください。
できました!スレッド一覧
本当にありがとうございました。
結構長い間探し回っていたのですが、これで理想のcgiになりました。
お世話になりました。
また、これからいっぱい使わせてもらうのでよろしくお願いします。
早いレスも有難うございました。助かりました☆
同じようにやって携帯からでもページを開いた時は当月のログにしました。スレッド一覧
最新ログもどうにか見たいんですが・・・。
お教えいただけますか?
> 同じようにやって携帯からでもページを開いた時は当月のログにしました。スレッド一覧
> 最新ログもどうにか見たいんですが・・・。
実際にテストをしていないので動くかどうかはわかりませんが・・・
携帯の設定はkei.plに記述されています。
また、i-modo・vodafone用(CHTML)と、au用(XHTML)に分かれていますので、同じような編集を二箇所ずつします。
まず523行目あたり
print qq|<select name="day3">\n|;
print qq|<option value="">\n|;
print qq|<option value="a">上旬\n|;
print qq|<option value="b">中旬\n|;
print qq|<option value="c">下旬\n|;
print qq|</select>\n|;
↓
print qq|<select name="day3">\n|;
print qq|<option value="">\n|;
print qq|<option value="new">最新\n|;
print qq|<option value="a">上旬\n|;
print qq|<option value="b">中旬\n|;
print qq|<option value="c">下旬\n|;
print qq|</select>\n|;
610行目あたりも同様に。
283行目
if ($in{'day3'} eq "a") {
↓
if ($in{'day3'} eq "new") {
last;
} elsif ($in{'day3'} eq "a") {
ちょっと下にある320行目あたり
} else {
$chh = "$in{'year'}$in{'mon'}$in{'day1'}$in{'day2'}";
if ($_[0] =~ /^$chh/) {
push(@datas,$line);
}
}
}
foreach (@datas) {
(@_) = split(/\t/);
↓
} else {
$chh = "$in{'year'}$in{'mon'}$in{'day1'}$in{'day2'}";
if ($_[0] =~ /^$chh/) {
push(@datas,$line);
}
}
}
open (IN,$file); #←これを入れる
@datas = <IN>; #←これを入れる
close (IN); #←これを入れる
foreach (@datas) {
(@_) = split(/\t/);
同じように380行目あたりからのものを修正する。
以上で大丈夫だと思います。
はじめまして。スレッド一覧
便乗で質問させていただきます。
『日記』で上記と同じ事を行いたいのですが、どうも上手くできません。
※topページに月間のログを読み込みたい。
817行目の
open (IN,$file);
@line = <IN>;
close (IN);
if (@line) { print qq|<h3><font color="$tc">最近の$title2</font></h3>\n| if $title2; }
else {
print <<EOF;
<table bgcolor="$tw_c" width="$t_wid" border="0" cellspacing="1">
<tr>
<th>
<table border="0" width="100%" cellspacing="1" cellpadding="5">
<tr bgcolor="$tbt_c">
<th>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<th nowrap><font color="$ti_c">LOGがありません</font></th>
を削除したのですが、動作そのもができなくなってしまいました。。。
お忙しいとは思いますが、お力を貸していただけたら幸いです。
何卒よろしくお願いします。
> 『日記』で上記と同じ事を行いたいのですが、どうも上手くできません。スレッド一覧
> ※topページに月間のログを読み込みたい。
open (IN,$file);
@line = <IN>;
close (IN);
if (@line) { print qq|<h3><font color="$tc">最近の$title2</font></h3>\n| if $title2; }
else {
print <<EOF;
<table bgcolor="$tw_c" width="$t_wid" border="0" cellspacing="1">
<tr>
<th>
<table border="0" width="100%" cellspacing="1" cellpadding="5">
<tr bgcolor="$tbt_c">
<th>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<th nowrap><font color="$ti_c">LOGがありません</font></th>
<td nowrap align="right">
</td>
</tr>
</table>
</th>
</tr>
</table>
</th>
</tr>
</table>
EOF
}
以上を全て削除してください。
中途半端に削除をすれば動かなくなります。
その上で、記事274の後半の部分をやれば出来るかと思います。
たぶん・・・
早速のご返信、本当にありがとうございます。スレッド一覧
無事に問題なくできました!!とても助かりました。
携帯表示でも同じ事を行いたいのですが、どこの行を削除&追加すれば、携帯でもTOPページに月間ログを表示させる事が可能でしょうか?
いろいろ削除したり追加したりいじったのですが、携帯表示ではどうも上手く動いてくれません。
それと別件でさらにご質問させて頂くと、--最近のLOG--と表示されますが、これの色を変更させたいです。
レベルの低い質問で大変お手数をおかけしますが、何卒お力を貸してください。
何卒よろしくお願いいたします。
スレッド一覧
> 携帯表示でも同じ事を行いたいのですが、どこの行を削除&追加すれば、携帯でもTOPページに月間ログを表示させる事が可能でしょうか?
すでに回答にありますが、携帯はi-modo用(CHTML)とau用(XHTML)の二箇所に同じような記載があるので、両方とも変更することを注意してください。
kei.plの44行目あたりから。
open (IN,$file);
@line = <IN>;
close (IN);
if (@line) {
if ($title2) {
print qq|<h3><font color="$tc">--最近の$title2--</font></h3>\n|;
} else {
print qq|<h3><font color="$tc">--最近のLOG--</font></h3>\n|;
}
} else {
print qq|<h3><font color="$tc">LOGがありません。</font></h3>\n|;
}
を削除。
削除した場所にPC用と同じように
&gettime;
$in{'log'} = $year .$mon;
open (IN,"$direct/$in{'log'}");
@line2 = <IN>;
close (IN);
if ($in{'id'}) {
foreach (@line2) {
if ($_ =~ /$in{'id'}/) {
push(@line,$_);
}
}
} else {
@line = @line2;
print "<h3><font color=\"$tc\">" .substr($in{'log'},0,2) ."年";
print substr($in{'log'},2,2) ."月";
if ($view_sw == 1) {
if ($in{'view'} eq 'a') { print "前半"; }
elsif ($in{'view'} eq 'b') { print "後半"; }
} elsif ($view_sw == 2) {
if ($in{'view'} eq 'a') { print "上旬"; }
elsif ($in{'view'} eq 'b') { print "中旬"; }
elsif ($in{'view'} eq 'c') { print "下旬"; }
}
print "の日記</font></h3>\n";
}
を入れてください。
同じように100行目あたりからの奴を変える。
これで一応動くと思います。
> それと別件でさらにご質問させて頂くと、--最近のLOG--と表示されますが、これの色を変更させたいです。
これは携帯用ですか?
管理用設定画面から変更できると思いますが、直接変更したい場合は、
kei.plで「最近の」と言うキーワードで検索してみてください。
四箇所HITすると思いますが、いずれも<font>タグで色を指定しているだけなので、直接変更すればOKです。
非常にお早い回答ありがとうございます。スレッド一覧
疑問点は全て解決し、問題なく動作しております。
大変大変感謝しております。
何度も申し訳ありませんが、もうひとつだけ質問させてください。
携帯表示だけで良いのですが、
『ほかの記事を読む』をクリックした時に、年、月表示だけにさせていたです。
イベントお知らせとして使用予定なのですが、月ごとの検索を行いたいと思っております。
その月の予定イベントが全て表示するようにしたいです。
大変お忙しい中、恐縮ですが何卒よろしくお願いいたします。
> 携帯表示だけで良いのですが、スレッド一覧
> 『ほかの記事を読む』をクリックした時に、年、月表示だけにさせていたです。
> イベントお知らせとして使用予定なのですが、月ごとの検索を行いたいと思っております。
> その月の予定イベントが全て表示するようにしたいです。
kei.pl
866行目あたり
($mday1,$mday2) = split(//,$mday);
print qq|<select name="day1">\n|;
for (0..3) {
if ($mday1 == $_) {
print qq|<option value="$_" selected>$_\n|;
} else {
print qq|<option value="$_">$_\n|;
}
}
print qq|</select>\n|;
print qq|<select name="day2">\n|;
for (0..9) {
if ($mday2 == $_) {
print qq|<option value="$_" selected>$_\n|;
} else {
print qq|<option value="$_">$_\n|;
}
}
print qq|</select>日<br>\n|;
print qq|または\n|;
print qq|<select name="day3">\n|;
print qq|<option value="">\n|;
print qq|<option value="a">上旬\n|;
print qq|<option value="b">中旬\n|;
print qq|<option value="c">下旬\n|;
print qq|</select>\n|;
を削除。
同じように953行目辺りの同じ記述を削除。
nik.cgi 115行目あたり
elsif ($mode == 2) { # ほかの記事選択FORM
if ($FORM{'day3'}) { &logvw_w3; }
}
これを↓にかえる
elsif ($mode == 2) { # ほかの記事選択FORM
&logvw_w3;
}
で、またkei.pl
483行目辺りの
sub logvw_c3 {
のサブルーチン内。
open (IN,$log_file_c);
@line = <IN>;
close (IN);
foreach $line (@line) {
(@_) = split(/\t/,$line);
if ($in{'day3'} eq "a") {
for (1..10) {
$_ = sprintf("%02d", $_);
$chh = "$in{'year'}$in{'mon'}$_";
if ($_[0] =~ /^$chh/) {
push(@datas,$line);
}
}
} elsif ($in{'day3'} eq "b") {
for (11..20) {
$chh = "$in{'year'}$in{'mon'}$_";
if ($_[0] =~ /^$chh/) {
push(@datas,$line);
}
}
} elsif ($in{'day3'} eq "c") {
for (21..32) {
$chh = "$in{'year'}$in{'mon'}$_";
if ($_[0] =~ /^$chh/) {
push(@datas,$line);
}
}
} else {
$chh = "$in{'year'}$in{'mon'}$in{'day1'}$in{'day2'}";
if ($_[0] =~ /^$chh/) {
push(@datas,$line);
}
}
}
これを以下に変更
open (IN,$log_file_c);
@datas = <IN>;
close (IN);
同じように
sub logvw_w3 {
の中のものを変更。
でできそうな感じです。
案の定テストをしていないので、動かなかったら再度質問してください。