ラムネグから一言:寝る前に読むとくだらなすぎて逆に寝れると好評なすごい適当なブログをこっちではじめてます.
dokuwikiのtitleタグの中身は使っているテーマによるかもですが、だいたいは「ページ名[wiki名]」という形で出力されているはず。
別にこれでもよかったんですが、wikiのトップページのtitleタグの中身が「start[wiki名]」になっていることだけ気になっていました。
これって検索サイトでググった時に表示されるサイト名が「start[wiki名]」になるわけですから、なんか普通じゃない感がありますよね。「startって何?」みたいな。
ということでここではdokuwikiのtitleタグの中身をいい感じに修正する方法を紹介します。
テンプレートのmain.phpを開く
この修正には直にファイルを触る必要があり、プラグインとか管理画面からは修正できません。
まず使っているテンプレートの場所はというと、「dokuwiki/lib/tpl/〇〇」にあります。〇〇の部分がテンプレート名になっています。
- 例:今回私が使ったminimalテンプレートの場合:「dokuwiki/lib/tpl/minimal/」
でこの場所をftpソフトなどで開き、その中にある「main.php」を開くかいったん自分のパソコンにダウンロードしてください。
main.phpの編集
これもテンプレートによって書き方が違うとは思いますが、とりあずmain.phpを見ると普通にhtmlがズラズラと書かれているはずです。
htmlのhead部分も含まれているので、「title」などで検索して実際にtitleタグを出力している部分を見つけてください。
見つかったらそこをこんな風に変更します。
変更前
<title><?php tpl_pagetitle() ?> [<?php echo strip_tags($conf['title']) ?>]</title>
変更後
<?php if( strcmp(tpl_pagetitle(null,true), 'start') === 0 ): ?>
<title><?php echo strip_tags($conf['title']) ?></title>
<?php else: ?>
<title><?php tpl_pagetitle() ?>-<?php echo strip_tags($conf['title']) ?></title>
<?php endif; ?>
これでwikiのトップページの場合のみ、wiki名だけが表示されるようになり、それ以外のページに関しては「ページ名-wiki名」という日本のサイトによくある表示形式で表示されるようになります。
コードの説明
これで作業としては完了してるんですが、よくわからないコードをそのままコピペするのってちょっと怖い人もいると思うので、コードの説明をサクッと書いておきますね。
1行目:strcmp(tpl_pagetitle(null,true), 'start')
ここで条件判定をしています。
strcmpはphpの文字列比較関数で同じ場合だと0が違う場合は0以外が返ってくる関数です。
また「tpl_pagetitle(null,true)」はdokuwiki専用の関数で、そのページ名を取得できます。
なので、ここでは現在のページのページ名が「start」と同じだったら、という条件判定をしてるってことですね。
もしそうなら、つまりトップページなら2行目の処理に、そうでないなら、つまりトップページ以外のページなら4行目の処理をしてね、となっています。
2行目:strip_tags($conf[‘title’])
この「strip_tags($conf[‘title’])」もdokuwikiオリジナルの関数で、ここにはwiki名が入っています。
なのでwiki名だけ表示してねー、ということになります。
4行目
4行目に関しては変更前とほぼ同じで、区切りの文字、というか[]でwiki名が区切られていたのを、日本っぽく「-」でページ名とサイト名をつなぐように変更してあるだけですので、わかりやすいと思います。
変わらないじゃん!な方へ
今回のサンプルコードではトップページのURLが「start」の方を対象に書いてます。
ただdokuwikiってこの最初のページ名が管理画面から変更できちゃうんです。なのでそこで変更している人は適時その名称に変更しないと上記コードが動きません。
管理画面に「スタートページ名(各名前空間の始点として使われるページ名)」っていう項目、ありますよね。ここで指定したものを上記1行目の「start」に置き換えてくださいね。
おまけ
dokuwikiオリジナルの関数の仕様がなかなか検索してもヒットせず、やっぱりこういう時ワードプレスは便利だなーとか思うんですが、どうも「tpl_pagetitle()」という関数は、第2引数にtrueを入れるか入れないかで関数内でページ名を出力しちゃうかしないかが変わるみたいです。
普通に「tpl_pagetitle()」と引数何もなしで書くとそれだけでページ名が出力されてしまうので、if文の判定に使えないんですよね。なので第2引数にtrueを入れることで関数内でページ名が出力されるのを防ぎ、ifで判定できるようにしています(どうも第2引数はデフォルト値がfalseになっていて、ここに明示的にtrueを渡している形になります。第一引数の「null」はたぶんここにページごとのIDか何かを指定するとそのページのページタイトルが取得できるんじゃないかな、と思います。今回は今現在のページが対象なので「null」になってるはず。見つけた見本がnullだったのでそのままにしてます)。
まとめ
ここではdokuwikiのtitleタグの中身をより日本的な表示形式へ修正する方法を紹介しました。
まとめると、
- テンプレートの中身を自分でいじる必要がある
- 現在表示中のページ名が管理画面でスタートページ名として指定したものと同じなら~という条件判定を入れてやることで実装できる
という感じ。
参考にしてみてくださいね。
ただより簡単な対応として、管理画面の「最初の見出しをページ名とする」をオンにすれば、startとかそういうのは表示されなくなるので、そっちで対応されている方の方が多いかもしれません。
【おしらせ、というか完全なる宣伝】
文体がもうぜんぜん適当すぎてあれだけどものすごい自由に書いてるブログ「檸檬だくだく」もよろしく.寝る前に読める恐ろしくくだらないやつです.
こんなにも一ミリも目を引かれないタイトルを取り扱ってます: ココア20g / ハイチュウとかってさ / なぜ米と小麦を食べようと思ったのかの謎 /

