ラック
Home > CMS > 記事 > 2016年1月 > フレンドリーURL設定漏れ簡易チェッカー

フレンドリーURL設定漏れ簡易チェッカー

カテゴリ: MODx

MODxでサイトを作成する際に、夥しい数のリソースを作成する…なんてことは稀だと思いますが、大体の場合は結構それなりな数を作成するとは思います。

作成した際に、ついうっかりエイリアスを設定し忘れて、フレンドリーURLが「~/1.html」とかになってしまっている、なんてことも無きにしも非ず。

全部のリソースについてチェックするのは面倒だし…それをどうにかできないものかと思い、スニペットを作ることにしました。

「リソース1つ+Ditto+スニペット1つ」を組み合わせて、PHxでフィルタリングしてフィルタに引っかかったものをリストアップする、という形で簡易チェッカーになるだろう、と。

スニペット

名前:phx:alias-checker

$varAlias = $value; //Dittoで取得したalias(フレンドリーURL)を$varAliasに代入

if(!empty($varAlias)) { //エイリアス一覧の文字列が空(0やfalse、空文字列も条件に含む)でない場合
	$varAlias = htmlspecialchars($varAlias, ENT_QUOTES, 'UTF-8'); //エスケープ(一応)
	if(preg_match('/^[0-9]$/', $varAlias)) { //正規表現チェック。エイリアスが先頭から末尾まで数字のみのリソースを抽出
		echo '<li><a href="[~[+id+]~]">[+pagetitle+]</a></li>'; //li形式、リンク付きのリソースのタイトルを出力
	}
}

コメントで書いていますが、簡易チェッカーということで「エイリアスが数字1ケタのみで構成されているリソース」を抽出し、li形式で出力するようにします。

 

リソース

<ul>
[!Ditto?
&parents=`0` //全てを検索
&depth = `0` //全ての階層を調べる
&display=`all` //全てを表示
&orderBy = 'createdon DESC' //作成昇順
&tpl=`@CODE:
	[+alias:alias-checker+]
` // 表示パターン
!]
</ul>

どこでも良いので1つリソースを作成し、Dittoをコールします。

Dittoの条件でリソースをごっそり持ってきますが、そのリソース一覧はDittoのパラメータによって公開リソースのみなのか、非公開のものまで含むのか、などは適宜調整してください。

出力パターンの中で、aliasのプレースホルダ(Dittoのループの中で各リソースのaliasの値)に先ほど作成したPHxでフィルタリングします。

PHxの方でelseがないので、数字のみのエイリアスが設定されているリソースのみがliで出力される、と。

管理画面でログインしていれば大体はManagerManagerが上にいるでしょうから、リンクで該当リソースにジャンプし、エイリアスを設定し直せば設定漏れを潰していける、という算段です。

なお、当然ですがエイリアスをあえて数字のみで設定しているような場合はそれも拾ってきてしまうので効果がありません。

それから、このリソースは非公開にしておかないと他の人に探し当てられたときに悲しみを生むのでご注意を。

 

簡易チェッカーですが、これでフレンドリーURL設定周りの悲しみを少しでもなくすことができれば…。

タグ: スニペット, システム設定周り

 



関連する記事一覧