■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50 [PR]ぜろちゃんねるプラス[PR]  
レス数が1000を超えています。残念ながら全部は表示しません。

ぜろちゃんねるプラス質問スレ

1 :windyakin ★:2011/07/10(日) 16:29:56.74 ID:???0
■ぜろちゃんねるプラスWiki
http://sourceforge.jp/projects/zerochplus/wiki/FrontPage

712 :名無しさん@ぜろちゃんねるプラス:2013/11/22(金) 17:29:25.42 ID:9eNMiJOq0
僕も691のプラグインが欲しいのですがまだ時間かかりますでしょうか

713 :0ch+開発担当 ◆0chp.sx.ik :2013/11/22(金) 22:40:02.10 ID:ATdR96Fn0
>>712
明日作って公開するつもりです。

714 :名無しさん@ぜろちゃんねるプラス:2013/11/23(土) 00:59:59.92 ID:tKyTsoZP0
よろしくお願いします

715 :名無しさん@ぜろちゃんねるプラス:2013/11/23(土) 11:26:20.21 ID:i7bfZ4TB0
>>711
解決しました!ありがとうございます

716 :0ch+開発担当 ◆0chp.sx.ik :2013/11/23(土) 21:29:23.74 ID:6ROEZnZB0
>>691,712
「同一スレッド乱立防止」プラグインを作ってみました。これでどうでしょうか。
http://svn.sourceforge.jp/svnroot/zerochplus/codes/0ch_sametitle.pl

717 :0ch+開発担当 ◆0chp.sx.ik :2013/11/23(土) 21:31:06.45 ID:6ROEZnZB0
>>696
module/varda.pl の(0.7.4オリジナルで)159行目の
  $Page->Print("<a href=\"$path\">$i: $name($res)</a><br> \n");
という1行を以下のコードに書き換えてください
  my $text = '';
  if (open(my $fh, '<', "$basePath/dat/$key.dat")) {
    while (<$fh>) {
      last if(eof($fh));
    }
    close($fh);
    $text = (split(/<>/, $_, -1))[3];
    $text =~ s/<[bh]r>/ /gi;
    $text =~ s/<[^>]+>//g;
    $text =~ s/\s+/ /g;
    require Encode;
    $text = Encode::decode('sjis', $text);
    $text = substr($text, 0, 100);
    $text = Encode::encode('sjis', $text);
    $text = " : $text ";
  }
  $Page->Print("<a href=\"$path\">$i: $name($res)</a>$text<br> \n");

>>689を適用していると考えてコードを書いていますが、
$basePathを定義していなければ適当なところに以下のコードを加えてください。
  my $basePath = $Sys->Get('BBSPATH') . '/' . $Sys->Get('BBS');

718 :名無しさん@ぜろちゃんねるプラス:2013/11/23(土) 21:45:34.40 ID:Q5wSE/IV0
>>717
ありがとうございます。
うまくできました

初期設定だと3件の表示ですが、これを10件表示したい場合はどうすれば良いのでしょうか?

719 :名無しさん@ぜろちゃんねるプラス:2013/11/23(土) 21:50:30.12 ID:AppZut7r0
timecountに依存せず操作するにはレス数やスレ立てを規制するにはどうしたらよいでしょうか?
要するに忍法帖のようなもので書き込み数で規制が強まったより、弱まったりするようにしたいのですがそのような方法が分かりません
vara.plのをコピーして使おうと思ったのですがtimecountの値を読み込んでいるみたいなので無理そうです……
どうすればいいでしょうか?

720 :名無しさん@ぜろちゃんねるプラス:2013/11/23(土) 21:55:31.37 ID:AppZut7r0
>>719
えっと単純に一時間以内に建てられるスレッドやレス数をtimecountなどに依存せず設定したいのです
例えばレベル15以下の人は一時間の間に2個まで建てられて15レスできる
この、一時間に2個、15レスの規制部を作りたいんです

721 :名無しさん@ぜろちゃんねるプラス:2013/11/23(土) 22:04:59.66 ID:Q5wSE/IV0
>>718の件ですが自己解決しました
ありがとうございました

722 :0ch+開発担当 ◆0chp.sx.ik :2013/11/23(土) 22:35:18.74 ID:6ROEZnZB0
>>719-720
スレ立ての方は、既存の時間依存規制を利用して
vara.plの506行目あたりの$tateHourと$tateCountをレベルに応じて設定すればOKです。

レスの方は同様の時間依存規制がないので、PEREGRIN::IsTatesugi() と同様のものを作る必要があります。
要求とは違いますが、Samba規制を利用すれば$Sambaの値を変更するだけなので簡単です。

それ以外の規制(timecount関連など)は無効にしてしまえばいいと思います。

723 :名無しさん@ぜろちゃんねるプラス:2013/11/23(土) 22:40:46.77 ID:AppZut7r0
>>722
分かりました、やってみます
有難うございました

724 :名無しさん@ぜろちゃんねるプラス:2013/11/24(日) 03:56:32.82 ID:9FsDDkPU0
>>717の件ですが、省略表示をしたい場合どうすれば良いでしょうか?
100文字以上はindex.htmlと同じように(省略されました・・全てを読むにはここを押してください)と表示させたいのですが

725 :名無しさん@ぜろちゃんねるプラス:2013/11/24(日) 08:32:45.83 ID:8nFoy+5V0
特定のレスにアンカーで属性を付け足すというのはどうすればいいでしょう?
例えば>>123とやったら123レス目に属性を付け足す、という風に

726 :0ch+開発担当 ◆0chp.sx.ik :2013/11/24(日) 13:49:39.71 ID:APx4yCnj0
>>724
  $text = substr($text, 0, 100);
の1行を以下のコードに置き換えてください。
  if (length($text) > 100) {
    $text = substr($text, 0, 90);
    $text = Encode::encode('sjis', $text);
    my $respath = $Conv->CreatePath($Sys, 'O', $bbs, $key, $res);
    $text = "$text ...<a href=\"$respath\">(省略)</a>"
  } else {
    $text = Encode::encode('sjis', $text);
  }

このコードではリンクを押すとr.cgiに飛ぶようになっています。
read.cgiにするならCreatePathの 'O' を 0 に変えてください。

727 :0ch+開発担当 ◆0chp.sx.ik :2013/11/24(日) 14:02:09.39 ID:APx4yCnj0
>>725
レスに属性を付加する機能は用意していません。
自前で情報を保存するか、スレッドの属性付加機能を借りるかのどちらかです。

  my $CGI = $Sys->Get('MainCGI');
  my $Threads = $CGI->{'THREADS'} || $Sys->Get('_THREAD_');
  my $threadid = $Sys->Get('KEY');
 
  my $text = $Form->Get('MESSAGE');
  foreach my $res ($text =~ /&gt;&gt;([0-9]+)/g) {
    $Threads->SetAttr($threadid, "res$res", '属性情報');
  }

728 :名無しさん@ぜろちゃんねるプラス:2013/11/24(日) 17:04:42.62 ID:8nFoy+5V0
特定の属性がついているとそれ以降は書き込めないというプラグインを作っています
しかし何度やっても書き込めるんです……
どこが違うのでしょうか?
if ($Sys->Equal('MODE', 1)) {
if ($mail =~ s/!muri//g) {
$Form->Set('mail',"");
$Threads->SetAttr($key,'muri');
$Threads->SaveAttr($Sys);
}
}
my $muri = $Threads->GetAttr($key, 'muri');
if ($muri) {
PrintBBSError($Sys,$Form,910);
}


PrintBBSEroorはちゃんと入れていますし、対応する番号のエラーメッセージも挿入したのに……なぜでしょう?


729 :名無しさん@ぜろちゃんねるプラス:2013/11/24(日) 17:04:59.82 ID:8nFoy+5V0
ちなみに属性自体はちゃんとついています


730 :0ch+開発担当 ◆0chp.sx.ik :2013/11/24(日) 17:12:39.05 ID:APx4yCnj0
>>728
SetAttrの引数は (スレッド番号, 属性名, 属性値) となっています。
  $Threads->SetAttr($key, 'muri', 1);
このように属性を設定してください。

731 :0ch+開発担当 ◆0chp.sx.ik :2013/11/24(日) 17:17:25.66 ID:APx4yCnj0
>>728
どのような仕様にするのかはわかりませんが、
  if ($Sys->Equal('MODE', 1))
この条件は スレ立て時(>>1) のみ真になります。
この場合だと>>2以降で !muri 指定は出来ません。

732 :名無しさん@ぜろちゃんねるプラス:2013/11/24(日) 17:24:41.80 ID:8nFoy+5V0
>>731
えっとですね……
正確に説明いたしますと、スレ立て時に!muriとすると無理属性が付きます
そしてそのスレは特定条件を満たした方のみが書き込めるようにしたいのです
最初はその条件も書いていたのですができなかったのでまずはmuri属性だったらエラーを表示するように組みたかったのですが……
それでも失敗したんです
属性をつければいいのでスレ立て時でいいんです
しかしなぜかレス時にエラーメッセージが表示されないんです……

733 :名無しさん@ぜろちゃんねるプラス:2013/11/24(日) 17:40:09.87 ID:8nFoy+5V0
>>730
Software error:

Can't locate object method "getConfig" via package "ORALD" at ./plugin/0ch_PP.pl line 23.

とはいったいなんでしょうか……

734 :名無しさん@ぜろちゃんねるプラス:2013/11/24(日) 17:47:36.47 ID:8nFoy+5V0
もうソース公開します
http://sharesrc.appspot.com/code/cb93q88p4sjgadudu1h2
特定の部分(プラグイン名や説明)はただ消してるだけです
これを実行するとエラーが表示されず、1を付け足しても>>733が表示されるのです

735 :0ch+開発担当 ◆0chp.sx.ik :2013/11/24(日) 18:16:38.07 ID:APx4yCnj0
>>732
なるほど、そうでしたか。
>>734
サイトがエラーを吐いていてコードを確認できません。

>>733
http://svn.sourceforge.jp/svnroot/zerochplus/codes/0ch_template3.pl
こちらの sub PrintBBSError を使ってみてください。
引数が変わって以下のようになります。
  PrintBBSError($Sys, 910);

736 :名無しさん@ぜろちゃんねるプラス:2013/11/24(日) 18:19:22.02 ID:8nFoy+5V0
>735
できました
有難うございました

737 :名無しさん@ぜろちゃんねるプラス:2013/11/24(日) 19:18:15.39 ID:9FsDDkPU0
>>726
できました
ありがとうございました

738 :名無しさん@ぜろちゃんねるプラス:2013/11/25(月) 11:48:50.27 ID:uxphSOTt0
■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 最新50
とありますが、2ちゃんねるみたいに
■掲示板に戻る■ 全部 1- 最新50
にするにはどうしたら良いでしょうか?

739 :0ch+開発担当 ◆0chp.sx.ik :2013/11/25(月) 20:05:31.84 ID:WRYGwHuf0
>>738
read.cgiの267行目辺りのforブロックを削除かコメントアウトして、
そのあたりに以下のコードを加えてください。
  my $path100 = $Conv->CreatePath($Sys, 0, $bbs, $key, '-100');
  $Page->Print(" <a href=\"$path100\">1-</a>\n");

740 :名無しさん@ぜろちゃんねるプラス:2013/11/25(月) 23:06:04.91 ID:uxphSOTt0
>>739
ありがとうございました。

741 :名無しさん@ぜろちゃんねるプラス:2013/11/26(火) 07:46:15.96 ID:GgBe4gT30
read.cgiのバナーについてですが、
<table border="1" cellspacing="7" cellpadding="3" width="100%" bgcolor="#ccffcc" align="center">
</table>
はどこで削除すれば良いでしょうか?

また、バグではないのですが、気になった部分がありましたのでついでにご報告します
SETTINGS.TXTを設定する管理画面(掲示板>制限・規制設定)の件ですが、

連続書き込み規制の
・直近x書き込みのうち、y回まで書き込み可能
のxとyの値が逆だと思います

また、同一ページにある
スレッド作成制限(キャップ)のところの設定が
・キャップのみ可□ 
と文字化け?しているようです

742 :0ch+開発担当 ◆0chp.sx.ik :2013/11/26(火) 20:08:44.57 ID:ntDOUmX90
>>741
>どこで削除すれば良いでしょうか?
module/denethor.pl の207行目あたりです。

>xとyの値が逆だと思います
確かにそうですね、報告ありがとうございます。

>文字化け?しているようです
こちらも報告ありがとうございます。

743 :名無しさん@ぜろちゃんねるプラス:2013/11/27(水) 19:30:05.32 ID:mfdkLNLH0
すみません。
旧のぜろちゃんねからプラスへ移行はそのままで可能ですか?

744 :0ch+開発担当 ◆0chp.sx.ik :2013/11/27(水) 20:10:59.17 ID:wVAvZ7ni0
>>743
大部分は互換性を保っているので移行できるとは思いますが、
細かい点で調整が必要になるかもしれません。

移行前に必ずバックアップを取ってください。

745 :名無しさん@ぜろちゃんねるプラス:2013/11/27(水) 20:25:05.13 ID:mfdkLNLH0
>>744
返事有り難うございます

/test を上書きしたところ、Adminログインでページアウトして
掲示板画面では3001を吐いてました。

Build Version:0ch BBS 2007-01-24

746 :0ch+開発担当 ◆0chp.sx.ik :2013/11/27(水) 21:08:51.13 ID:wVAvZ7ni0
>>745
/test/infoのファイルはerrmsg.cgi以外は設定ファイルなのでなるべく上書きしないようにしてください。
adminはどの段階でどのようなエラーメッセージが表示されますか?

747 :名無しさん@ぜろちゃんねるプラス:2013/11/27(水) 22:14:57.60 ID:mfdkLNLH0
>>746

Adminiは初期パス入れてずっと読み込み中で止まってました。
上書きすべきでないファイルとかあればありがたいです。


748 :0ch+開発担当 ◆0chp.sx.ik :2013/11/27(水) 22:40:15.21 ID:wVAvZ7ni0
>>747
何が原因なのかわかりませんね…

試しに0.7.4のtestを新しく /newbbs/test に配置して動作確認だけしてみてください。
パーミッションの設定は以下のページのとおりです。
http://sourceforge.jp/projects/zerochplus/wiki/Permission

749 :名無しさん@ぜろちゃんねるプラス:2013/11/28(木) 06:12:14.35 ID:xyKu5Zyg0
>>748


設置してみましたが…管理画面が表示されるもののログインボタンを押すとずっと読み込みのままになります。


旧スクリプトは設置可能
プラスは設置→admini画面→パスとユーザ入力→ずっと読み込んだまま

IIS7.0です。

750 :0ch+開発担当 ◆0chp.sx.ik :2013/11/28(木) 20:45:17.84 ID:1amWznGs0
>>749
IISだったんですね。
まったく動作確認したことがなかったので今インストールして実験しているところです。
同じ現象が確認できたので原因を探ってみます。

751 :名無しさん@ぜろちゃんねるプラス:2013/11/29(金) 07:51:39.77 ID:J/XHLSpB0
連続書き込み規制の
・直近x書き込みのうち、y回まで書き込み可能
のxとyの値が逆だと思います

また、同一ページにある
スレッド作成制限(キャップ)のところの設定が
・キャップのみ可□ 
と文字化け?しているようです

はどこで修正すれば良いでしょうか?

752 :0ch+開発担当 ◆0chp.sx.ik :2013/11/29(金) 12:58:41.30 ID:kcxT1xeD0
>>751
mordor/bbs.setting.pl を差し替えてください。
http://svn.sourceforge.jp/svnroot/zerochplus/zerochplus/branches/0.7.x/test/mordor/bbs.setting.pl

753 :0ch+開発担当 ◆0chp.sx.ik :2013/11/29(金) 18:55:59.23 ID:kcxT1xeD0
>>749
やっと原因がわかりました。
samwise.plとCGI.pmが競合していたようです。(IIS特有の現象)

module/samwise.pl の26行目の read の後に close を加えてください。
  read STDIN, $form, $ENV{'CONTENT_LENGTH'};
  close STDIN;

754 :名無しさん@ぜろちゃんねるプラス:2013/11/29(金) 19:11:05.96 ID:J/XHLSpB0
>>752
ありがとうございました

755 :名無しさん@ぜろちゃんねるプラス:2013/11/29(金) 21:38:30.81 ID:gQCWy7nR0
>>753

無事起動しました。
掲示板を選択後のキャップグループをクリックすると502エラーが出ます。
システムでは発生しません。


キャップグループ
javascript:DoSubmit('bbs.cap','DISP','LIST');
エラー

キャップ
javascript:DoSubmit('sys.cap','DISP','LIST');

正常遷移


Q書き込みログは何処で表示させるのでしょうか?
若しくは表示させる設定がるのでしょうか?
荒らし対応等の必要のためです。

756 :名無しさん@ぜろちゃんねるプラス:2013/11/29(金) 21:58:21.05 ID:kIRa5JFw0
私も>>722のようなことがしたいのですが一体どうすればいいのでしょうか?
説明で理解できませんでした

757 :0ch+開発担当 ◆0chp.sx.ik :2013/11/30(土) 00:44:08.66 ID:RFkAcj0+0
>>755
>502エラーが出ます。
こちらでは確認できません。エラー内容は分かりますか?

>書き込みログは何処で表示させるのでしょうか?
スレッド一覧から対象のスレッドをクリックするとレス一覧とホスト情報が表示されます。


>>756
規制まわりの操作はそもそもプログラムの構造がよくないので簡単には出来ませんが、
プラグインでやるとすれば掲示板設定を一時的に書き換える方法が一番簡単だと思います。
  my $CGI = $Sys->Get('MainCGI');
  my $Set = $CGI->{'SET'};
  $Set->Set('BBS_TATESUGI_COUNT', 3);
※規制処理より前に実行する必要があるので「拡張機能タイプ」は(1|2)です。

※レベルシステムの実装についてはサポートしませんが、
個人の特定方法、Cookieの受け渡し方などの技術的な質問は受け付けます。

758 :名無しさん@ぜろちゃんねるプラス:2013/11/30(土) 08:08:59.03 ID:Wkt2jKZb0
>>757
ありがとうございました!
レベルを使うわけではないので、大丈夫です!

759 :名無しさん@ぜろちゃんねるプラス:2013/11/30(土) 08:23:23.63 ID:54SnL5Ii0
>>757
HTPの502エラーなので……

原因が解りました。
旧ゼロちゃんねるのキャップグループの設定がプラスと互換性が無いためでした。

一度これで仮運用してみようかと思います。

760 :名無しさん@ぜろちゃんねるプラス:2013/11/30(土) 10:44:43.29 ID:54SnL5Ii0
>>757

連続してエラーになるIPを一定時間アクセス禁止にする方法はありませんか?

2013/11/30 10:04 104 (1行長すぎ) 0ch+ BBS 0.7.4 20131106
2013/11/30 10:04 104 (1行長すぎ) 0ch+ BBS 0.7.4 20131106
2013/11/30 10:04 104 (1行長すぎ) 0ch+ BBS 0.7.4 20131106
2013/11/30 10:04 104 (1行長すぎ) 0ch+ BBS 0.7.4 20131106
2013/11/30 10:04 104 (1行長すぎ) 0ch+ BBS 0.7.4 20131106
2013/11/30 10:04 104 (1行長すぎ) 0ch+ BBS 0.7.4 20131106
2013/11/30 10:04 104 (1行長すぎ) 0ch+ BBS 0.7.4 20131106
2013/11/30 10:04 104 (1行長すぎ) 0ch+ BBS 0.7.4 20131106
2013/11/30 10:04 104 (1行長すぎ) 0ch+ BBS 0.7.4 20131106
2013/11/30 10:04 104 (1行長すぎ) 0ch+ BBS 0.7.4 20131106


掲示板のホスト規制かけててもエラーログは出てるようです。
海外ISPからのスクリプト投稿のようです>IPぐぐったら
今はサーバの機能でDenyにしてます。




761 :0ch+開発担当 ◆0chp.sx.ik :2013/11/30(土) 13:35:54.05 ID:RFkAcj0+0
>>760
>一定時間アクセス禁止にする方法
CGIからアクセス禁止の設定ができる仕組みはありません。
bbs.cgiに限定すれば出来なくもないですが、本体を改造する必要があります。

>エラーログは出てるようです
基本的に0chのエラーページが表示されるものは全てエラーログに記録されます。

英文スパムであれば「スパムキラー」プラグインを使ってみてください。
※当然エラーログは出力されます。

762 :名無しさん@ぜろちゃんねるプラス:2013/11/30(土) 13:53:13.10 ID:54SnL5Ii0
>>757
IIS7.0
バニラの状態で設置
./
└cgi
  └testbbs
     └test(仮想フォルダ) 

なお、/testは仮想フォルダ化(そうしないと502エラー)

    サーバ:http://****.dyndns.dk
    CGIパス:/cgi/testbbs/test
    掲示板パス:..
    管理データフォルダ:/info
    基本データフォルダ:/datas

1.Indexの作成を確認
2.スレッドの作成を確認。
3.書き込みボタンからの書き込みを確認。
4.Index更新を確認。
5.最新を表示、全部読む等のリンクをクリックすると3001エラー(read.cgiのKeyが読み込めない)

ちなみに、2chブラウザからは読み込みができる。
Indexページから3001エラーで読みこない。

763 :名無しさん@ぜろちゃんねるプラス:2013/11/30(土) 13:54:55.58 ID:54SnL5Ii0
>>761

了解です。
スパムキラーを使用します。

>>762の様なエラーがでております。
ご教授ください。


764 :0ch+開発担当 ◆0chp.sx.ik :2013/11/30(土) 14:44:18.91 ID:RFkAcj0+0
>>762
IISについては詳しくないのですが、どうやらPATH_INFOが無効になっているようです。
こちらはIIS7.5なので少し違う点もあるかもしれませんが、一応設定手順です。

1. 構成エディターを開く
2. セクション「system.webServer/handlers」を選んで、「(コレクション)」を選択
  「項目の編集」でコレクションエディターを開く
3. CGI(Perl)のハンドラーを選択してプロパティ「allowPathInfo」を「True」に切り替える
4. エディターを閉じて「適用」する

765 :名無しさん@ぜろちゃんねるプラス:2013/11/30(土) 15:12:44.13 ID:54SnL5Ii0
>>764
ありがとうございます。
正常に稼働を確認しました。

IISでする場合は……
1.CGI-EXEをcgiへ
2.web.configでallowPathInfoを編集する。

ココらへんが重要みたいですね。


当方の環境のみののでしょうけど、testフォルダを仮想フォルダ化しないといけないみたいです。


766 :名無しさん@ぜろちゃんねるプラス:2013/11/30(土) 19:27:18.24 ID:Wkt2jKZb0
ゼロチャンネルプラスを使用した鯖でCGIを作るときに表示させたいものがある場合に$Pageって使わなければいけないのでしょうか?

767 :0ch+開発担当 ◆0chp.sx.ik :2013/11/30(土) 19:46:06.31 ID:RFkAcj0+0
>>765
>testフォルダを仮想フォルダ化
カレントディレクトリの問題かもしれません。

>>766
特に制約はありません。

768 :たろう:2013/12/01(日) 00:54:23.45 ID:Nfaw0pUu0
はじめまして。
大変よいスクリプトに出会うことができ感謝しております。
こちらの2ちゃんねる風掲示板は、utf8で稼働させることは
可能でしょうか。
お忙しいところ恐縮ですが何卒よろしくお願いいたします。

769 :0ch+開発担当 ◆0chp.sx.ik :2013/12/01(日) 01:08:39.99 ID:7LzecaBz0
>>768
スクリプトは完全にShift_JISに依存してしまっていて手がつけられない状態です。
また、.datやsubject.txtについてはShift_JISでなければほとんどの専ブラで文字化けしてしまいます。

Shift_JISのまま稼働させるのが無難だと思いますが、
なにかUTF-8でなければならない理由があるのでしょうか。

770 :名無しさん@ぜろちゃんねるプラス:2013/12/01(日) 10:20:59.12 ID:6w7oSQ670
>>769
プラグインの設定値をCGIで受け取ることは可能でしょうか
設定値であるhogehogeを受け取ろうとしました
my $this = shift;
my $hogehoge = $this->Get('_hogehoge');
ですが以下のようなエラーメッセージが
Can't call method "Get" on an undefined value at count.cgi line 14.
どうすればよいでしょうか


771 :0ch+開発担当 ◆0chp.sx.ik :2013/12/01(日) 12:32:17.39 ID:7LzecaBz0
>>770
設定はCGIで使うためにあるのでもちろん可能です。
GetではなくGetConfを使ってください。
  my $hogehoge = $this->GetConf('_hogehoge');
  $this->SetConf('_hogehoge', $hogehoge);

772 :名無しさん@ぜろちゃんねるプラス:2013/12/01(日) 12:37:20.08 ID:6w7oSQ670
同じように返されました
Can't call method "GetConf" on an undefined value at count.cgi line 14.

773 :0ch+開発担当 ◆0chp.sx.ik :2013/12/01(日) 13:30:04.96 ID:7LzecaBz0
プラグイン外で取得するということだったんですね。


# システム管理オブジェクトを用意
require './module/melkor.pl';
my $Sys = MELKOR->new;
$Sys->Init();

# プラグイン管理オブジェクトを用意
require './module/athelas.pl';
$Plugins = ATHELAS->new;
$Plugins->Load($Sys);

# プラグインの個別設定を操作するオブジェクトを用意
my $pid = $Plugins->Get('CLASS', 'ZPL_testplugin');
my $Config = PLUGINCONF->new($Plugins, $pid);

# 設定
my $hogehoge = $Config->GetConfig('_hogehoge');
$Config->SetConfig('_hogehoge', $hogehoge);

774 :0ch+開発担当 ◆0chp.sx.ik :2013/12/01(日) 13:32:02.15 ID:7LzecaBz0
あるいはtest/plugin_conf/内の該当する設定ファイルを直接読み込む方法もあります。

775 :名無しさん@ぜろちゃんねるプラス:2013/12/01(日) 13:35:26.55 ID:6w7oSQ670
>>774
plugin_confですか?
……読み込み方を教えてください
ファイル名はhogehogeで

776 :0ch+開発担当 ◆0chp.sx.ik :2013/12/01(日) 13:46:29.82 ID:7LzecaBz0
>>775
「値の種類<>設定名<>設定値」という形式になっています。

my %conf = ();
if (open my $fh, '<', './plugin_conf/0ch_hogehoge.cgi') {
  while (<$fh>) {
    chomp($_);
    my (undef, $key, $val) = split /<>/, $_, -1;
    $conf{$key} = $val;
  }
  close $fh;
}

777 :名無しさん@ぜろちゃんねるプラス:2013/12/01(日) 13:51:20.53 ID:6w7oSQ670
>>776
設定値を変数に代入する場合にはどうすればいいのでしょうか
$hogehoge=設定名
でいいのでしょうか

778 :名無しさん@ぜろちゃんねるプラス:2013/12/01(日) 13:52:46.34 ID:6w7oSQ670
それとも先ほどのように
my $hogehoge =$this->GetConf('_設定名');
でいいのでしょうか

779 :0ch+開発担当 ◆0chp.sx.ik :2013/12/01(日) 13:54:59.06 ID:7LzecaBz0
>>777
$hogehoge = $conf{'_hogehoge'};
です。

>>778
その方法は$thisがプラグインのオブジェクトでなければ使えません。

780 :名無しさん@ぜろちゃんねるプラス:2013/12/01(日) 13:58:39.29 ID:6w7oSQ670
Global symbol "$hogehoge" requires explicit package name at hogehoge.cgi line 22.
なぜこのようになるのでしょうか

781 :名無しさん@ぜろちゃんねるプラス:2013/12/01(日) 14:00:03.63 ID:6w7oSQ670
何度もすいません、質問して
えっと、正直なところゼロチャンネルプラスで公開されていたkakikomi.plのようなプラグインを扱っているのです
そこで数値を読み込もうとしているのですがどうもうまくいかないという話で
本当に申し訳ございません

782 :0ch+開発担当 ◆0chp.sx.ik :2013/12/01(日) 14:07:19.15 ID:7LzecaBz0
>>780
もう少しPerlの基礎を学んではいかがですか。
これはエラーメッセージをググればすぐ解決できる問題です。
自己解決能力を身につけなければプログラミングは難しいと思いますよ。

783 :名無しさん@ぜろちゃんねるプラス:2013/12/01(日) 14:09:05.17 ID:6w7oSQ670
>>782
そうですね
ありがとうございました

784 :名無しさん@ぜろちゃんねるプラス:2013/12/01(日) 14:10:02.61 ID:6w7oSQ670
あ、分かりました
宣言ができていなかったみたいです
本当にしませんでした

785 :名無しさん@ぜろちゃんねるプラス:2013/12/01(日) 23:26:47.56 ID:Nfaw0pUu0
>>769
多言語対応にしたかったという理由がありまして
utf8でできるものなのかな、と思ったのです。
ご回答ありがとうございました。

786 :名無しさん@ぜろちゃんねるプラス:2013/12/09(月) 16:36:42.90 ID:HXKN32Nh0
http://jump.x0.to/のスクリプトは公開していないのでしょうか?
また、公開して頂くことはできませんでしょうか?

787 :0ch+開発担当 ◆0chp.sx.ik :2013/12/10(火) 22:06:17.97 ID:ZztuylMA0
>>786
今のところ公開はしていません。
また、開発者が不在(?)なので確認に少し時間がかかるかも知れません。

788 :名無しさん@ぜろちゃんねるプラス:2013/12/11(水) 00:20:17.84 ID:6YRy1M8l0
>>787
了解しました。気長に待っていますので、お手数をお掛けしますがよろしくお願い致します。

789 :名無しさん@ぜろちゃんねるプラス:2013/12/11(水) 11:34:38.13 ID:/bmJu/+vi
sage無効にすることはできますか?

790 :名無しさん@ぜろちゃんねるプラス:2013/12/12(木) 02:21:56.49 ID:ea+YyacD0
いつもお世話になっています
質問なのですが、IDをしたらばの設定のように常時固定できる方法はありますか?


791 :0ch+開発担当 ◆0chp.sx.ik :2013/12/12(木) 19:07:51.88 ID:7wrU0koL0
>>789
module/vara.pl の139行目あたりの以下の行をコメントアウトまたは削除してください。
  $updown = '' if ($Form->Contain('mail', 'sage'));

>>790
module/galadriel.pl の658行目あたりの以下の行をコメントアウトまたは削除してください。
  $ctx->add(':', join('-', (localtime)[3,4,5]));

792 :名無しさん@ぜろちゃんねるプラス:2013/12/13(金) 16:54:18.17 ID:mX+XbfBw0
>>717の件ですが、1件ではなく数件表示させるにはどうしたら良いでしょうか?

793 :790:2013/12/13(金) 17:01:56.41 ID:41dM26NH0
>>791
回答ありがとうございます
諸事情あってまだ掲示板が0.7.3なのですが、そちらのバージョンでの設定方法もあればお願いしたいです
お手数かけて申し訳ありません

794 :名無しさん@ぜろちゃんねるプラス:2013/12/13(金) 17:26:00.57 ID:mX+XbfBw0

>>792の追記です
可能であれば

1: スレッド :
レス番号 : 最新レスのコメント
レス番号 : 最新レスのコメント
レス番号 : 最新レスのコメント
と表示したいと思っています
よろしくお願いします

795 :0ch+開発担当 ◆0chp.sx.ik :2013/12/13(金) 20:32:26.45 ID:PQ9ZGH3B0
>>793
module/galadriel.pl の 630行目あたりの行を以下のように書き換えてください。
  my @times = localtime time;
        ↓
  my @times = localtime 0;

796 :0ch+開発担当 ◆0chp.sx.ik :2013/12/13(金) 20:43:06.96 ID:PQ9ZGH3B0
>>792,794
これでどうでしょうか。
  $Page->Print("<a href=\"$path\">$i: $name($res)</a><br>\n");
  if (open(my $fh, '<', "$basePath/dat/$key.dat")) {
    my @lines = <$fh>;
    close($fh);
    require Encode;
    for my $n ($#lines-2 .. $#lines) {
      next if ($n < 0);
      my $text = (split(/<>/, $lines[$n], -1))[3];
      $text =~ s/<[bh]r>/ /gi;
      $text =~ s/<[^>]+>//g;
      $text =~ s/\s+/ /g;
      $text = Encode::decode('sjis', $text);
      $text = substr($text, 0, 100);
      $text = Encode::encode('sjis', $text);
      $n++;
      $Page->Print("&nbsp; $n: $text<br>\n");
    }
  }
  #$Page->Print("<br> \n");

797 :名無しさん@ぜろちゃんねるプラス:2013/12/13(金) 21:37:27.38 ID:mX+XbfBw0
>>796
ありがとうございます
ただ、これと>>726を組み合わせたところ、レス部分が文字化けしてしまいました
文字化けせずに表示させることはできますでしょうか?



798 :名無しさん@ぜろちゃんねるプラス:2013/12/13(金) 21:50:34.52 ID:AK8OYINQ0
携帯のindex画面でもPC版indexと同じようにコメントフォームを表示させたいのですが可能でしょうか?
スレッドとスレッドの間に表示させたいと思っています

799 :798 :2013/12/14(土) 00:46:57.12 ID:g7FNZ9fD0
798です
携帯index画面の件ですが自己解決しました

800 :0ch+開発担当 ◆0chp.sx.ik :2013/12/14(土) 01:57:51.96 ID:DQFXFJcS0
>>797
      $text = substr($text, 0, 100);
の1行ではなく
      $text = substr($text, 0, 100);
      $text = Encode::encode('sjis', $text);
の2行を>>796のコードで置き換えてみてください。

801 :名無しさん@ぜろちゃんねるプラス:2013/12/14(土) 02:12:41.32 ID:N0SVfToI0
>>800
ありがとうございます。やってみます。
また、度々で申し訳ないのですが、>>796で投稿時刻を取得することはできますか?

802 :0ch+開発担当 ◆0chp.sx.ik :2013/12/14(土) 11:41:58.49 ID:DQFXFJcS0
>>801
      my $text = (split(/<>/, $lines[$n], -1))[3];

      my (undef, undef, $date, $text) = split(/<>/, $lines[$n], -1);
      $date = $& if ($date =~ /^[^ ]+ [^ ]+/);
のようにすれば日付部分が取り出せます

803 :名無しさん@ぜろちゃんねるプラス:2013/12/14(土) 12:55:16.82 ID:LwrD8YWl0
>>802
掲示板一覧がなぜか新しいタブで開かれません。なぜでしょうか?

804 :名無しさん@ぜろちゃんねるプラス:2013/12/14(土) 13:53:31.19 ID:LwrD8YWl0
あ、すいません
安価に意味はないです

805 :名無しさん@ぜろちゃんねるプラス:2013/12/14(土) 14:03:52.53 ID:LwrD8YWl0
すいません、自決しました
リンクを空にしてblankタグを入れたらできました

806 :名無しさん@ぜろちゃんねるプラス:2013/12/14(土) 18:20:32.67 ID:LwrD8YWl0
所で聞きたいのですが、一日の内に立ったスレ数をカウントすることは可能なのでしょうか?

807 :0ch+開発担当 ◆0chp.sx.ik :2013/12/14(土) 18:39:06.10 ID:DQFXFJcS0
>>806
可能です。

http://sourceforge.jp/projects/zerochplus/scm/svn/blobs/head/codes/0ch_count.pl
このプラグインは一日のうちに書き込まれたレス数を数えるものですが、
カウントする条件を if ($Sys->Equal('MODE', 1)) とすればスレ立て(>>1)のみをカウントすることができます。

※このプラグインの例ではすべての板を合わせてカウントするようになっています。

808 :名無しさん@ぜろちゃんねるプラス:2013/12/14(土) 18:43:52.82 ID:N0SVfToI0
>>802
できました
ありがとうございました

809 :名無しさん@ぜろちゃんねるプラス:2013/12/14(土) 18:54:30.66 ID:LwrD8YWl0
>>807
成程
有難うございました

810 :名無しさん@ぜろちゃんねるプラス:2013/12/14(土) 20:12:21.68 ID:g7FNZ9fD0
rcgiで>>717のように一行表示できますか?リンクも無効に出来れば嬉しいです

811 :0ch+開発担当 ◆0chp.sx.ik :2013/12/14(土) 21:29:23.76 ID:DQFXFJcS0
>>810
r.cgi の sub PrintResponse 内の「# 表示範囲内か…」という行以降を全て
以下のコードに置き換えれば1行1レスで番号+本文のみ(HTML削除)になります。
  $elem[3] =~ s/<[bh]r>/ /gi;
  $elem[3] =~ s/<[^>]+>//g;
  $elem[3] =~ s/\s+/ /g;
  $Page->Print("<br>\n") if ($n == 1);
  $Page->Print("$n: $elem[3]<br>\n"); # 名前は$elem[0] 日時IDは$elem[2]

812 :名無しさん@ぜろちゃんねるプラス:2013/12/14(土) 22:58:10.74 ID:QkD/e3e4I
携帯用スレッドでID非表示にすることできますか

305KB
READ.CGI - 0ch+ BBS 0.7.5 20220323
ぜろちゃんねるプラス