Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] CMS problem z " A > B > C"
propage
post
Post #1





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

Ostrzeżenie: (0%)
-----


Do tej pory pisałem strukturalnie. Tworze swój CMS/Framework i zastanawiam się nad jedną sprawą.

Jak rozwiązać sprawę wyświetlania nawigacji na stronie czyli "Jesteś tutaj : home > kategoria 1 > kategoria 2 > kategoria 3 > produkt"

Poziomów kategorii może być dowolnie wiele.
URL mają postać:

domena.pl/kategoria-1/kategoria-2/kategoria-3/produkt-1.html

ale do tego samego produktu można wejść też używając adresu

domena.pl/kategoria-1/kategoria-2/produkt-1.html


moja aplikacja wygląda mniej-więcej tak:

  1. <?php
  2. include_once('controllers/' . $subPage . '.php');
  3. $page = new $subPage($db);
  4. ?>



A tutaj kontroler produktu, kategorii i innych stron ma taką postać.

  1. <?php
  2. class product extends core
  3. {
  4.   function __contruct()
  5.   {
  6.       $this->name = $nazwa_produktu;
  7.       $this->trail->add(array($nazwa_produktu, $nazwa_produktu.'.html'));
  8.  
  9.       $url = explode ( '/', $_GET) ;
  10.  
  11.       $category_name = $url[count($url) - 2];
  12.      
  13.       if(count($url) > 2)
  14.       {
  15.         $parent = 'home';
  16.         include('controllers/home.php');
  17.       {
  18.        else
  19.        {
  20.        $parent = 'category';
  21.         include('controllers/category.php');
  22.        }
  23.      
  24.   }
  25.  
  26.   function display()
  27.   {
  28.    ....
  29.    }
  30. }
  31. class category extends core
  32. {
  33.    function __contruct(,,, $i)
  34.    {
  35.        $this->name = $nazwa_kategori;
  36.       $this->trail->add(array($nazwa_kategori, $nazwa_kategori));
  37.        $url = explode ( '/', $_GET) ;
  38.  
  39.        $category_name = $url[count($url) - (2+$i)];
  40.  
  41.         if(count($url) > 2)
  42.        {
  43.          $parent = 'home';
  44.          include('controllers/home.php');
  45.        
  46.        {
  47.         else
  48.         {
  49.            $i++;
  50.           $parent = 'category';
  51.              include('controllers/category.php');
  52.           $subsctegory new category(..., $i)
  53.         }
  54.    }
  55.  
  56.    function display()
  57.    {
  58.     ....
  59.     }
  60. }
  61. ?>



To jedyny pomysł na jaki wpadłem niestety. Aby nie tworzyć nowych plików. Czyli wszystki informacje potrzebne do wyświetlenia danej podstrony i stworzenia traila są w plikach, w każdym pliku jest zaznaczone co jest rodzicem danego pliku, wiec dla produktu np jet to kategoria a dla kategori strona głowna (w prostej wersji - przy jedno poziomowej kategorii)

Może ktoś podać jakiś inny pomysł rozwiązywania tego problemu? Może jakieś przykłady, CMS gdzie mogę podejrzeć inne rozwiązania?

Ten post edytował propage 22.03.2009, 20:42:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Skoro możesz zagnieżdżać kategorie, to znaczy, że masz to jakoś zaimplementowane. Wystarczy mieć dobry algorytm obsługi drzewa, aby takie listy generować jednym, prostym zapytaniem. Własność taką ma np. nested set znany także jako modified preorder tree traversal. Jest na jego temat trochę artykułów, również po polsku, było to poruszane kilkakrotnie na tym forum i tam też odsyłam.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.10.2025 - 00:20