Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: umuCMS - mój CMS - praca dyplomowa
Forum PHP.pl > Forum > PHP
PcPablo
Witam, przyszedł czas na napisane pracy dyplomowej. Padło na CMSa którego sobie wymyśliłem. Przedstawiam i prosze o ocene i ew. zaproponowanie czegoś do logicznego schematu bazy danych:


Idea mojego systemu: Łatwy, szybki i wieloużytkownikowy

Wieloużytkownikowy to znaczy, że jeden kod ma obsługiwać wiele stron internetowych.

Wytłumaczę kilka tabel, które są na projekcie:

Administratorzy: Administrator główny, który tworzy i zarządza administratorami, którzy z kolei mogą dodawać i edytować użytkownió systemu (strony internetowe)

Jezyki: każda witryna może mogła mieć treści w wielu językach. Każdy zestaw menu będzie przyporządkowany do konkretnego języka.

Menu: Każda strona będzie mogła mieć różne menu, które będzie można umiejscawiać w różnych miejscach layoutu

Strony: Każda strona ma template wybrany z zestawu

Pola tresci: Dla każdej strony będzie się tworzyć oddzielne pola (np. tytul, tresc krotka, tresc długa, zdjecie_1 - wszystko jako oddzielny input)

Templaty: Tu ma się mieścić kod html, który będzie układał stronę w całość. Za treść wpisaną w pola treści będą odpowiadać zmienne wpisywane w templaty (np {tytul} {tresc_krotka} itp)

Tresci strony: Tekst/adres do pliku przyporządkowany do konkretnej strony i templatu.

Pluginy: mają być umieszczane w templatach także poprzez znaczniki {nazwa_pluginu} Pluginami mogą być: drzewo stron, kalendarz, pdf_export, zaawansowane drukowanie, wyszukiwarka, logowanie. Pluginy mogą mieć swoją bazę danych i będą dostępne dla witryny wtedy kiedy administrator na to pozwoli

Użytkownicy: każda Witryna może mieć wielu użytkowników: Adminów strony mogących uzupełniać treści i modyfikować wygląd dodawać użytkownikó zwykłych, użytkownik zwykły może tylko dodawać treści, czytelnik po zalogowaniu może czytać strony niedostępne dla ogółu.

Każdy użytkownik po założeniu będzie miał tworzoną oddzielną bazę danych, której adres i hasło będzie wpisywane przy tworzeniu. Automatyczne tworzenie użytkownika w bazie danych chyba będzie trudne do zrealizowania, więc trzeba będzie to ręcznie zrobić.

W layoucie ma być możliwość umieszczania menu, stron, pluginów.

W polach treści ma działać także kod PHP.

Narazie tyle smile.gif
Lonas
Pierwsza rzecz jaka mi się rzuca w oczy - uzytkownicy, administratorzy - przecież może to być jedna tabela z relacją do drugiej gdzie będą grupy do której użytkownik należy.

Grupa będzie miała przypisane uprawnienia i na tej podstawie możesz identyfikować uzytkownika.

Druga sprawa załozyłes chyba jednopoziomowe menu co w przypadku CMS nie jest za dobrym rozwiązaniem.

Ogolnie struktury Twojego CMS troche nie rozumiem. Chyba można to zrobić prościej. Po co Ci np. te pola tresci ?

Przecież możesz mieć jedną tablice w której trzymasz konkretny artykuł. Będzie miał relacje z id menu, flage języka i wszelkie inne atrybuty artykułu.

Tymczasem pozdrawiam
Pilsener
- wystarczy jedna tabela z użytkownikami
- nie widzę kategorii/podkategorii - struktury drzewa - do każdej kategorii powinna być możliwość przypisania innego templatu oraz zainstalowania dowolnych pluginów
- jak zostanie rozwiązana kwestia styli? Piszę np. artykuł i na 6-tej stronie mam tabelkę, do której chcę dodać style - jak to będzie wyglądało?
- moim zdaniem obsługa wielu serwisów jest zbędna - wystarczy założenie, że każda kategoria jest autonomiczna i traktowana jak oddzielny serwis
- treść może pochodzić z różnych źródeł: jako plugin (fragment kodu html umieszczony na stronie), z systemu newsów, systemu artykułów etc. Każdy taki plugin/moduł powinien mieć własne templaty i konfigurację, użytkownik powinien mieć też możliwość dołączania własnych modułów

Ogólnie to napisanie elastycznego i dobrego CMS'a musi potrwać - radzę zacząć od struktury drzewa kategorii, dodawania, usuwanie, edycja kategorii, potem przypisywanie kategoriom pluginów, templatów i styli, na końcu pluginy - jak zrobisz drzewo kategorii to potem jakoś to pójdzie dalej winksmiley.jpg
PcPablo
Tabele Uzytkownicy i Administratorzy jest oddzielona dlatego że Administratorzy jest to tylko jedna tabela z konfiguracją użytkowników tylko do samego systemu, a Uzytkownicy są dla konkretnej strony obsługiwane przez system. Skoro ma być tak, że dla bezpieczeństwa dla każdej witryny ma być tworzona odzielna baza to także dla każdej witryny będzie oddzielna tabela z użytkownikami tej witryny. Myślę, że chyba jednak tabele: uprawnienia użytkowników i uprawnienia administratorów usunę i wpisze to na sztywno w systemie.
Cytat
Druga sprawa załozyłes chyba jednopoziomowe menu co w przypadku CMS nie jest za dobrym rozwiązaniem.

Menu nie będzie jednopoziomowe. Tabela Menu jest tylko deklaracją jakie ile i jakie Menu są na stronie. Samo drzewo menu będą tworzyły nazwy stron. Jak widać w tabeli Strony jest wpis "poprzednia strona" gdzie będzie wpisane ID strony nadrzędnej. Na tej podstawie ma być tworzone drzewo menu.
Cytat
Ogolnie struktury Twojego CMS troche nie rozumiem. Chyba można to zrobić prościej. Po co Ci np. te pola tresci ?

Zazwyczaj w systemach polami treści są: Tytuł, Tresc krótka i Tresc Dluga, co wrzuca się w template strony. Ograniczenie tego powoduje, że osoba uzupełniająca musi trochę znać html żeby zrobić jakiś podział treści, tabele, odstępy. Jeżeli sie zeschematyzuje, to kazdy będzie mógł tylko wpisywać prosty tekst/dodawac pliki to nie będzie potrzebna znajomość htmla i styli. Dzięki temu także użytkownik nie będzie miał okazji zepsuć wyglądu strony. cały wygląd będzie narzucony w templatach. Oczywiście także będzie możliwość wpisywania kodu html w jakieś pole treści. Podsumowująć: ustawiamy jaką treść ma mieć dana strona, tworzymy pola tej treści, ustawiamy wygląd danej strony w templacie i wpisujemy zmienne odpowiadające za treść, i treść uzupełnia się tylko czystym tekstem.
Cytat
Przecież możesz mieć jedną tablice w której trzymasz konkretny artykuł. Będzie miał relacje z id menu, flage języka i wszelkie inne atrybuty artykułu.

Przy tworzeniu strony najpierw ma się Dodawać języki w jakich strona ma funkcjonować, potem do każdego języka będzie się przyporządkowywać menu. Potem do danego menu będzie przyporządkowana pierwsza strona. Jeżeli bym w tabeli Strony umieścił relacje do Języka i menu to nie wiadomoby było dla jakiego języka należy to Menu, czyż nie?
Cytat
nie widzę kategorii/podkategorii - struktury drzewa - do każdej kategorii powinna być możliwość przypisania innego templatu oraz zainstalowania dowolnych pluginów

Template będzie się przyporządkowywać do konkretnej strony. Domyślnie strona ma mieć template taki sam jak template strony nadrzędnej z możliwością zmiany oczywiście.
Cytat
jak zostanie rozwiązana kwestia styli? Piszę np. artykuł i na 6-tej stronie mam tabelkę, do której chcę dodać style - jak to będzie wyglądało?

Style będą teoretycznie tylko potrzebne przy edytowaniu templatów, także tutaj może byc gdzieś jakiś input wyświetlający treść pliku ze stylami. Założenie jest takie że uzupełnianie strony już samą treścią ma się odbywać bez znajomości htmla/ styli ale jeżeli ktoś będzie chciał to można tego użyć i myśle, że będize także jakiś WYSWIG. Moznaby dodać zmienną w tabelli "Pola_tresci" czy dane pole ma mieć WYSWIG czy nie...
Cytat
- treść może pochodzić z różnych źródeł: jako plugin (fragment kodu html umieszczony na stronie), z systemu newsów, systemu artykułów etc. Każdy taki plugin/moduł powinien mieć własne templaty i konfigurację, użytkownik powinien mieć też możliwość dołączania własnych modułów

Tak właśnie, ale z racji że pluginy będą zróżnicowane, kady z nich będzie musiał mieć inną bazę danych i templaty, dlatego nie zawierałem za bardzo tego w tych schemacie.
Cytat
Ogólnie to napisanie elastycznego i dobrego CMS'a musi potrwać - radzę zacząć od struktury drzewa kategorii, dodawania, usuwanie, edycja kategorii, potem przypisywanie kategoriom pluginów, templatów i styli, na końcu pluginy - jak zrobisz drzewo kategorii to potem jakoś to pójdzie dalej.

Dzięki za rade, tak też zrobię.
Będę potrzebował pomocy bo w phpie to cienkawy jestem...
Black-Berry
Piszę CMS'a od kilku dobrych lat i widzę u Ciebie 1 główny błąd który kiedyś robiłem: za dużo tabel.

Oszczędzisz sobie dużo męki jeśli zredukujesz wszystko do:
- konta_uzytkowników
- struktura (moduły:artykuly, kategorie, ewentualnie menu jako węzły nadzrzędne kategorii); wszystko w 1 tabeli, oparte o nested sets tree
- jezyki

reszta jest zbędna.
Mephistofeles
A po co PHP w "polach treści"? Żeby ktoś ci server rozwalił?
Jak mówili poprzednicy userzy i admini to w zasadzie to samo, zmodyfikuj tylko tabelę z uprawnieniami, nie ma sensu tworzyć osobnych.
PcPablo
OK, oto poprawiony projekt:



W "użytkownikach" jest pole "należy do witryny" gdzie będzie znajdować numer witryny, do której należy użytkownik. A jeżeli wartość będzie 0 to znaczy że jest to Administrator i może obsługiwać wszystkie witryny.

W tabeli "Strony" dodałem pole "Layout", będzie tam wpisany plik layoutu, który ma wyświetlać daną strone (np strona glówna będzie inna niż pozostałe strony)

Nie wiem czy można zrobić powiązania między dwiema oddzielnymi bazami danych takie jak jest widoczne.

Co teraz sądzicie?
Black-Berry
Czy ta praca dyplomowa ma byc na rok 2010 questionmark.gif

Nawet jesli okroisz ten projekt tak jak Ci napisałem wcześniej - do 3 tabel to będziesz miał problem żeby się wyrobić w pół roku.
dfs
Trochę odgrzebuję temat , ale mam podobny temat i chciałem zapytać czy robiłeś do tego wzorce projektowe??

Graficzne schemety co i jak działa??

Czy były one w standardzie UML?? czy tylko tak dl siebie kartka i ołówek, bez zamieszczania w pracy??
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.