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.
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.