DokuWikiで非ログインユーザーにはIPアドレスを非表示にする方法(プラグイン無し)
doudonn 更新日:
非ログインユーザーにはIPアドレスを非表示にしたい!
昔はプラグイン「Hiding IPs Plugin」で実現可能だったのですが、
現在のバージョンでは全く対応できていません。
そのため手動でファイルを修正して対応します。
※バージョンは「2022-07-31a “Igor”」です。
実現したいこと
下記をやりたい。
・ログインユーザーにはIPアドレスを表示
・非ログインユーザーはIPアドレスの代わりに「非ログインユーザー」と表示する
プラグインの仕様通りです。
1、ページ下の「最終更新」の箇所
「inc/template.php」を修正します。
<888行目:変更前>
if($INFO['editor']) {
$out .= ' '.$lang['by'].' ';
$out .= '<bdi>'.editorinfo($INFO['editor']).'</bdi>';
} else {
$out .= ' ('.$lang['external_edit'].')';
}
<変更後>
if($INFO['editor']) {
$out .= ' '.$lang['by'].' ';
if($INFO['isadmin']) {
$out .= '<bdi>'.editorinfo($INFO['editor']).'</bdi>';
}else{
if(empty($INFO['user'])){
$out .= '<bdi>非ログインユーザー</bdi>';
}else{
$out .= '<bdi>'.editorinfo($INFO['editor']).'</bdi>';
}
}
} else {
$out .= ' ('.$lang['external_edit'].')';
}
ログインユーザーの名前があれば表示し、無ければ「非ログインユーザー」とします。
このあたりの処理は「$INFO」を「var_dump」で確認すればよくわかります。
いろいろ応用したい人は確認してみてください。
2、最近の更新・リビジョン・差分表示のページ
「/inc/ChangeLog/RevisionInfo.php」を修正します。
<152行目:変更前>
public function showEditor()
{
if ($this->val('user')) {
$html = '<bdi>'. editorinfo($this->val('user')) .'</bdi>';
if (auth_ismanager()) $html .= ' <bdo dir="ltr">('. $this->val('ip') .')</bdo>';
} else {
$html = '<bdo dir="ltr">'. $this->val('ip') .'</bdo>';
}
return '<span class="user">'. $html. '</span>';
}
<変更後>
public function showEditor()
{
if ($this->val('user')) {
$html = '<bdi>'. editorinfo($this->val('user')) .'</bdi>';
if (auth_ismanager()) $html .= ' <bdo dir="ltr">('. $this->val('ip') .')</bdo>';
} else {
if(auth_ismanager()) {
$html = '<bdo dir="ltr">'. $this->val('ip') .'</bdo>';
}else{
$html = '<bdo dir="ltr">非ログインユーザー</bdo>';
}
}
return '<span class="user">'. $html. '</span>';
}
これだけでヨシ。
差分表示のページもちゃんと対応できています。
注意点
DokuWikiをアップデートすると上書きされる可能性がある。
そこだけ忘れないようにしてください。
サンプルは「東方ダンマクカグラ ファンタジア・ロスト有志攻略Wiki」を見てください。