breadcrumbs con microformat o RDF piccolo aiutino..

  • Creatore Discussione Creatore Discussione otto9due
  • Data di inizio Data di inizio

otto9due

Utente Attivo
22 Feb 2014
591
25
28
In pratica vorrei andare ad integrare uno tra i due microformat o RDF in questa funzione php..
Ho provato in diversi modi ma nessuno di questi produce il risultato sperato.. Qualcuno mi da una mano?
Vi posto la funzione..

PHP:
<?php
function breadcrumbs($separator = ' &raquo; ', $home = 'Home') {

    $path = array_filter(explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)));
    $base_url = substr($_SERVER['SERVER_PROTOCOL'], 0, strpos($_SERVER['SERVER_PROTOCOL'], '/')) . '://' . $_SERVER['HTTP_HOST'] . '/';
    $breadcrumbs = array("<a href=\"$base_url\">$home</a>");
    $tmp = array_keys($path);
    $last = end($tmp);
    unset($tmp);

    foreach ($path as $x => $crumb) {
        $title = ucwords(str_replace(array('.php', '_'), array('', ' '), $crumb));
	if ($x == 1){
	        $breadcrumbs[]  = "<a href=\"$base_url$crumb\">$title</a>";
	}elseif ($x > 1 && $x < $last){
		$tmp = "<a href=\"$base_url";
		for($i = 1; $i <= $x; $i++){
			$tmp .= $path[$i] . '/';
		}
                $tmp .= "\">$title</a>";
		$breadcrumbs[] = $tmp;
		unset($tmp);
        }else{
                $breadcrumbs[] = "$title";
	}
    }

    return implode($separator, $breadcrumbs);
}	
echo breadcrumbs();

?>

Questo è il link che spiega come implementare questi formati..
https://support.google.com/webmasters/answer/185417?hl=it
Non mi trovo con l'alberatura in maniera dinamica..
 
In questo modo funziona.. Ma vorrei che funzionasse nella modalità child ovvero se una pagina ha più breadcrumb trail..
In pratica il priblema principale sta nel chiudere gli <span> ovvero metterne tanti quanti ne servono alla fine per chiudere quelli aperti. In totale dovrebbero essere 2 per ogni esecuzione del ciclo for -1 ( perchè la home ha solo uno span ) :p
Vi posto quanto ho fatto fino ad ora.. Potrebbe comunque essere utile per modellarlo:

PHP:
/* Inizio funzione breadcrumbs*/
function breadcrumbs($separator = ' <i class="fa fa-angle-right"></i> ', $home = '<i class="fa fa-home"></i> Home') {

    $path = array_filter(explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)));
	$finalurl="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    $base_url = substr($_SERVER['SERVER_PROTOCOL'], 0, strpos($_SERVER['SERVER_PROTOCOL'], '/')) . '://' . $_SERVER['HTTP_HOST'] . '/';
    $breadcrumbs = array("<span typeof='v:Breadcrumb'><a href=\"$base_url\" rel='v:url' property='v:title'>$home</a>");
    $tmp = array_keys($path);
    $last = end($tmp);
    unset($tmp);

    foreach ($path as $x => $crumb) {
        $title = ucwords(str_replace(array('.php', '_'), array('', ' '), $crumb));
	if ($x == 1){
	        $breadcrumbs[]  = "<span typeof='v:Breadcrumb'><a href=\"$base_url$crumb\" rel='v:url' property='v:title'>$title</a></span>";
	}elseif ($x > 1 && $x < $last){
		$tmp = "<span typeof='v:Breadcrumb'><a href=\"$base_url";
		for($i = 1; $i <= $x; $i++){
			$tmp .= $path[$i] . '/';
		}
                $tmp .= "\" rel='v:url' property='v:title'>$title</a></span>";
		$breadcrumbs[] = $tmp;
		unset($tmp);
        }else{
                $breadcrumbs[] = "<span typeof='v:Breadcrumb'><a href=\"$finalurl\" rel='v:url' property='v:title'>$title</a></span>";
	}
    }

    return implode($separator, $breadcrumbs);
}	

/* Fine funzione breadcrumbs*/
 
Avevo pensato di aprire tutti gli <span>.. e poi chiuderli alla fine con un ciclo come questo..
PHP:
<?php
$cont = 1;
while ($cont <= $x) {
  echo "</span></span>";
  $cont++;
}
?>
Cioè aggingerne 2 ogni livello del link inserito.. Più uno che dovrebbe chiudere quello iniziale..
Ho provato in diversi modi ma ancora nulla.
La struttura da seguire sarebbe questa:

HTML:
<div xmlns:v="http://rdf.data-vocabulary.org/#"> 
  <span typeof="v:Breadcrumb">
    <a href="http://www.example.com/books" rel="v:url" property="v:title">
      
      Libri
    </a> ›
    <span rel="v:child">         
          
      <span typeof="v:Breadcrumb">
        <a href="http://www.example.com/books/authors" rel="v:url" property="v:title">
          
          Autori
        </a> ›
        <span rel="v:child">         
                   
          <span typeof="v:Breadcrumb">
            <a href="http://www.example.com/books/authors/stephenking" rel="v:url" property="v:title">
              
              Stephen King
            
            </a> ›   
<!-- Da qui si dovrebbe iniziale a chiudere aggiungendo 2  span per ogni livello del link. Aggiungendo il ciclo alla fine di ogni link mi appaiono stranamente dopo il link base del sito.. -->       
          </span>
        </span>
      </span>
    </span>
  </span>
</div>
 

Discussioni simili