Forum PCLab.pl: [PHP,MySQL] CMS - zarządzanie stronami - Forum PCLab.pl

Skocz do zawartości

Uwaga! Uwaga! Zarejestruj się i odbierz bonus w Drakensang Online Dodaj obrazek

Otwarty

Ikona Ostatnio dodane tematy

Ikona Najnowsze pliki

Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

[PHP,MySQL] CMS - zarządzanie stronami Oceń temat: -----

#1 Użytkownik jest niedostępny   Yourek Ikona

  • Gaduła
  • PipPipPip
  • Grupa: Forumowicze
  • Postów: 120
  • Dołączył: Nd, 20 Sie 06

Napisany 10 Luty 2012 - 09:23

Witam,

Chciałbym was spytać w jaki sposób zarządzać stronami gdy tworzy się CMS'a. Na chwilę obecną moje umiejętności pozwalają mi tylko na zarządzanie stronami w taki sposób, że w bazie danych mam 2 kluczowe pola: ID oraz PARENT_ID, które określają numer strony oraz numer strony nadrzędnej (rodzica) do którego należy jakaś podstrona.
Spróbuje w miarę przejrzyście opisać o co mi chodzi. Jeśli coś opisze źle to proszę o poprawienie.

Np jeśli mam pierwszą (ITEM) stronę z wartościami ID = 1 oraz PARENT_ID = 0 to jest ona oznaczona jako podstawowa, a jeśli mam mam drugą strone (SUBITEM) z wartościami ID = 2 oraz PARENT_ID = 1 to przynależy ona do strony ITEM. Krótko mówiąc SUBITEM jest podstroną ITEM. W menu na stronie wyświetla się ta strona gdy najedzie sie myszką na ITEM.

Takie rozwiązanie jest ok, jeśli chodzi o proste strony. Lecz gdy chciałbym np dodać stronę "Galeria", to już mam problem z jej identyfikacją w kodzie (strona galeria posiada w bazie danych osobną tabelę, gdzie są umieszczane informacje dotyczące zdjęć, ich lokalizacji, nazwy plików itp).

W kodzie pobieram dane z tabeli STRONY
   $r = mysql_query('select * from strony where parent_id = 0'); // pobierz strony podstawowe
   if($r){
     while($row = mysql_fetch_array($r))
     {
        echo "<a href='index.php?id={$row['id']}'>$row['nazwa_strony']</a>";
        $r = mysql_query('select * from strony where parent_id = {$row['id']}');
       if(mysql_num_rows($r) > 0){
          // wyświetl podrzędne strony
       }
     }
}


i jakoś to działa. W menu są wartości np: Home, O nas, Kontakt, Galeria.

Wyświetlenie zawartości strony
                         if ($_GET['fsid']) {
                                 $fsid = $_GET['fsid'];
                                 $sqlCommand = "SELECT body,title FROM strony WHERE id='$fsid' ";
                         }
                         else {
                                 $fsid = '1';
                                 $sqlCommand = "SELECT body,title FROM strony WHERE id='$fsid' ";
                         }
                         if(isset($_GET['fsid']) && isset($_GET['ssid'])) {
                                 $ssid = $_GET['ssid'];
                                 $sqlCommand = "SELECT body,title FROM strony WHERE id='$ssid' ";
                         }

                         $query = mysql_query($sqlCommand) or die (mysql_error());
                         while ($row = mysql_fetch_array($query))
                         {
                           $body = $row['body'];
                           $title = $row['title'];
                         }


No i ładnie się wyświetla zawartość pola body(tresc, jak zwal tak zwał). Natomiast gdy chcę wyświetlić galerię to sprawdzam to tak:

   if(isset($_GET['title']) && $_GET['title'] == 'galeria')
{
   //pobierz dane z tabeli galeria i wyświetl zdjęcia
}


i tak z każdą niestandardową stroną. Tak więc plik index.php jest nieciekawie zorganizowany.
Stąd moje pytanie. Jak to można rozwiązać, zeby to miało ręce i nogi?
Może jakiś tutorial znacie który by mnie nakierował?

Dzięki za wszelkie sugestie.

Ten post był edytowany przez Yourek dnia: 10 Luty 2012 - 10:05


#2 Użytkownik jest niedostępny   januzi Ikona

  • ^ patryjota, katolig
  • Ikona
  • Grupa: Moderatorzy
  • Postów: 31302
  • Dołączył: Nd, 08 Cze 03

Napisany 10 Luty 2012 - 12:43

Robisz sobie tabelę "moduły", do której wstawiasz dane o dostępnych w cmsie modułach. "Moduły_parametry" zawiera parametry dostępne dla każdego modułu. Potem robisz tabelę "układ strony", w której siedzi nazwa układu oraz ew. dodatkowe parametry (css do doklejenia itd). W tabeli "układ_moduły" masz id modułu, id układu, zestaw parametrów do użycia w tym przypadku. Na koniec "układ_dowiązanie", w której jest informacja o tym, jaki układ użyć na danej podstronie.

W momencie ładowania strony wyciągasz informacje o układzie i modułach jakie mają być użyte. W pętli przechodzisz po kolejnych modułach. Dołączasz odpowiednie pliki php (dobrze jest użyć include_once albo tablicy do pamiętania co już jest dołączone). Odbierasz z każdego modułu treść do wstawienia na stronę. Na koniec wklejasz tą treść do nagłówka, lewej kolumny, prawej kolumny, centralnej kolumny, stopki, pola zdefiniowanego przez użytkownika i wysyłasz wszystko do przeglądarki.

Tak mniej więcej.

Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

1 Użytkowników czyta ten temat
0 użytkowników, 1 gości, 0 anonimowych