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 =)