短縮URLを検索画面やリスト画面にも対応させる
URL短縮スクリプトを検索画面やcmd=listにも対応させる
pukiwikiカスタマイズ箇所/2020の続きです。
ダジャレンジャーさんのPukiWikiのクソ長いURLをURL短縮ライブラリを組み込んで解決する!で提供されているプラグインは非常に素晴らしいプラグインで、このサイトに書かれた方法ではほとんどのページのURLは短縮化されるのですが、cmd=listでのページ一覧画面とcmd=searchでの検索画面では短縮URLにならなかったため、これに対応させます。
まずダジャレンジャーさんのサイトのPukiWiki用URL短縮ライブラリからshorturl_021.zipをダウンロードしてきます。
この中には2つのフォルダ「shortener」「shortener_counter」が入っていますのでこれをPukiwikiフォルダにアップロードしておきます。
shorturl.php
バージョン0.21から「ディレクトリ定義をDATA_HOMEからの指定に変更」されているようですが、なぜかこれがあるとうまく行かないので24行目と27行目を下記のようにDATA_HOMEを使わない方式に書き換えておきます。
define('SHORT_URL_DIR', 'shortener'); //24行目
define('SHORT_URL_COUNTER_DIR', 'shortener_counter'); //27行目
func.php
pagename_urlencodeとrawurlencodeが残っているところがURLが短縮されない部分なのでここを地道につぶしていきますが、?を含むと含まないの調整が必要です。rawurlencodeのほうで?を削るのはスマートにゆかず、不格好ですがsubstrを使って強引に1文字削っています。
461行目
$r_page = rawurlencode($page); //変更前
$rr_page = get_short_url_from_pagename($page); //変更後
$r_page = substr($rr_page, 1); //変更後はこの1行を追加しておいて?を1文字削る
552行目
$href = $script . '?'; //変更前。このはてなを外す必要がある。
$href = $script; //変更後
558行目
$r_page = pagename_urlencode($page); //変更前。これを短縮URLにする必要がある
$r_page = get_short_url_from_pagename($page); //変更後
これでURL短縮スクリプトを検索画面やcmd=listにも対応させることができたはず。ほぼすべてのURLが短縮URLになったので、metaタグで指定するcanonical URLをこの短縮URLに指定しておくこともできそう。
他プラグインへの応用
なお、このpagename_urlencode($page)をget_short_url_from_pagename($page)に書き換える方法は他のプラグインにも応用できます。
rss.inc.php
RSSフィードを吐き出すrss.inc.phpは2カ所のpagename_urlencode($page)をget_short_url_from_pagename($page)に書き換えてやると短縮URLでのRSSを出力するようになります。ただし、そのままでは?が重なってエラーのあるリンクが出力されるので、56行目の<link>$self?$r_page</link>の?を削っておくことが必要です。
sitemap.inc.php
サイトマップを作成するプラグインでも69行目から70行目に同様のpagename_urlencode($page)をget_short_url_from_pagename($page)に書き換えてやる改造を行います。なお、サイトマップはページを書き換えるたびに生成されるため、プラグインを修正後にサイトマップに修正を反映させるにはいずれかのページを書き換える必要があります。
この記事に対するコメント
このページには、まだコメントはありません。
更新日:2021-11-27 閲覧数:1305 views.