plugindev:event:parseurl

event_ParseURL

(v3.2) アクセスしてきたクライアントの送ってきたアクセス先URLを評価します
FancyURLモードの時のみ処理されます

呼び出し元

globalfunctions.php 382行目

    $manager->notify(
    	'ParseURL', 
    	array(
    		'type' => basename(serverVar('SCRIPT_NAME')),	// e.g. item, blog, ...
    		'info' => $virtualpath,
    		'complete' => &$parsed		
    	)
    );

渡されるデータ内容

  • type – FancyURLで拡張子なしのファイルを使用している場合、処理が渡されたファイル名が入る。
    ex. カテゴリーへのアクセスの時に 'category' ではなく 'c' を使用している場合は 'c' が代入される
  • info – URLにクエリ「virtualpath」が設定されていればそれを、無ければ$_SERVER['PATH_INFO'] の内容を使用
  • complete – 呼び出し時には FALSE、プラグインで処理を完了した時に TRUE を代入して返す

使用例

globalfunctions.php の該当部分がわかりやすいと思いますので function用にちょこっと書き換えて掲載します

function event_ParseURL(&$data)
{
        $urlparts = explode('/', $data['info']);
        // url already parsed or no url parts (homepage) - http://site.com
        if($data['complete'] || empty($urlparts)) {
            return;
        }
 
        for ($i=0;$i<sizeof($urlparts);$i++) {
            switch ($urlparts[$i]) {
                case $CONF['ItemKey']:          // item/1 (blogid)
                    $i++;
                    if ($i<sizeof($urlparts)) $itemid = intval($urlparts[$i]);
                    break;
                case $CONF['ArchivesKey']:      // archives/1 (blogid)
                    $i++;
                    if ($i<sizeof($urlparts)) $archivelist = intval($urlparts[$i]);
                    break;
                case $CONF['ArchiveKey']:       // two possibilities: archive/yyyy-mm or archive/1/yyyy-mm (with blogid)
                    if ((($i+1)<sizeof($urlparts)) && (!strstr($urlparts[$i+1],'-')) ){
                        $blogid = intval($urlparts[++$i]);
                    }
                    $i++;
                    if ($i<sizeof($urlparts)) $archive = $urlparts[$i];
                    break;
                case 'blogid':          // blogid/1
                case $CONF['BlogKey']:  // blog/1
                    $i++;
                    if ($i<sizeof($urlparts)) $blogid = intval($urlparts[$i]);
                    break;
                case $CONF['CategoryKey']:  // category/1 (catid)
                case 'catid':
                    $i++;
                    if ($i<sizeof($urlparts)) $catid = intval($urlparts[$i]);
                    break;
                case $CONF['MemberKey']:
                    $i++;
                    if ($i<sizeof($urlparts)) $memberid = intval($urlparts[$i]);
                    break;
                default:
                    // skip...
            }
        }
 
        // once the conditions above are processed, consider the URL parsed
        $data['complete'] = true;
        return;
}
 
plugindev/event/parseurl.txt · 最終更新: 2011/03/23 21:28 (外部編集)