【PluXml】タグ名に日本語を使うとURLが生成されないバグを解消

投稿者 footfoot | | コメントなし

PluXmlにはタグ名の日本語部分のURLが生成されないバグがあったので、解決方法を書いときます

※カスタムしたバージョンはPluXml 5.5です。

参考元のフォーラム

class.plx.utils.phpのtitle2url関数を編集

core/lib/class.plx.utils.phpの341行目にtitle2urlという関数があります。これタイトル(タグ名)をURLに変換する関数です。↓元の状態。

	public static function title2url($str) {

		$str = strtolower(plxUtils::removeAccents($str,PLX_CHARSET));
		$str = preg_replace('/[^[:alnum:]]+/',' ',$str);
		return strtr(trim($str), ' ', '-');
	}

これに3行追加。$aにタグ名の日本語を、$bにはそのURLをカンマで区切って入力。次の行で$aを$bに変えてるという感じ。日本語とURLのarrayの順番は同じにしないとめちゃくちゃになると思うので注意。

	public static function title2url($str) {

		$str = strtolower(plxUtils::removeAccents($str,PLX_CHARSET));
		$a = array('写真','100均','スマホゲーム'); 
		$b = array('picture','100kin','mobile-game');
		$str = str_replace($a, $b, $str); 
		$str = preg_replace('/[^[:alnum:]]+/',' ',$str);
		return strtr(trim($str), ' ', '-');
	}

これで$aのタグ名の場合は$bのURLにすることができます。

欠点としては、新しく日本語のタグを作る場合、また$aと$bに値を入れなきゃいけません。まぁわかってれば手間はかかりませんけど、できれば管理画面でタグの編集ができるようになってほしいなぁ。

カテゴリ : PluXml

コメントを書く

1つ目のアルファベットを入力してください tzeybz?