[PHP] Wzorzec tworzenia mapy strony

Zobacz komentarze

Podziel się

[PHP] Wzorzec tworzenia mapy strony - http://webprojektant.plKilka dni temu zostałem zapytany o to czy istnieje możliwość abym opisał jak wygląda generowanie mapy witryny. Z racji deficytu czasu ostatnimi dniami pozwolę sobie tylko na drobny pseudo wzorzec. Prawdopodobnie jeżeli w przyszłości znajdę chwilkę czasu lub będzie występować większe zapotrzebowanie/parcie na skrypt to zapewne przykład/artykuł. Esencją tworzenia sitemap jest tworzenie relacji. Krótko i na temat wygląda mniej więcej tak:

<?php  
include './sitemap.class.php';  
$sitemap = new sitemap();    
$sitemap -> add_node(array('name' => 'Kategoria 1'));  
$sitemap -> map[0] -> add_node(array('name' => 'Punkt 1.1')); 
   
$sitemap -> add_node(array('name' => 'Kategoria 2'));  
$sitemap -> map[1] -> add_node(array('name' => 'Punkt 2.1'));  
$sitemap -> map[1] -> add_node(array('name' => 'Punkt 2.2'));  
$sitemap -> map[1] -> add_node(array('name' => 'Punkt 2.3')); 
   
$sitemap -> add_node(array('name' => 'Kategoria 3')); 
$sitemap -> map[2] -> add_node(array('name' => 'Punkt 3.1'));  
$sitemap -> map[2] -> add_node(array('name' => 'Punkt 3.2'));  
  
$sitemap -> map[2] -> map[1] -> add_node(array('name' => 'Punkt 3.2.1'));  $sitemap -> map[2] -> map[1] -> add_node(array('name' => 'Punkt 3.2.2'));  $sitemap -> map[2] -> map[1] -> add_node(array('name' => 'Punkt 3.2.3'));

 // Generate sitemap (HTML version)  
 echo rendering_list($sitemap);    
 function rendering_list($sitemap)  
 {   $data = '<ul>';     
 foreach($sitemap -> map as $item)   
   {    
   if($sitemap -> is_having_child($item))    
      {     
          $data .= '<li><a href="'.$item -> address.'">'.$item -> name.'</a>';     
          $data .= rendering_list($item);     
            $data .= '</li>';    
         }    
    else    
      {     
          $data .= '<li><a href="'.$item -> address.'">'.$item -> name.'</a></li>';
         }   
     }     
     $data .= '</ul>';     
     return $data;  
 }  
?>

W największym skrócie wygląda to właśnie tak. Funkcja rendering_list() służy jako swojego rodzaju odpowiednik warstwy wyglądu. Jeżeli chodzi o tworzenie węzłów to radzę poeksperymentować z polem map - w ostateczności stary dobry var_dump($sitemap) może być pomocny.

<?php  
class sitemap  
{   
  public $map;     
    public function add_node($data)   
    {    
      $this -> map[] = new node($data);   
    }     
    public function is_having_child($node)   
    {    
      return $node -> map;   
    }  
}    
class node extends sitemap  
{   
  public $name;   
    public $address;     
    public function node($data)   
    {    
      $this -> name = $data['name'];    
        $this -> address = $data['address'];   
    }  
}  
?>

Właściwie tak mały fragment kodu nie wymaga chyba tłumaczenia? W zależności od zapotrzebowania rodzaju budowania mapy można sobie do node dodać dodatkowe pola.

Czego skrypt nie posiada?

  • Możliwości wyboru rodzaju generowanej mapy strony (HTML, XML, TXT, inne)
  • Metody sprawdzającej czy aktualny węzeł posiada rodzica
  • Metody zwracającej listę rodziców
  • Metody zwracającej aktualny poziom zagłębienia
  • Mechanizmu statystyk tj. ile jest węzłów/obiektów na określonym poziomie głębokości
  • Metody zwracającej ostatni dodany węzeł
  • Metody zwracającej aktualny offset (węzeł)
  • Mechanizmu pamiętającego ostatni ID węzła na określonym poziomie
  • Metody odpowiedzialnej za usuwanie określonego węzła/węzłów
  • Metody sprawdzającej najgłębszy poziom zanurzenia
  • I innych rzeczy, których teraz nie pamiętam

WEBprojektant.pl na YouTube!

Kanał WEBprojektant.pl na YouTubeMam przyjemność ogłosić, że działa nasz kanał na Yotube - WEBprojektant.pl - poradnik webmastera, gdzie możecie znaleźć nasze video tutoriale.

Może nie jest tam jeszcze porażająca ilość poradników dla webmasterów, ale postaram się aktualizować kanał w miarę możliwości. Proszę Was o tematykę jaką chcecie, aby poruszyć w kolejnych tutorialach. Łatwiej mi będzie wybrać na czym się skoncentrować.

Może się przydać

Top 3 webmaster

Nasze statystyki

Użytkowników:
130
Artykułów:
224
Odsłon artykułów:
3279872