breadcrumbs con microformat o RDF piccolo aiutino..

Discussione in 'PHP' iniziata da otto9due, 5 Dicembre 2014.

  1. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    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'], 0strpos($_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 && $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..
     
  2. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    28
    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'], 0strpos($_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 && $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*/
     
  3. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    28
    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>
    
     
Sto caricando...
Discussioni simili - breadcrumbs microformat RDF
  1. MarcoGrazia
    Risposte:
    2
    Visite:
    1.281

Condividi questa Pagina