Script php para gerar hierarquia de classes dependendo da URL atual
Fiz um post semana passada, sobre como podemos melhor aproveitar o elemento body dos nossos sites:
http://wbruno.com.br/2012/03/01/elemento-body-nos-nossos-sites-como-melhor-aproveita-lo/
E nele eu cito, que o “trabalho” do server-side, seria gerar essas classes no body, ou então nós mesmos fazer isso “na mão”, página por página.
Sou preguiçoso então…
Por exemplo, se a URL for:
site.com.br/ ou site.com.br/index.html
a classe do elemento body, deve ser:
<body class="home">
E para cada nível, a class deve refletir:
site.com.br/frutas.html
<body class="frutas">
Mas se começar a “complicar”, e mais níveis surgirem..
site.com.br/frutas/banana.html
<body class="frutas banana">
Ou:
site.com.br/frutas/banana/nanica.html
<body class="frutas banana nanica">
Para ser eficiente, a class do nosso body, deve refletir essa “realidade”.
Criei um conjunto de funções em php, que fazem isso. Analisam a URL requisitada (REQUEST_URI), e devolvem essa estrutura:
<?php
/**
* @return boolean, true caso a URI seja a home do site
*/
function is_home(){
return stripos( $_SERVER['REQUEST_URI'], 'index.html' )
|| !stripos( $_SERVER['REQUEST_URI'], '.html' );
}
/**
* @return string, class=""(html) de acordo com o URI atual
*/
function get_body_class(){
if( is_home() ) return 'class="home"';
$pieces = explode( '/', $_SERVER['REQUEST_URI'] );
$class = Array();
foreach( $pieces AS $part ){
$class[] = str_replace( '.html', '', $part );
}
return 'class="'.implode( ' ', $class ).'"';
}
/**
* @see get_body_class()
*/
function body_class(){ echo get_body_class(); }
Agora que terminei de escrever, percebi que você pode usar também para um bread crumb, ne?!
Me diz o que você acha.
É isso =)