2011-01-10 17 views
0

を働いていません。ブレッドクラムリンクはまあ、私はこのコードを持って正しく

しかし、私はそれだけで基本的なサイトのURL構造に戻ってリンクブレッドクラムのいずれかをクリックしたときに - それは実際に

http://www.mysite.com/forums/general

に行くべき時にバックhttp://www.mysite.com/generalに戻り、このような「一般的」とあなたはどうやってこれを修正することを提案しますか?あなたは後方にそれを通過する可能性がある

array(
    'forums', 
    'general', 
    'log-book' 
) 

while (NULL !== ($crumb = array_shift($path))) { 
    $title = ucwords(str_replace(Array('.php', '_', '-'), Array('', ' ', ' '), $crumb)); 
    $url = implode('/', $path) . '/' . $crumb; 
    $breadcrumbs[] = "<a href=\"$base$crumb\">$title</a>"; 
} 

注1:HTTP_HOSTに依存しないでくださいあなたの$path配列を指定して

答えて

2

代わりにこれを試してみてください:

function breadcrumbs($separator = ' &raquo; ', $home = 'Home') { 
    $path = array_filter(explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))); 
    $base = ($_SERVER['HTTPS'] ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/'; 
    $breadcrumbs = Array("<a href=\"$base\">$home</a>"); 
    foreach ($path AS $x => $crumb) { 
     $title = ucwords(str_replace(Array('.php', '_', '-'), Array('', ' ', ' '), $crumb)); 
     $breadcrumbs[] = "<a href=\"$base$crumb\">$title</a>"; 
     $base = $base.$crumb.'/'; 
    } 
    return implode($separator, $breadcrumbs); 
} 

注意を変更したライン$base = $base.$crumb.'/';

+0

ブリリアントメイト1.感謝を!その意味でそれを見ることは決して考えられませんでした。どうもありがとうございました。 – SineCosine

+0

が同意しますが、$ base = $ base。$ crumb。 '/'; $ breadcrumbs [] = "$title"の上にあります。それを$ breadcrumbs [] = "$title"にするだけです。代わりに、$ base = $ base。$ crumb。 '/'; $ base = $ crumb。 '/'; – dqhendricks

+0

はい、それも動作します(よりクリーンなコードより良い!) – SineCosine

1

は次のようになります。代わりにSERVER_NAMEを使用してください。前者は、HTTPリクエストのHost: ...フィールドを使用して偽造できます。

注2:私はYoda条件のファンです。

+0

うーん良いキャッチノートに先端 – SineCosine

関連する問題