(v3.23以降) Nucleus 内の各種リンクを生成します。
FancyURLモードの時のみ処理されます。
globalfunctions.php 1035行目
$manager->notify( 'GenerateURL', array( 'type' => $type, 'params' => $params, 'completed' => &$created, 'url' => &$url ) );
globalfunctions.php の該当部分がわかりやすいと思いますので function用にちょこっと書き換えて掲載します
function event_GenerateURL($data) { global $CONF; // url already generated if ($data['completed']) return; switch ($data['type']) { case 'item': $url = $CONF['IndexURL'].'/'.$CONF['ItemKey'].'/'.$params['itemid']; break; case 'member': $url = $CONF['IndexURL'].'/'.$CONF['MemberKey'].'/'.$params['memberid']; break; case 'category': $url = $CONF['IndexURL'].'/'.$CONF['CategoryKey'].'/'.$params['catid']; break; case 'archivelist': if (!$params['blogid']) $params['blogid'] = $CONF['DefaultBlog']; $url = $CONF['IndexURL'].'/'.$CONF['ArchivesKey'].'/'.$params['blogid']; break; case 'archive': $url = $CONF['IndexURL'].'/'.$CONF['ArchiveKey'].'/'.$params['archive']; break; case 'blog': $url = $CONF['IndexURL'].'/'.$CONF['BlogKey'].'/'.$params['blogid']; break; } $data['url'] = addLinkParams($url, $params['extra']); $data['completed'] = TRUE; return $data; }
これをサニタイズしてアイテム・カテゴリーなどをそれぞれ正しいブログの URL で生成する場合
function event_GenerateURL($data) { global $CONF, $manager; // url already generated if ($data['completed']) return; $params = $data['params']; switch ($data['type']) { case 'item': $item_id = intval($params['itemid']); $blog_id = getBlogIDFromItemID($item_id); if ($blog_id == $CONF['DefaultBlog']) { $base_url = $CONF['IndexURL']; } else { $b =& $manager->getBlog($blog_id); $base_url = $b->getURL(); } if (substr($base_url, -1) != '/') $base_url .= '/'; $url = $base_url.$CONF['ItemKey'].'/'.$item_id; break; case 'member': $member_id = intval($params['memberid']); $url = $CONF['Self'].'/'.$CONF['MemberKey'].'/'.$member_id; break; case 'category': $cat_id = intval($params['catid']); $blog_id = getBlogIDFromCatID($cat_id); if ($blog_id == $CONF['DefaultBlog']) { $base_url = $CONF['IndexURL']; } else { $b =& $manager->getBlog($blog_id); $base_url = $b->getURL(); } if (substr($base_url, -1) != '/') $base_url .= '/'; $url = $base_url.$CONF['CategoryKey'].'/'.$cat_id; break; case 'archivelist': if (!$params['blogid']) { $blog_id = $CONF['DefaultBlog']; } else { $blog_id = intval($params['blogid']); } if ($blog_id == $CONF['DefaultBlog']) { $base_url = $CONF['IndexURL']; } else { $b =& $manager->getBlog($blog_id); $base_url = $b->getURL(); } if (substr($base_url, -1) != '/') $base_url .= '/'; $url = $base_url.$CONF['ArchivesKey'].'/'.$blog_id; break; case 'archive': $blog_id = intval($params['blogid']); if ($blog_id == $CONF['DefaultBlog']) { $base_url = $CONF['IndexURL']; } else { $b =& $manager->getBlog($blog_id); $base_url = $b->getURL(); } sscanf($params['archive'], '%d-%d-%d', $y, $m, $d); if ($d) { $archive = sprintf('%4d-%2d-%2d', $y, $m, $d); } else { $archive = sprintf('%4d-%2d', $y, $m); } if (substr($base_url, -1) != '/') $base_url .= '/'; $url = $base_url.$CONF['ArchiveKey'].'/'.$archive; break; case 'blog': $blog_id = intval($params['blogid']); if ($blog_id == $CONF['DefaultBlog']) { $base_url = $CONF['IndexURL']; } else { $b =& $manager->getBlog($blog_id); $base_url = $b->getURL(); } if (substr($base_url, -1) != '/') $base_url .= '/'; $url = $base_url; break; } $data['url'] = addLinkParams($url, $params['extra']); $data['completed'] = TRUE; return $data; }
となります