#author("2020-09-14T22:58:12+09:00;1970-01-01T18:00:00+09:00","default:tgoto","tgoto")
*URL短縮スクリプトを検索画面やcmd=listにも対応させる
[[PukiWikiのクソ長いURLをURL短縮ライブラリを組み込んで解決する!>https://dajya-ranger.com/pukiwiki/embed-url-shortener/]]のサイトの方法ではほとんどのページのURLは短縮化されるのにcmd=listでのページ一覧画面とcmd=searchでの検索画面では短縮URLにならなかったため、これに対応させます。
まずダジャレンジャーさんのサイトの[[PukiWiki用URL短縮ライブラリ>https://dajya-ranger.com/sdm_downloads/short-url-library-pkwk153/]]から''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に指定しておくこともできそう。