記事のURLに全角を使えるようにする

提供: GeeklogJpWiki

Geeklogでは、全角など、特殊なURLを許可していませんが,以下のハックで全角を許可し、さらにIDの長さも変更できます。

by ひろろん and Ivy

目次

全角を許可する

lib-common.php

COM_sanitizeID()で、記事IDをサニタイズしています。この処理を一部コメントアウトします。

修正前:

function COM_sanitizeID( $id, $new_id = true )
{
    $id = str_replace( ' ', '', $id );
    $id = str_replace( array( '/', '\\', ':', '+' ), '-', $id );
    $id = preg_replace( '/[^a-zA-Z0-9\-_\.]/', '', $id );

修正後:

function COM_sanitizeID( $id, $new_id = true )
{
    $id = str_replace( ' ', '', $id );
    $id = str_replace( array( '/', '\\', ':', '+' ), '-', $id );
//    $id = preg_replace( '/[^a-zA-Z0-9\-_\.]/', '', $id );

IDの長さを変更する

IDの長さの定義を変更する

/system/lib-story.php:

修正前:

// this must be kept in sync with the actual size of 'sid' in the db ...
define('STORY_MAX_ID_LENGTH', 40);

修正後:

// this must be kept in sync with the actual size of 'sid' in the db ...
define('STORY_MAX_ID_LENGTH', 100);

DBのIDの長さを変更する

上記英語のコメントで注意書きがあるように、テーブルのgl_story のsid のサイズを 変更後の数値にしてください。phpMyAdmin等で変更します。

なお、Geeklog 2.1以降では128に、大きくなっており、変更は不要です。

テンプレートのフォームを変更する

また、テーマの記事編集用テンプレートも、入力フォームの制限値を40から100に ひろげてください。

/layout/テーマ/admin/story/*.thtml:

修正前:

maxlength="40" value="{story_id}"

修正後:

maxlength="100" value="{story_id}"
個人用ツール