2009-09-05 12 views
5

Próbuję zbudować własny CMS dla siebie i moich klientów. System będzie wykorzystywany głównie w małych witrynach internetowych < 10 stron. W przypadku większego projektu najprawdopodobniej wykorzystam istniejący system (MojoPortals, Umbraco, Kooboo). Powodem, dla którego chcę mieć własny system, jest to, że mam pełną kontrolę, a także dlatego, że istniejące systemy są w większości nadęte funkcjami, których i tak nie wykorzystam w przypadku mniejszych projektów. Uczę się także Asp.net Mvc, więc jest to drugi powód do zbudowania własnego systemu.Asp.net Mvc: Tworzenie prostej cms

Oto niektóre z systemów próbowałem (niektóre bardziej niż inne):

Ten, który mi się podobał, to MojoPortals. Głównie ze względu na system lewy-prawy-prawy + moduły.

Więc moim celem jest stworzenie systemu, w którym można tworzyć strony, a każda strona będzie zawierała lewy, środkowy i prawy symbol zastępczy dla modułów. Moduły będą bardzo proste (Text, HTML, Image). System musi również być łatwy do wdrożenia i ponownego użycia.

Już zacząłem pracować nad moim systemem.

Przedmiotem strona wygląda tak:

public class Page 
{ 
    public int PageID { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public string Title { get; set; } 
    public IEnumerable<Module> Modules { get; set; } 
} 

Przedmiotem Moduł wygląda tak:

public class Module 
{ 
    public int ModuleID { get; set; } 
    public string ModuleTitle { get; set; } 
    public string ModuleType { get; set; } 
    public string ModuleLocation { get; set; } 
    public Dictionary<string, string> ModuleValues { get; set; } 
} 

Tak moim zdaniem wygląda: www.codepaste.com

Później będę pewnie dodać obiekt strony internetowej zawierający informacje, który widok (szablon) zostanie wyświetlony.

Pytania, które mam w tej chwili dotyczą głównie widoku. Widok, który łączyłem, ma pewien podstawowy kod, który najpierw sprawdza lokalizację modułu, a następnie pokazuje wszystkie informacje o module we właściwej lokalizacji. Chciałbym, aby ta część była łatwa do ponownego wykorzystania. Tak więc pomyślałem o zrobieniu silnie wypisanego częściowego widoku, który robi lewy, prawy i środkowy materiał. Również w przypadku modułów myślałem o użyciu częściowych widoków i renderowania poprawnej części określonego typu moduleType. Więc tekst będzie miał częściowy, html będzie miał jeden i tak dalej. Nie jestem pewien, czy to właściwa technika.

Czy powinienem używać częściowego widoku do obsługi lewego, środkowego i prawego materiału i używać częściowych widoków do załadowania modułów?

Jeśli ktoś ma inne informacje na temat budowy modułów lub technik/struktur, z których mogę korzystać, to byłoby naprawdę świetnie.

Z góry dzięki, Pickels.

+0

Moja rada to nie przeszkadzało - używać Umbraco (które mogą być dostosowane do być bardzo proste). Wysiłek tworzenia i utrzymywania nawet pozornie prostego CMS jest duży i to przed nieuniknionym przyszłym pełzaniem. Co się dzieje, gdy ktoś chce przywrócić poprzednią wersję treści? Czy twój schemat może sobie z tym poradzić? –

+0

Świetne pytanie. Dzięki! – Shimmy

Odpowiedz

0

Tak, to najlepsza opcja. Ustaw "bazę strukturalną" dla każdego szablonu z css i spraw, aby każdy moduł ładował swoje własne widoki do odpowiednich sekcji szablonów. Powiedzmy, że szablon ma górne menu pod wspólnym nagłówkiem, w którym wyświetlasz logo firmy i inne rzeczy.wstaw do bazy danych informacje o module i o górnej sekcji szablonu (należy całkowicie utworzyć tabelę w bazie danych o strukturze szablonu, aby system wiedział, gdzie umieścić każdy moduł związany z każdą stroną) i po prostu użyć system, aby uzyskać wymagany moduł w każdym żądaniu strony do właściwej pozycji, co spowoduje załadowanie jego własnych widoków do tego miejsca.

nadzieję, że rozumiesz moje pisanie :)

+0

Naprawdę nie rozumiem, co napisałeś. – Pickels

+0

Zasadniczo spraw, aby twój comtroller/model ładował tablicę z bazą strukturalną każdej żądanej strony, a dla każdej sekcji znalezionej w strukturze miałbyś powiązany z modułem. – yoda

Powiązane problemy