=== MediaWiki 管理者の集い 第2版 ===
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/07/04(水) 07:24:10ID:77E6ADvG== 公式サイト等 ==
[http://www.mediawiki.org/wiki/MediaWiki/ja MediaWiki.org]
[http://www.mwusers.com/ MediaWiki Forums]
[http://www.amazon.co.jp/dp/1904811590/ Mediawiki Administrators' Tutorial Guide]
日本語翻訳中(らしい)
0313nobodyさん
2007/12/01(土) 16:38:23ID:???ご回答ありがとうございました。UNIX等では
そうですね、CドライブとかDドライブなどといった
表現ではなくファイルのマウント操作なので、目的
とするHDDをアップロード先に指定すれば良いという
ことですね。
ただ、今回はWindowsでの構築予定でしたので 他に方法があれば
と思っています。
0314nobodyさん
2007/12/01(土) 17:41:54ID:Xe0Pn79k1と4の消し方がわかりません。
→ 1と5の消し方がわかりません。
でした。
0315nobodyさん
2007/12/01(土) 18:59:45ID:???バージョンが上がった場合の動作が保証されないのでそのリスクを承知した上で
実行して下さいということです。最近の事例でも1.11に対して個別の対応ページが書かれています。
もちろん自分で問題解決できるというのであれば心配いりません。
ちなみに私個人ではログインはできたがログアウトのページが通常のページと誤認識されるというのを体験しました。
0316nobodyさん
2007/12/01(土) 19:57:01ID:???1. 表示:以下のh5要素を削除します
MonoBook.php
<div id="p-cactions" class="portlet">
<h5><?php $this->msg('views') ?></h5>
languages/messages/Messages.Ja.php
'views' => '表示',
5.「"記事URL" より作成」:$outの行をコメントアウトします。
SkinTemplate.php
$printfooter = "<div class=\"printfooter\">\n" . $this->printSource() . "</div>\n";
#$out->mBodytext .= $printfooter ;
Skin.php
function printSource() {
global $wgTitle;
$url = htmlspecialchars( $wgTitle->getFullURL() );
return wfMsg( 'retrievedfrom', '<a href="'.$url.'">'.$url.'</a>' );
}
languages/messages/Messages.Ja.php
'retrievedfrom' => ' "$1" より作成',
システムメッセージに関する公式サイトの資料は次のページにあります。
http://www.mediawiki.org/wiki/WfMsg()
http://meta.wikimedia.org/wiki/Help:System_message
0317nobodyさん
2007/12/01(土) 20:57:11ID:???ファイルの集中管理をするようにしています。ネットワーク経由でのファイル保存の設定に関しては
http://www.mediawiki.org/wiki/Manual:Configuration_settings/ja の「共有アップロード」の項目を調べて下さい。
(>>297-298 も参照)
Windowsサーバーでのファイル共有に関してはWindows系のスレで質問するか(「Windows 2003」などでスレタイを検索)
マイクロソフトのサポートページを調べた方が早いと思います。ざっと検索した限りでは
次のサイトでサーバー構築のためのまとまった資料がありました。
Windows Server 2003による社内ネットワークの構築
http://www.fmmc.or.jp/fm/nwts/w2003s/index.html
Windows 2003とIISのインストールガイドとトラブルシューティングは以下のURLです。
http://www.mediawiki.org/wiki/Manual:Installing_MediaWiki_on_Windows_Server_2003/ja
企業ユーザー向けのサポートページとメーリングリストがありますが、内容のほとんどが認証関連です。
http://www.mediawiki.org/wiki/Enterprise_use_of_MediaWiki/ja
ちなみに現時点でもっとも大規模な企業導入実績例はインテルで社員が10万人以上だそうです。
http://www.mediawiki.org/wiki/Sites_using_MediaWiki/corporate
0318nobodyさん
2007/12/01(土) 22:00:19ID:???"URL"より作成・最終更新を印刷しないようにするだけなら
commons/commonPrint.cssに以下のセレクタを追加します。
.printfooter, #credits {
display: none;
}
0319nobodyさん
2007/12/04(火) 11:41:10ID:???http://e.impressrd.jp/e/2007/10/23/88
CsPediaという名前を付けて社内用語の整備に利用。
真の Web 2.0: ユーザー生成型コンテンツの代表格、ウィキペディア
http://www.ibm.com/developerworks/jp/web/library/wa-realweb4/
wikiEd(編集支援)が紹介されている
・http://en.wikipedia.org/wiki/User:Cacycle/wikEd
Engines of Collaboration: A Look Under the Hood of Wikimedia
http://whygive.wikimedia.org/2007/11/25/engines-of-collaboration-a-look-under-the-hood-of-wikimedia/
紹介されているエクステンション
・http://www.mediawiki.org/wiki/Extension:LiquidThreads
・http://www.mediawiki.org/wiki/Extension:FlaggedRevs
0320nobodyさん
2007/12/04(火) 12:17:30ID:???0321nobodyさん
2007/12/05(水) 15:33:35ID:???0322nobodyさん
2007/12/05(水) 15:36:22ID:???WindowsXPでMediaWikiを使っています。
imagesフォルダ以下を別物理ディスクにすることはWindowsの機能で可能です。
また、imagesフォルダ以下は
images\5\5e
といった具合に、いくつかのフォルダに分けて保存されているので、
それぞれ物理ディスク分けるとさらに大容量&高速化が可能かと思います。
※$wgHashedUploadDirectoryがtrue(デフォールト)になっている必要があります。
0323nobodyさん
2007/12/06(木) 12:54:19ID:???前のスレでページ名さえ知っていれば読み込み制限されているページでも
{{:ページ名}}でインクルードできる問題が指摘されていましたが
1.10.0以降であれば$wgNonincludableNamespaces変数で
名前空間のインデックスを指定することでインクルードを拒否できるようになります。
例えば通常の記事はMain名前空間に所属してインデックス番号は0なので次のようになります。
$wgNonincludableNamespaces[] = 0;
0324nobodyさん
2007/12/06(木) 18:45:42ID:???正確に言うと"<"だけ表示されてはいるのですが・・・。ちなみにVerは1.9.3です。
どこに原因があるのかさっぱり分からない状態ですが、思い当たる原因が分かる方はいらっしゃいますでしょうか?
0325nobodyさん
2007/12/06(木) 19:10:54ID:???ときどき、xrea の名前が出てきますが、
MediaWiki を運用するにあたってオススメでしょうか!?
ssh でログインできる等、他にオススメのレンタルサーバがありましたら
お教えいただけましたらありがたく、よろしくお願いいたします。
0326nobodyさん
2007/12/06(木) 20:40:11ID:???xreaを使うよりは、coreserver.jpのほうが安心だと思う。
ttp://www.coreserver.jp/
0328nobodyさん
2007/12/06(木) 22:09:27ID:???以前、xreaの無料版でMediaWikiインストールして、さあ使おうと思っていたら、
2週間くらいでアカウント削除されてしまったことがある。
広告は表示させていたのだが。
問い合わせてみたところ、自動削除されていたらしく、原因の調査は出来ないとのことだった。
それから自動削除ルールが変わっているかどうか分からないが、細心の注意を払っておいた方がいいと思う。 (´・ω・`)
0329nobodyさん
2007/12/06(木) 22:47:10ID:???xreaで広告免除して使ってるけど、付属のアクセス解析を見ると
リクエストはあってもページビューとしてカウントされないようだった。
CGI呼出のみの利用とみなされて規約違反とされたのかも?
0331nobodyさん
2007/12/07(金) 09:06:28ID:???それと>>267で1.11.0と1.12αの動作が報告されているので、なるべく新しいバージョンを利用することをお勧めします。
>>328 トップページにindex.html・index.cgi・index.phpなどが存在しないと自動的に削除されます。VALUE-DOMAIN.COMで広告免除を一度でも購入したサーバアカウントは削除されません。
広告付きの無料アカウントの継続方法
http://sb.xrea.com/archive/index.php/t-8363.html
0332nobodyさん
2007/12/08(土) 18:21:16ID:???いろいろやってみて上手く行きました。やったことは次の
ようなことです。
他のドライブやフォルダーにファイルをアップロードする
方法
1 当該フォルダー下のファイルがクライアントからの
リクエストに応じることができるようにapacheの設定を
変更する。apacheの再起動が必要。
<IfModule alias_module>以下に次のように記述
Alias /upfile/ "e:/upfile/"
<Directory "e:/upfile">
Order allow,deny
Allow from all
</Directory>
2 mediawikiが他のドライブやフォルダーにファイルをアップロード
するようにLocalSettings.phpに次のように記述。
$wgUploadDirectory = "E:/upfile";
3 mediawikiが他のドライブやフォルダーを参照できるように
LocalSettings.phpに次のように記述。
$wgUploadPath = "/upfile";
この場合"E:/upfile"のように記述してはいけない。
0333nobodyさん
2007/12/10(月) 05:17:29ID:???設定するエクステンションがリリースされました
http://openoffice-ja.org/wiki/?shortcut=a4f255
↑
こんな感じのURLになります
0334nobodyさん
2007/12/10(月) 21:45:02ID:???それらの対策としてもよさそうですね。
0335nobodyさん
2007/12/11(火) 20:32:33ID:???>>331
遅くなりましたがありがとうございました。
文字コードを変えると上手くいったんですが、今度は何をしてもメインページが表示できず・・・。
最新バージョンに入れ替えて、どうにか事なきを得ましたが・・・難しいです。
0336nobodyさん
2007/12/13(木) 15:38:03ID:???利用者がわりとこまめに保存するために履歴が大量に残ってしまっています。
(例えば同じ人が2〜3時間内に10の履歴とか)
履歴が残ること自体はいいのですが、履歴が見づらくなってしまい困っています。
利用者に注意を促していますが、システム側でも対応したいと思っています。
全ての履歴を消してしまうと問題があるので、
短時間内の複数の履歴を1つにまとめるために、
(手動で)履歴の一部を消すプラグイン(テーブルからの物理削除でもOK)って、ありませんか?
ベストなのは、以下のようなものです。
1.自分の履歴しか消せない。(管理者を除く)
2.自分の連続した履歴しか消せない。
皆様のお知恵を拝借したくお願いします。
0338nobodyさん
2007/12/15(土) 06:20:24ID:???プラグインは無いが操作とメンテナンススクリプトの組み合わせでできる
削除したいページを一旦消す。
消したページの履歴の上の方にある削除された版の履歴と復帰のリンクを開いて
残したい版だけチェックして復帰。履歴だけならこれできれいになる。
何度も同じページでやろうとすると昔消した版も時系列で並ぶのに注意。
ま、手間はかかるがアーカイブの管理なんて泥臭いもんだ。
DBから削除するときには /maintenance にarchive(削除した版)に入った履歴をDBから消すスクリプトがあるのでそれで。
mediawikiにはいわゆる一般的な意味での削除の機能はない。全て一般利用者からの隠蔽。
mediawikiのインターフェースから削除するとログが増える分DBは肥大する。
まあInnoDB自体が肥大し続けるから強制的にMyISAMにでもしてないと何をしても付け焼き刃だけど。
0339nobodyさん
2007/12/15(土) 06:32:21ID:???DB構造変わってなくなったのかね。
0340nobodyさん
2007/12/15(土) 07:02:20ID:???その時間帯に何回編集しようとも編集したユーザーの編集回数は 1回としてカウントされる
そんな Extension ありそうですけどねぇ…
教えて! Extensions 博士ー!\(^o^)/
0341nobodyさん
2007/12/15(土) 13:17:30ID:???medeawikiをCMSツールとして使い、複数サイトを作成し、
サイト毎に違ったレイアウトにしたいと思っています。
0342nobodyさん
2007/12/15(土) 18:33:24ID:???完全なCSS初心者用でした。携帯機能については何も書かれていませんでした。
やはり自分で実装しなければならないということですか。
>>341 異なるユーザーグループごとにwikiを提供したいというのであれば
普通にwikiファームを構築した方が早いと思います。
body要素の範囲内でCSSをカスタマイズするのでよいなら
LocalSettings.phpで名前空間を割り当ててクラスセレクタごとのCSSを用意します。
ページごとのskin変更も同じように記事の名前空間ごとにユーザーオプションを変更する
という方法が考えられますが、オプション変更ボタンの下の注意書きの通り
ブラウザのキャッシュはサーバーサイドではクリアできないので、実装は困難だと思います。
ちなみにデフォルトの匿名と新規ユーザーオプションは$wgDefaultUserOptions変数で設定できます。
0343nobodyさん
2007/12/15(土) 19:45:53ID:???ありがとうございます。
>body要素の範囲内でCSSをカスタマイズするのでよいなら
>LocalSettings.phpで名前空間を割り当ててクラスセレクタごとのCSSを用意します。
ということは
if ($hoge):
$wgDefaultSkin = 'cologneblue';
else:
$wgDefaultSkin = 'monobook';
endif;
このような書き方ができるのでしょうか。
リクエストURLを$hogeに入れる方法はどのようになります
でしょうか。
0344342
2007/12/15(土) 22:23:59ID:???http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces/ja
記事の例ではFoo名前空間にインデックス番号100を割り当てているので
body要素のクラスセレクタはns-100が追加されます。
公式サイトのCSSのカスタマイズ例は下記のページで見ることができます。
http://www.mediawiki.org/wiki/MediaWiki:Common.css
書いた後に匿名ユーザーと新規ユーザー限定で
skinを切り替えする方法を思いついたので書いておきます。
例えば「メインページ」「Special:Recentchanges」だけを
standard skinにするには次のようになります。
$urls = array(
"/mediawiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8",
"/mediawiki/index.php/%E7%89%B9%E5%88%A5:Recentchanges"
);
if(in_array($_SERVER['REQUEST_URI'], $urls)) {
$wgDefaultSkin = 'standard';
}
$_SERVER['REQUEST_URI']から名前空間の部分を取得するには
basename関数とexplode関数を組み合わせます。
$name = '/mediawiki/index.php/Manual:%24wgDefaultUserOptions';
$result = explode(':', basename($name));
echo $result[0];
0345nobodyさん
2007/12/16(日) 11:14:46ID:???できました。ありがとうございました。
次のようにLocalSettings.phpに記述しました。
この例ではメインページとヘルプページについては
nostalgiaをその他ではmonobookというように目的とすること
はできました。
アドバイスのあった匿名ユーザーと新規ユーザー限定という
ことや名前空間ということを特に考慮はしていないのですが
この例で、全てのユーザーについてnostalgiaとmonobookとに
使い分けできていると思いますが、これでは何かまずい点は
出てくるのでしょうか。
$urls = array(
"/wiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8", "/wiki/index.php/Help:%E7%9B%AE%E6%AC%A1"
);
if(in_array($_SERVER['REQUEST_URI'], $urls)):
$wgDefaultSkin = 'nostalgia';
else:
$wgDefaultSkin = 'monobook';
endif;
0346nobodyさん
2007/12/16(日) 14:12:23ID:???私の環境(1.12α)では管理者権限を持つログインユーザーのオプションで
例えばスタンダードを選択したら$wgDefaultSkinに関係なくスタンダードになりました。
それで$urls変数の方を少し改良したので貼っておきます。create_function内の$kは
各配列のインデックス番号を表します。これは省略しても動作します。
array_walk関数では2つの引数を使うという慣習に合わせるためです。
サブページ(メインページ/サブページ)を一切使わないのでしたら
$_SERVER['REQUEST_URI']をbasename($_SERVER['REQUEST_URI'])に置き換える
というのもありです。
$urls = array(
"%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8",
"%E7%89%B9%E5%88%A5:Recentchanges"
);
array_walk($urls, create_function('&$v,$k', '$v = "/mediawiki/index.php/".$v;'));
0347nobodyさん
2007/12/16(日) 15:34:18ID:???例えば、OperaとIE7の場合はstandardににするには次のようになります。
$useragents = "/MSIE 7.0|Opera/";
if(preg_match($useragents, $_SERVER{'HTTP_USER_AGENT'})) {
$wgDefaultSkin = 'standard';
}else{
$wgDefaultSkin = 'monobook';
}
携帯のユーザーエージェントの切り替えるためにPEAR::Net_UserAgent_Mobile
というライブラリがありますが、MediaWikiで採用しているGPLと矛盾する
PHPライセンスなので再配布はできません。
あと携帯向けに表示する場合はページ分割が必要になりますが
Pear::Pagerが使えると思います。
0348nobodyさん
2007/12/17(月) 06:53:13ID:???タイムゾーンを補正できないことが話題になっていましたが
代わりに匿名ユーザーのオプションを設定することで対応します。
$wgDefaultUserOptions['timecorrection'] = '09:00';
設定をした後で記事のキャッシュをパージすることを忘れないで下さい。
0349nobodyさん
2007/12/17(月) 07:22:27ID:???投稿時間の間隔を規制する方がベターだと思います。
連投の表示を隠匿するもしくは投稿時に連投を統合する場合、
追加のSQLを発行する必要がでてくるのでサーバー負担が増えますし
データベースの設計に関わるのでカスタマイズの難易度が上がります。
連投を規制する場合はAPIなどで以前の投稿時間を取得して
規制時間の間は投稿ボタンを表示しないようにするという実装で済みます。
action=submitなどで投稿できる可能性があるので
そこまでやる人はあまりいないだろうという前提の元ですが。
0350nobodyさん
2007/12/18(火) 13:19:04ID:Gx8WPDAufrom within function "Database::select". MySQL returned error "1146: Table 'hoge.protected_titles' doesn't exist (localhost)".
0351nobodyさん
2007/12/18(火) 14:55:35ID:Gx8WPDAu事故解決しました。スマソ
0352nobodyさん
2007/12/18(火) 20:17:47ID:???PHPでは多重継承ができないので、自分で実装することにしました。
通常の記事のページの分割方法は次のようなものです。
1 本文を変数として取得するには$this->data['bodytext']を使う。
ちなみに通常表示は$this->html('bodytext')です。
2 変数として取得した本文を分割して配列として収納する。
3 例えば、$_GET['id']を使って記事名?id=ページ番号でパラメータを取得して
そのパラメータに対応した本文を収納した配列の要素を表示する。
4 表示の場合分けは上記の$_GET['id']に加えて$_GET['action']などの値を使う。
定義済の変数は
http://www.php.net/manual/ja/reserved.variables.php
index.phpに渡すことができるパラメータは
http://www.mediawiki.org/wiki/Manual:Parameters_to_index.php/ja
を参照して下さい。
編集も携帯でできるようにするにはincludes/EditPage.phpを編集すればよいはずですが未調査です。
分割方法に関して平文のみで文字数で分割する場合、英文ならwordwrap関数が、
日本語の場合は厳密な文字数で分割できませんが、下記の記事が参考になりました。
続:日本語(マルチバイト)でのwordwrap処理 -OKWave
ttp://www.mediawiki.org/wiki/Manual:Parameters_to_index.php/ja
ざっと調べた範囲では携帯向けのプロクシサイトのように
一定量のサイズとHTMLブロック単位で分割する方法の解説記事は見つからなかったので、
自分で考える必要があるようです。あとはpuwikiが携帯対応しているのでこちらも参考になるかもしれません。
0353nobodyさん
2007/12/19(水) 05:09:12ID:???そのあとLocalSettup.phpを親ディレクトリに入れたのですが
Warning: require_once(./LocalSettings.php) [function.require-once]: failed to open stream: Permission denied in
/virtual/hoge/public_html/hoge2/mediawiki/includes/WebStart.php on line 86
Fatal error: require_once() [function.require]: Failed opening required './LocalSettings.php' (include_path='.:/usr/local/lib/php') in
/virtual/hoge/public_html/hoge2/mediawiki/includes/WebStart.php on line 86
というエラーが出るのでます。どうすればいいのでしょうか。
0354nobodyさん
2007/12/19(水) 06:19:27ID:???== 質問するときに書いてね ==
>>3-4 をご覧になってお分かりになる範囲の情報を記載しましょう。
回答する方も MediaWiki のバージョンくらいは分からないと困ると思いますので。
xrea に MediaWiki を導入している経験者の方々が多くの情報を残しています。
そちらも参照されると手助けになると思いますのでよければどうぞ。
http://www.google.co.jp/search?q=xrea+MediaWiki
0355nobodyさん
2007/12/19(水) 08:50:50ID:???ちなみにver. は1.11.0です。
0356nobodyさん
2007/12/19(水) 09:51:13ID:???とりあえずDocumentRootとLocalSettings.phpのパスを教えてください
/virtual/hoge/public_html/hoge2/
/virtual/hoge/public_html/hoge2/mediawiki/LocalSettings.php
かな?
0357353
2007/12/19(水) 10:48:32ID:???LocalSettup.phpをコンフィグから一度PCにダウソして親ディレクトリにうpしたのでそうだと思います。
そのあとコンフィグは削除しました。
0359353
2007/12/19(水) 11:42:50ID:???エラーの文章の意味はどういうものなんでしょう?
0360nobodyさん
2007/12/19(水) 12:12:42ID:???パーミッションが無いよと言っている。
LocalSettings.phpの所有者とパーミッション(属性)とindex.php等他のファイルの所有者は何?
0361nobodyさん
2007/12/19(水) 14:12:12ID:I01GQrBLphpで動かしてる?
cgiモードだとうまく動くかもよ。
0362nobodyさん
2007/12/19(水) 14:12:59ID:I01GQrBL0363353
2007/12/19(水) 14:24:47ID:???LocalSettings.phpの属性は600.
index.phpの属性は644でした。
ファイルの所有者ってのはどうやって見るんですか?
>361
cgiモードってのはどうやるんですか?
0364nobodyさん
2007/12/19(水) 16:30:28ID:4oqVnmt9XREAでcgiモードは、Mediawiki下の.htaccessに下記を追加
(.htaccessがなければ、新規で作成)
<Files index.php>
AddHandler application/x-httpd-php5cgi .php
</Files>
0365nobodyさん
2007/12/19(水) 16:40:15ID:???さらに動作しなければ属性を755、777で試してみて下さい。
また、ファイルとデータベースのレコードを削除して再度アップロードとインストールをすると
正常に動作するようになることがあります。
ファイルの所有者を調べるにはサーバーの管理のファイルマネージャーの画面を見るか
サーバーを遠隔操作するためにSSH接続をしてls -lもしくはls -allのコマンドを使います。
XREAの仕様ではモジュール版PHPで生成されたファイルの所有者はapacheとなります。
PHPをCGIモードに切り替えるには下記の一行を記した.htaccessファイルを設置します。
AddHandler application/x-httpd-phpcgi .php
PHPをCGIとして動かす方法について
http://sb.xrea.com/showthread.php?t=10744
CGIモードはモジュール版PHPで動かない関数やLinuxコマンドを実行するために利用されます。
セーフモードで動かない関数は以下のページで書かれています。
http://www.php.net/manual/ja/features.safe-mode.functions.php
0367353
2007/12/19(水) 16:49:39ID:???とりあえず言われたとおり、644にしてみました。
データベース・エラー
データベース検索の文法エラー。これは恐らくソフトウェアのバグを表しています。 最後に実行を試みた問い合わせ:
(SQLクエリー非表示)
from within function "Article::pageData". MySQL returned error "1267: Illegal mix of collations (ujis_bin,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '=' (localhost)".
って言われました。
0368353
2007/12/19(水) 16:51:48ID:???0370353
2007/12/19(水) 17:05:47ID:???ググッたらこのスレの34でよく似た文章出てきました。
やり直してみます。
0371353
2007/12/20(木) 01:09:07ID:???変更したら動作しました。
皆さんありがとうございました。
またお世話になるかもしれません。
0372nobodyさん
2007/12/20(木) 18:58:18ID:???とりあえず>>10-12までを転載しました。
http://www12.atwiki.jp/linux2ch/pages/234.html
ウィキペディアライクモードがいつの間にか実装されていました。
0374nobodyさん
2007/12/21(金) 12:54:32ID:???乙
ですが、MediaWiki の有用性の分かっているスレ住人のお一人でしたら
MediaWiki を使ったまとめサイトにしていただければ尚嬉しいのですが…
(´・ω・`)
0375nobodyさん
2007/12/24(月) 19:28:14ID:???その節はお世話になりました。
依然としてmediawikiをcmsツールとして利用できないかと
色々TRYしています。
先日は、ページ毎にSkinを変更する手段としてLocalSettings.php
にif文を記載して分岐しましたが、これだとページを作成する度に
LocalSettings.phpに手を加えなくてはなりません。
これを回避するために、ページにSkin名が含まれている場合
当該Skinで表示するということをやろうと思い、次のように
コーティングしましたが上手く行きません。
イベントハンドラをフックに割り当て、フックのイベント
が発生したタイミングでchangeSkinが実行されることを予定してい
ます。
changeSkinでは$wgOut->getHTML()で得たHTML文にSkin名(例ではnostalgia)
が記載されている場合は$wgDefaultSkin = 'nostalgia';となるように
しています。
フックのイベントのタイミングが既にSkinが選択された後であれば
当然上手く行かないでしょうし、また、$wgOutにHTML文が割り当てられて
いない時も上手く行かないと思います。コメント部分で色々と
フックのイベントタイミングを選びましたが、なかなか上手く行きません。
どのようにコーティングすれば当初の目的が果たせるでしょうか。
よろしくお願いします。
なお、書き込みエラーになったのでコードは次に書き込みます。
0376nobodyさん
2007/12/24(月) 19:31:37ID:???//$wgHooks['OutputPageBeforeHTML'][] = 'changeSkin';
//$wgHooks['ArticleAfterFetchContent'][] = 'changeSkin';
//$wgHooks['ParserBeforeTidy'][] = 'changeSkin';
//$wgHooks['ParserBeforeStrip'][] = 'changeSkin';
//$wgHooks['OutputPageParserOutput'][] = 'changeSkin';
//$wgHooks['ArticleFromTitle'][] = 'changeSkin';
$wgHooks['ArticleFromTitle'][] = 'changeSkin';
function changeSkin() {
global $wgDefaultSkin,$wgOut;
if(strpos($wgOut->getHTML(),"nostalgia")!== false) {
$wgDefaultSkin = 'nostalgia';
}
return true;
}
?>
0377353
2007/12/24(月) 23:05:57ID:???インストールのときはお世話になりました。
また質問なのですが、テンプレートや表示の仕様をwikipediaそっくりにしたいのですが
mediawiki:common.css
mediawiki:common.js
のソースをそのままコピペしても全然同じになりません。
infoboxを使ってみたいのですがうまくいかないので
どうしたものかと悩んでいます。
wikipediaのcommon.cssとかはソースの色分けとかもされてたり、
ソースの上の部分の文頭に四角が付いていますがそういうのも付きません。
ver.1.11.0
サーバーはxreaです。
よろしくお願いします。
0378nobodyさん
2007/12/25(火) 00:57:46ID:???とりあえず、「CologneBlue:記事名」ならCologneBlueスキンを表示する動作は以下のコードで
確認しました。
$title = str_replace('/mediawiki/index.php/', '', $_SERVER['REQUEST_URI']);
$namespace = explode(':', $title);
$skins = array('Chick', 'CologneBlue', 'MonoBook', 'MySkin', 'Nostalgia', 'Simple', 'Standard');
if(in_array($namespace[0], $skins)){
$wgDefaultSkin = $namespace[0];
//$wgDefaultUserOptions['skin'] = $namespace[0];
}
スキン内部のコードならSkin::getSkinNames()スタティックメソッドで
利用できるスキン名の一覧の配列を得ることができますが
LocalSettings.php内ではメソッドを書いただけでは利用できませんでした。
0379nobodyさん
2007/12/25(火) 01:29:27ID:???http://en.wikipedia.org/wiki/Template:Infobox
Template:Infoboxのテーブルで指定されているCSSのクラスをお探しなら
MediaWiki:Monobook.cssページで見つかります。
http://en.wikipedia.org/wiki/MediaWiki:Monobook.css
念のため書いておきますが、上記のテンプレートは
ParserFunctions拡張機能がインストールされていることが前提条件です。
http://ja.wikipedia.org/wiki/Help:条件文
ソースコードのハイライトに関してはSyntaxHighlight GeSHi拡張機能
を導入してみて下さい。
http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi/ja
0380nobodyさん
2007/12/25(火) 02:44:54ID:???記事の名前空間をキー、スキン名を要素とする配列を用意して
array_key_exists関数で判定します。
$title = str_replace('/mediawiki/index.php/', '', $_SERVER['REQUEST_URI']);
$namespace = explode(':', $title);
$skins = array(
'Chi' => 'Chick',
'Col' => 'CologneBlue',
'Mon' => 'MonoBook',
'MyS' => 'MySkin',
'Nos' => 'Nostalgia',
'Sim' => 'Simple',
'Sta' => 'Standard');
if(array_key_exists($namespace[0], $skins)) {
$wgDefaultSkin = $skins[$namespace[0]];
//$wgDefaultUserOptions['skin'] = $skins[$namespace[0]];
}
0381nobodyさん
2007/12/25(火) 02:56:48ID:???削除する文字列が記事名にも含まれる場合は正常に記事名が取得できなくなりますので
対策をすると下記のようになります。
<?php
$url = '/mediawiki/index.php/mainpage/subpage1/subpage2';
$url = explode('/', $url);
$n = count($url);
for($i=3; $i<$n; $i++){
$title .= $url[$i];
$title .= ($i==$n-1) ? '' : '/';
}
echo $title;
($i==$n-1) ? '' : '/'の部分は三項演算子で単純な条件分岐を簡略化するために使っています。
0382nobodyさん
2007/12/25(火) 21:22:36ID:???上手くできました。ありがとうございました。
URL引数が名前空間毎に変わることを利用しているのですね。
こちらの方がフックを使うよりもとてもスムーズだと思います。
ところで、$wgDefaultSkin = を使う場合、ログインユーザの
skinは変更できないのですね。これはログインなしで使用する
ことで回避できるので仕様として諦めるしかないのかなと思って
います。ただ、ログインを前提としない場合はデフォルトの検索
は名前空間が標準のみとなってしまいますが、作成した名前空間
をデフォルト検索対象に含めることはできないでしょうか。
0383nobodyさん
2007/12/25(火) 23:06:34ID:???匿名ユーザーのデフォルトの検索対象となる名前空間は
$wgNamespacesToBeSearchedDefault変数で指定します。
$wgExtraNamespaces[110] = "MonoBook";
でMonoBook名前空間のインデックス番号を110にした場合は
次のようになります。
$wgNamespacesToBeSearchedDefault = array(
NS_MAIN => true,
110 => true
);
せっかくなので名前空間ごとにユーザーグループの編集を制限する方法も書いておきます。
1.10以降なら$wgNamespaceProtection変数、1.10以前ならLockdown拡張機能で行います。
上記のMonoBook名前空間に対してsysopグループだけが編集できるようにするには
次のように設定します。
1.10.0以降
$wgNamespaceProtection[110] = array( 'sysop' );
1.10.0以前
require_once( "$IP/extensions/Lockdown/Lockdown.php" );
$wgNamespacePermissionLockdown[110]['edit'] = array('sysop');
0384nobodyさん
2007/12/25(火) 23:21:00ID:???には以下の通りです。
require_once( "$IP/extensions/Lockdown/Lockdown.php" );
$wgNamespacePermissionLockdown[110]['read'] = array('sysop');
$wgNonincludableNamespaces[] = 110;
以前と比べて$wgNonincludableNamespacesによって
他のページへのインクルードを禁止できるようになりましたが、
特別ページの検索機能で見出しが表示されたり
統計情報が表示されるのは相変わらずです。
0385nobodyさん
2007/12/26(水) 11:22:34ID:???最新の10〜20件のみ表示されるような物が理想なのですが、情報が見当たりませんでした。
0388nobodyさん
2007/12/28(金) 13:05:59ID:MBh5CIXS誰でも見られるディレクトリとあって、
その両方で MediaWiki を使いたいのですが、
このような使い方の場合は
MediaWiki をその数だけインストールしないといけないんでしょうか?
0389388
2007/12/28(金) 14:38:08ID:MBh5CIXShttp://www.steverumberg.com/wiki/index.php/WikiHelp
ここにありました、すみません。
0390388
2007/12/28(金) 17:02:15ID:MBh5CIXS>389のサイトですが、Debian/EtchについてくるMediaWiki1.7.1だと
うまくいかなかったです。
config/index.php内の/path/to/LocalSettings.phpの部分を
./LocalSettings.phpというふうに相対パスにする必要があります。
0392388
2007/12/28(金) 17:38:30ID:MBh5CIXS元々インストールされているMediaWikiが
/home/yourdomain/www/wiki
にインストールされていて
/home/yourdomain/www/new/wiki
にもインストールしたい場合、
わざわざファイルまるごとインストールせずに、
シンボリックリンクを作って
データベース名を変えれば
LocalSettings.php
を作るだけでおkという話です。
0393nobodyさん
2007/12/29(土) 00:25:24ID:AJGv2kDc無事にMediaWikiを動作させることは出来たのですが、
カテゴリを編集しようとすると、
「セッションが切断されたため編集を保存できません。もう一度やりなおしてください。
それでも失敗する場合、ログアウトしてからログインし直してください。」
とメッセージが出てしまいます。
23氏のようにログインして他のページに行ってもログアウトされたりはしません。
また、メインページや普通の記事の編集ではこのメッセージは出ません。
問題なく編集できます。
今のところ、あくまでカテゴリを編集しようとしたときだけでます。
どなたかご教授をお願いします。
サーバー:さくら
MediaWiki:1.6.10
OS:FreeBSD 6.1-RELEASE-p10 i386
Apache:1.3.39
PHP:4.4.6
MySQL:4.0.27
あと、さくらでは.htaccessのRewriteEngineなどは使えないんですかね。
http://example.com/wiki/記事名
になるように.htaccessを編集したら500エラーがでます。
0394353
2007/12/29(土) 01:19:54ID:???亀レススマソです。
一応、紹介してもらったhelpの通り、三つのphpをうpして、
LocalSettingを書き換えたら
ttp://sakuratan.ddo.jp/uploader/source/date64676.bmp
こんな感じになりました。
何が原因か自分では分からないのですが。
よろしくお願いします。
0395353
2007/12/29(土) 01:22:20ID:???自分方の内容はwikipediaのものをそのままコピーしてみました。
0396nobodyさん
2007/12/29(土) 04:30:31ID:???テンプレートを調べるには編集画面の一番下の「このページで使われているテンプレート:」を見ます。
あと「Template:Infobox プログラミング言語/doc」テンプレート内の多言語間リンクを削除して記事をパージして下さい。
記事をパージするにはURLの一番の記事名の後ろに?action=purgeを追加してEnterキーを押します。
0397nobodyさん
2007/12/29(土) 11:43:39ID:???SecureHTMLで<html>タグ内にphpをajaxで呼び出すjavascriptを書いています。URLを
example.php?a=xxx&b=yyy
と記述すると、&が&に変換されてしまうようで、($_GET['a']は問題ないのですが)、$_GET['b']に値を送れません。
どなたか解決法をご存知の方はいますか?
(ver1.11)
0399nobodyさん
2007/12/29(土) 17:29:33ID:???PHPコードは無効にされます。
wiki上でPHPコードを実行したいのであれば同じ作者のExtension:SecurePHP extensionがあります。
0400nobodyさん
2007/12/29(土) 18:04:06ID:???>>25 のsession save pathの設定をするといったことをやっても
セッション切断が再現されるのであれば、ご自分でPHP5をコンパイルして
最新のMediaWikiを導入することもお考え下さい。
さくらインターネットのスレによれば最新のサーバーではPHP5が投入されているそうなので
PHP5の利用を考える場合はPHPのバージョンの確認や公式マニュアルを参照して下さい。
mod_rewriteに関しては設定内容が書かれてないので何も申しようがありませんが、
「さくらインターネット mediawiki」で検索すればURLを短縮したwikiサイトが見つかるので
できるのかという質問に対する回答はできるでしょう。
0401nobodyさん
2007/12/29(土) 18:11:28ID:???Ruby製のmediaiwkiのパーサーを見つけました。
gem install mediacloth
でインストールして
require 'mediacloth'
puts MediaCloth::wiki_to_html(input)
でinputのwikitextがhtmlに変換されます。
0402393
2007/12/30(日) 03:08:56ID:JAqNZR9Bありがとうございます。
ちょっと大変ですが、試してみます。
0403nobodyさん
2007/12/30(日) 15:55:26ID:???0404nobodyさん
2007/12/30(日) 16:08:09ID:???どういったアンケートを想定されているのか分かりませんが、こういうことですか?
BoardVote
http://www.mediawiki.org/wiki/Extension:BoardVote
0405397
2007/12/30(日) 18:15:11ID:???ちょっと違うんですよね。
phpコードを実行したいのではなくて、複数の引数が入ったURLを記述したいだけなんです。
で、URLの文字列のうち&が実態参照された文字列に変わってしまっているようで。。。
0406nobodyさん
2007/12/31(月) 10:50:50ID:???ありがとうございます。
ページ毎の投票ではなくて、自由にアンケートの設問
(チェックボタン、ラジオボタン、テキストフィルド)
が作れてその結果を表示できるようなものですが、
wikiに求めるのは無理なような気もしていますので
やはりないでしょうね。
0407nobodyさん
2007/12/31(月) 14:12:59ID:???http://opentechpress.jp/developer/06/05/23/0220234.shtml
うまくいきません。本当にできるのでしょうか。
0410nobodyさん
2007/12/31(月) 15:51:08ID:???xoops,joomla,nucleus,drupalなども当たってみましたが
残念ながらアンケートができるような機能はありません
でした。
具体的にどのようなCMSを使えば可能でしょうか。
0411nobodyさん
2008/01/02(水) 19:15:41ID:???全部のシンボリックリンクを作るなら
丸ごとコピーでも良いのでは?
デスク容量は喰ってもそのほうが
分かりやすいと思う。
0412388
2008/01/03(木) 00:20:28ID:pOX3gvokそのへんは好みでよいかと。。
私は気分的にそこはシンボリックリンク、
そこはコピー、と使い分けます^^
■ このスレッドは過去ログ倉庫に格納されています