レ点腫瘍学ノート

pukiwikiカスタマイズ箇所/2020/短縮URLを検索画面やリスト画面にも対応させる の履歴差分(No.1)


#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に指定しておくこともできそう。