Breadcrumb automático com uso de função

Para suprir uma necessidade imediata pela qual passei, decidi criar uma função breadcrumbs para que implementasse todo aquele caminho de forma automática, sem ter que colocar todo o caminho na mão.

Agora deixo aqui à disposição a função que criei e que uso em meus projetos. Espero que seja muito útil para quem deseja implementar seu breadcrumb sem muita dificuldade.

Para quem não sabe o que é breadcrumbs: é todo aquele caminho que normalmente aparece na parte superior do conteúdo do site.

Por exemplo: home > artigos > breadcrumb-automatico-com-uso-de-funcao

Onde home é um link para página inicial, artigo linka para página de artigos e breadcrumb-automatico-com-uso-de-funcao é o nome do artigo que está sendo visualizado.


<?php
/**
 * @Author Josean Matias (www.joseanmatias.com.br)
* função para criar breadcrumb da página
* pode ser passado os fragmentos da url
* ou os fragmentos serão criados pela própria função
* @param $url_pieces = url em forma de array
*/
function breadcrumb($url_pieces = array(), $divisor = '>') {
//verifica se foram passados parametros
if ($url_pieces) {
$url_crumb = $url_pieces; $http = null;
} else {
//senão não houver parametro
//então criar a url automaticamente $http = 'http://';
$request = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$explode = explode('/', $request);
foreach($explode as $explode) {
$url_crumb[str_replace('.php', '', $explode)] = str_replace('.php', '', $explode);
}
}
//quantidade de fragmentos da url
$count = sizeof($url_crumb);
//inicia contador
$i = 1;
foreach($url_crumb as $link=>$inner) {
//verifica se é o primeiro fragmento da url
if($i == 1) {
$href .= $http.$link;
} else {
$href .= '/'.$link;
}
//verifica se é o ultimo fragmento da url
if($i == $count) {
//mostrar fragmento sem link
$crumb[] = '<span>'.($inner).'</span>';
} else {
//mostrar fragmento com link para a pagina
$crumb[] = '<a href="'.$href.'" title="'.$inner.'">'.$inner.'</a> '.$divisor.' ';
}
$i++;
}
//mostrar breadcrumb na tela
echo '<div class="breadcrumb">';
foreach($crumb as $crumb) {
echo $crumb;
}
echo '</div>';
}
?>

E para finalizar uma demonstração de como passar parâmetros para a função breadcrumb.

É necessário apenas um array contendo como chaves os fragmentos do link e como valores o conteúdo a ser apresentado.

<?php
//chamada da função breadcrumb com parametro
breadcrumb(array('http://localhost'=>'Home', 'artigo'=>'Artigo', 'titulo-do-artigo'=>'Título do Artigo'));
?>

No exemplo acima estou utilizando um servidor local, porém no lugar de localhost deve ser colocado o nome do domínio.

Veja como ficaria:

<?php
//chamada da função breadcrumb com parametro
breadcrumb(array('http://www.dominio.com.br'=>'Home', 'artigo'=>'Artigo', 'titulo-do-artigo'=>'Título do Artigo'));
?>

Nova versão: para quem trabalha com PHP 5+ ou tem facilidade com orientação a objetos, está disponível a prévia de uma classe do mesmo código abaixo.
Segue link para download e exemplos de implementação: Classe para gerar Breadcrumb automático.

Comentários

Ivo Barbosa | 27/02/2017 19:11:00

Caro Josean Matias,
Como posso usar a class de forma recursiva de uma tabela mysql com categorias e subcategorias?
Obrigado

Josean Matias:

Olá Ivo,

Na classe não necessita de recursividade, se for utilizar recursividade poderá fazer antes de usar a classe, passando para classe apenas um array com o resultado da recursividade.

Mauricio | 15/02/2012 15:29:03
criei o breadcrumb com 3 links usando a função em php da seguinte maneira:
Inicio > Artigos > Programação em PHP.
O problema é que estando na página Programação em PHP e clicando no link Artigos para voltar um nível ...acaba voltando para página inicio...por causa da chamada da função com a passagem dos parâmetros.
Josean Matias:

Olá Mauricio, para que o link aponte para a página Artigos, você deverá passar o parâmetro da url que referencia os Artigos. Exemplo 'artigos'=>'Artigos', onde "artigos" é o parâmetro da url e o "Artigos" é o texto de saída.

Sniffer | 22/07/2011 08:26:47
William, isso que você quer é obtido com o uso de um sitemap.
William | 18/04/2010 01:32:31
Blza Josean, Obrigado pela resposta! Forte abraço!
William | 16/04/2010 17:36:53
Josean, estive procurando na net algo relacionado a breadcrumbs e cheguei ao teu site, agora deixa eu tirar uma dúvida, com esse script é que faz com que os links do meu site apareçam em forma de breadcrumb nos resultados de busca do google ou s script funciona para criar a breadcrumb conforme está abaixo no menu pricipal do seu site? Valew.
Josean Matias: Olá William, este script cria conforme esta abaixo do menu aqui no site. Na verdade desconheço técnicas para criar breadcrumbs para exibição nos resultados do google. O próprio Google é que personaliza seus resultados, inclusive os submenus que aparecem nos resultados para grandes sites.

Comentar