検索(sub NickySerch)を以下のように変更 # # 検索 # sub NickySerch{ my($next, $back,$pagea,$pageb); my($zk,$zko,$zha,$zhb,$i); my($SWord,$cword,$skekka); my($hania,$hanib,$hiduke,$sts,$ncfname); my($iflag,$hili,$yflag,$mflag,$jflag,$dflag,$ttflag,$cflag); if($Iserch){ $sts=&ReqJcode(); &jcode'sjis2euc(\$SerchWord) if( $sts ); } $ModeSub=16; $Mode="MONTH"; if ($SerchWord =~ / sw(\d\d?\d?\d?)$/){ $SPageNo=$1; $SerchWord=~s/ sw(\d\d?\d?\d?)$//; } $VWord = &tagenc($SerchWord); $DWord = $SerchWord; $DWord =~ s/([^\w ])/'%' . unpack('H2', $1)/eg; $DWord =~ tr/ /+/; $SerchWord=~s/ / /g; $zha = qr{(?"; }else{ if( $UseSearchHD eq "Yes" ){ $head2nd=~s//<title>$TWord \- /i; $head2nd=~s/(type=\"text\" name=\"SerchWord\")/$1 value=\"$VWord\"/i; print &put_macro($head2nd); }else{ $head=~s/<title>/<title>$TWord \- /i; $head=~s/(type=\"text\" name=\"SerchWord\")/$1 value=\"$VWord\"/i; print &put_macro($head); } } $Scnt = 0; SLABEL:for $gfn(@nli){ $NickyFname="$vDir/$$gfn[0]"; &GetDateFromFname(); &GetNickyFile($NickyFname); if($cflag ==1){ $Tmessage =""; $ncfname=$NickyFname; $ncfname=~s/(\/\d\d\d\d\w).*?nky/$1\.cmnt/; if( open(RRDD, $ncfname) ){ binmode(RRDD); while(<RRDD>){$Tmessage .= $_;} close(RRDD); } } next if( $cflag==1 && !$Tmessage); next if( !$Title && !$Message ); next if($year>2900); if ($iflag > 0){ next if( !$GrpFileName ); } $hiduke=$year.$month.$day; next SLABEL if($hiduke < $hania); if(!($hanib == 0)){ next if($hiduke > $hanib); } $msg=$SerchWord; $Tmessage = $Title.$Message if(!$cflag) ; $Tmessage =~ s/<[^>]*>//g; while(){ if($SerchWord =~ /([^(]|^)([0-9a-zA-Z])/){ if($2 =~ /([^(]|^)([a-z])/){ $zk =pack("C*", 0xA3, ord($2) + 0x80); $zko =pack("C*", 0xA3, ord($2) + 0x60); $SerchWord=~s/([^(]|^)([a-z])/$1($2\|$zk\|$zko)/; }elsif($2 =~ /([^(]|^)([A-Z])/){ $zk =pack("C*", 0xA3, ord($2) + 0xA0); $zko =pack("C*", 0xA3, ord($2) + 0x80); $SerchWord=~s/([^(]|^)([A-Z])/$1($2\|$zk\|$zko)/; }else{ $zk =pack("C*", 0xA3, ord($2) + 0x80); $SerchWord=~s/([^(]|^)([0-9])/$1($2\|$zk)/; } }else{ last; } } @SWord = split(/ /, $SerchWord); $cword = @SWord; for($i = 0; $i<$cword; $i++){ if($SWord[$i] =~ /^\\\-/){ $SWord[$i]=~s/^\\\-//; if($ttflag == 1){ next SLABEL if($Title =~ /$SWord[$i]/i); }else{ next SLABEL if($Tmessage =~ /$SWord[$i]/i); } } else { if($ttflag == 1){ next SLABEL if($Title !~ /$SWord[$i]/i); }else{ next SLABEL if($Tmessage !~ /$SWord[$i]/i); } } } $Scnt++; next if ($Scnt < $SPageNo + 1); next if ($Scnt > $SPageNo + $Ken); if ($hili == 1){ for($i = 0; $i<$cword; $i++){ if( &IsIMODE() ){ $Message =~ s/$zha($SWord[$i])$zhb/<font color=\"#CD6600\">$1<\/font>/ig; $Title =~ s/$zha($SWord[$i])$zhb/<font color=\"#CD6600\">$1<\/font>/ig; 1 while $Title =~ s/(<[^>]*)(<font color=\"#CD6600\">)([^<]*)(<\/font>)/$1$3/ig; 1 while $Message =~ s/(<[^>]*)(<font color=\"#CD6600\">)([^<]*)(<\/font>)/$1$3/ig; }else{ $Message =~ s/$zha($SWord[$i])$zhb/<span class=\"hili\">$1<\/span>/ig; $Title =~ s/$zha($SWord[$i])$zhb/<span class=\"hili\">$1<\/span>/ig; 1 while $Title =~ s/(<[^>]*)(<span class=\"hili\">)([^<]*)(<\/span>)/$1$3/ig; 1 while $Message =~ s/(<[^>]*)(<span class=\"hili\">)([^<]*)(<\/span>)/$1$3/ig; } } } if ($tflag == 1){ &NickySerchTitle($yflag,$mflag,$iflag,$jflag); $yflag = $year; $mflag = $month; print $br; }elsif ($iflag == 2 && !&IsIMODE()){ &NickySerchImg(); }else{ if( &IsIMODE() ){ &PutNickyOneDayIMODE(); }else{ &PutNickyOneDay(); print $br; } } } if ($tflag == 1){ if( &IsIMODE() ){ print "<\/dd><hr>"; }else{ print "<\/td><\/tr><\/table>"; } } if(!$dflag){ $pagea = $SPageNo + 1; $pageb = $SPageNo + $Ken ; $skekka="『$VWord』を含む記事 $Scnt件"; if($Ken >= $Scnt){ }elsif($pageb >= $Scnt){ $skekka .= "中 $pagea〜$Scnt件"; }elsif(($Ken < $Scnt)&&($pageb < $Scnt)){ $skekka .= "中 $pagea〜$pageb件"; } if( &IsIMODE() ){ &jcode'euc2sjis(\$skekka); &jcode'euc2sjis(\$VWord); print "$skekka<br>"; }else{ print "<div class=\"kekka\">$skekka</div>\n"; } } if( !&IsIMODE() ){ print "<div class=\"pastlink\">\n"; } $next = $SPageNo + $Ken; $back = $SPageNo - $Ken; if ($back >= 0) { print "<a href=\"$cgipath?SerchWord=$DWord sw$back\">$MsgNew</a>\n"; } if( $MsgPageOut && !&IsIMODE() ){ &PutSerchPageTag(); } if ($next < $Scnt) { print " <a href=\"$cgipath?SerchWord=$DWord sw$next\">$MsgOld</a>\n"; } print "<\/div>"; if($dflag ==1){ $VWord=""; } if( &IsIMODE() ){ $iFoot = &put_macro($iFoot); &jcode'euc2sjis(\$iFoot) if( $sts ); $iFoot=~s/name=\"SerchWord\"/name=\"SerchWord\" value=\"$VWord\"/i; print $iFoot; }else{ $foot=~s/(type=\"text\" name=\"SerchWord\")/$1 value=\"$VWord\"/i; $foot2nd=~s/(type=\"text\" name=\"SerchWord\")/$1 value=\"$VWord\"/i; if( $UseSearchFT eq "Yes" ){ print &put_macro($foot2nd); }else{ print &put_macro($foot); } } } sub PutSerchPageTag { local($i, $j, $cntl, $lastpage, $fs, $fe); my( $cnt,$spage,$p); $fs=$fe=""; if( $tagpl ne "strict" ){ $fs="<font size=$MsgOldSize>"; $fe="</font>"; } #件数分リンクする print $fs; if( ($Scnt > $Ken) && ($SPageNo) ){ print "$MsgOldNEWks<a href=\"$cgipath?SerchWord=$DWord\">$MsgOldNEW</a>$MsgOldNEWke"; }elsif($Scnt <= $Ken){ }else{ print "$MsgOldNEWks<b>$MsgOldNEW</b>$MsgOldNEWke"; } $j=$Scnt-$Ken; $lastpage=$j/$Ken; if( $j%$Ken ){ $lastpage=($j-($j%$Ken))/$Ken; $lastpage++; } $lastpage=0 if( $lastpage < 0 ); $maxpage=10; $cnt=$SPageNo/$Ken-($maxpage/2); $maxpage=$maxpage-1; $cntl=0; if( $cnt + $maxpage > $lastpage ){ $cnt=$lastpage-$maxpage; } if( $cnt < 1 ){ $cnt = 1; } for($j=$Ken+$cnt*$Ken; ($j<$Scnt+$Ken) && ($cntl<$maxpage) ; $j+=$Ken){ $spage=$cnt * $Ken; if( $spage != $SPageNo ){ print "$ks<a href=\"$cgipath?SerchWord=$DWord sw$spage\">$cnt</a>$ke"; }else{ print "$ks$cnt$ke"; } $cnt++; $cntl++; } $p=$lastpage*$Ken; print "$MsgOldOLDks<a href=\"$cgipath?SerchWord=$DWord sw$p\">$MsgOldOLD</a>$MsgOldOLDke" if($p!=$SPageNo); } sub NickySerchTitle{ my($len,$titlez,$mdstr,$pt,$sts); my($NWordy,$NWordm); ($yflag, $mflag,$iflag,$jflag) = @_ ; $pt="$year$month$day$daysub"; if( &IsIMODE() ){ $sts=&ReqJcode(); &jcode'euc2sjis(\$TLyear) if( $sts ); &jcode'euc2sjis(\$TLmonth) if( $sts ); &jcode'euc2sjis(\$TLday) if( $sts ); &jcode'euc2sjis(\$Title) if( $sts ); } $mdstr="<a href=\"$cgipath?DT=$pt#$pt\""; $len=200; $titlez = $Message; $titlez =~ s/<div.*/\.\.\./; if( length($titlez) >= $len ) { $titlez =~ s/(<br>|<br \/>|<p>).*/\.\.\./; } $titlez =~ s/<[^>]*>//g; if( length($titlez) >= $len ) { $titlez =substr($titlez,0,$len); $titlez =~ s/([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE][\xA1-\xFE])/$1\n/g; $titlez =~ s/(\n.*?$)//; $titlez =~ s/\n//g; $titlez .= "..."; } if($jflag ==1){ $NWord .= " o"; } if($iflag ==1){ $NWord .= " i"; } $NWordy = "$NWord $year\/"; $NWordy =~ s/([^\w ])/'%' . unpack('H2', $1)/eg; $snurl="<a href=\"$cgipath?SerchWord=$NWordy\">"; if($yflag == 0){ if( &IsIMODE() ){ print "$snurl$year$TLyear<\/a><br><br>\n"; }else{ print "<table border=\"0\" class=\"ttl\" summary=\"title list\">"; print "<tr><td class=\"ttl_year\" colspan=\"4\">\n"; print "$snurl$year$TLyear<\/a>\n"; } }elsif($yflag == $year){ }else{ if( &IsIMODE() ){ print "$snurl$year$TLyear<\/a>\n"; }else{ print "<\/td><\/tr><tr><td class=\"ttl_year\" colspan=\"4\">\n"; print "$snurl$year$TLyear<\/a>"; $mflag = 0; } } $NWordm = "$NWord $year\/$month\/"; $NWordm =~ s/([^\w ])/'%' . unpack('H2', $1)/eg; $snurl="<a href=\"$cgipath?SerchWord=$NWordm\">"; if($mflag == $month){ if( &IsIMODE() ){ }else{ print "<\/td><\/tr>\n"; print "<tr><td class=\"ttl_month\"><\/td>"; } }else{ if( &IsIMODE() ){ print "</dd>$snurl$month$TLmonth<\/a><dd>\n"; }else{ print "<\/td><\/tr>\n"; print "<tr><td class=\"ttl_month\">$snurl$month$TLmonth<\/a><\/td>"; } } if( !&IsIMODE() ){ print "<td class=\"ttl_day\">"; if($GrpFileName){ print "$MsgOldTG"; }else{ print "$br"; } print "</td><td class=\"ttl_day\">"; } if( !$Title){ print "$mdstr title=\"$titlez\">$day$TLday<\/a>"; }else{ print "$day$TLday"; } print "<\/td><td class=\"ttl_day\">"; if( &IsIMODE() ){ print "$mdstr>$Title<\/a>\n"; }else{ print "$mdstr title=\"$titlez\">$Title<\/a>" if($Title); } } sub NickySerchImg{ my($pt,$fn,$fn1); $pt="$year$month$day$daysub"; &MakeNickyDir(); $GrpPath="$NickyDir/$GrpFileName"; $fn1=$GrpFileName; $fn1=~s/\..*$//; $fn="$NickyDir/$fn1"; $thumb=&get_thumb_name($fn); $GrpPath=$thumb if($thumb); ($w, $h)=&GetImageSize($GrpPath); print "<div class=\"s_img\">"; if( $tagmode eq "xhtml" ){ print "<a href=\"$cgipath?DT=$pt#x$pt\">"; }else{ print "<a href=\"$cgipath?DT=$pt#$pt\">"; } if(!$nalt){ $nalt=$GrpFileName; } print "<img src=\"$GrpPath\" width=\"$w\" height=\"$h\" alt=\"$nalt\">\n"; print "<\/a><\/div>"; } -------------------- ↑個別記事リンクにしてる場合は if( $tagmode eq "xhtml" ){ print "<a href=\"$cgipath?DT=$pt#x$pt\">"; }else{ print "<a href=\"$cgipath?DT=$pt#$pt\">"; } の部分を print "<a href=\"$cgipath?DTO=$pt\">"; に変更 ------------------- また $mdstr="<a href=\"$cgipath?DT=$pt#$pt\""; の部分を $mdstr="<a href=\"$cgipath?DTO=$pt\""; に変更 ---------------------- これ以降はiMode版で日記内検索をつけたい場合 iMode版のページのヘッダやフッタにフォームをつけたい場合は、 <form method="post" action="./nicky.cgi"> <input type="text" name="SerchWord"> <input type="submit" name="Iserch" value="検索"> </form> とかそんなのを入れる。 sub NickySerchでそういう設定したのでnameを「Iserch」にすれば多分使えるようになる ---------------------- iMode版でnicky.cgi?SetSerchからのリンクで検索フォームを使いたい時は、 検索キーワード設定(sub NickySetSearch)を以下のような感じにする # # 検索キーワード設定 # sub NickySetSearch{ &nickyGetHead(); if( &IsIMODE() ){ $iHead = &put_macro($iHead); $sts=&ReqJcode(); &jcode'euc2sjis(\$iHead) if( $sts ); print $iHead; }else{ if( $UseSearchHD eq "Yes" ){ print &put_macro($head2nd); }else{ print &put_macro($head); } } print "<form method=\"POST\" action=\"$cgipath\">"; if( &IsIMODE() ){ print "<input type=\"text\" name=\"SerchWord\">"; print "<input type=\"submit\" name=\"Iserch\" value=\"Serch\">"; }else{ print "  検索キーワード <input type=\"text\" name=\"SerchWord\">"; print " <input type=\"submit\" name=\"MODE\" value=\"検索\">"; } print "</form>\n"; if( &IsIMODE() ){ $iFoot = &put_macro($iFoot); $sts=&ReqJcode(); &jcode'euc2sjis(\$iFoot) if( $sts ); print $iFoot; }else{ &NickyReturn(); if( $UseSearchFT eq "Yes" ){ print &put_macro($foot2nd); }else{ print &put_macro($foot); } } }