Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> CMS - założenia wstępne, Co o tym myślicie?
elnino.pl
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 0
Dołączył: 17.06.2006

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


W ciągu kilku najbliższych dni rozpocznę prace nad nowym projektem - CMS. Ogólne założenia są następujące:
  • Otwartość kodu (licencja GNU/GPL lub podobna własna)
  • Obiektowość (> php 5)
  • Integracja z bazą danych dzięki PDO (> php 5.1)
  • Lekki silnik będący jedynie interfejsem do obsługi modułów
  • Przerzucenie maksymalnej ilości kodu do modułów
  • Obsługa wielojęzyczności poprzez moduł gettextowy (pliki *.mo)
  • Część prezentacyjna: system szablonów (najprawdopodobniej Smarty)

A teraz zasada działania modułów na przykładzie modułu "aktualności":
  • Moduł dostarcza 2 widoki: "lista newsów" oraz "news", a także model pobierający z bazy dane
  • Użytkownik tworzy nową gałąź serwisu (np. ROOT/aktualnosci) nadając jej widok "lista newsów"
  • Widok "lista newsów" pozwala na dodawanie sobie podstron (np. ROOT/aktualnosci/news1), które mogą korzystać jedynie z widoku "news"
  • Każdy widok jest powiązany z plikiem konkretnym plikiem szablonu
Nie bardzo wiem jak rozwiązać uniwersalność pliku szablonu - aby po dodaniu nowego modułu nie trzeba było nic w nim ruszać - aby sam zaaplikował styl użytkownika. Myślę, że spokojnie CSS sobie poradzi - czyli design byłby tworzony jedynie z pliku CSS i obrazków, pliki szablonów byłyby w pewnym sensie podpinane "na sztywno".

Co o tym myślicie?

Nie mam jeszcze zielonego pojęcia jak rozwiązać w taki projekcie obsługę wielu jezyków - tak, żeby można było tłumaczyć bezpośrednio w panelu biorąc pod uwagę to, że niektóre wyrażenia do przetłumaczenia będą w bazie danych, a niektóre już w szablonie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ludvik
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Cytat
@Ludvik: czy rozumiesz wyraz "przykładowo"?

Dziwnie się składa, że odpowiedź jest twierdząca. Czasami zdarza się człowiekowi nie doczytać, szczególnie o tej porze.
Cytat
Każdy rodzaj strony musi posiadać następujące pola: tytuł, datę powstania, autora, itp. - treść natomiast może być różna:
- dla newsa: wstęp i pełna treść
- dla produktu w sklepie: opis, cena, fotki, itp.
- itd.

Wszystkie pola "specjalne" w bazie byłyby zapisywane w jednej kolumnie - jako zserializowana tablica

Będziesz miał problem z sortowaniem danych względem pól "specjalnych". Poczytaj temat, do którego adres podał ci Diwi.

Cytat
A teraz zasada działania modułów na przykładzie modułu "aktualności":
  • Moduł dostarcza 2 widoki: "lista newsów" oraz "news", a także model pobierający z bazy dane
  • Użytkownik tworzy nową gałąź serwisu (np. ROOT/aktualnosci) nadając jej widok "lista newsów"
  • Widok "lista newsów" pozwala na dodawanie sobie podstron (np. ROOT/aktualnosci/news1), które mogą korzystać jedynie z widoku "news"
  • Każdy widok jest powiązany z plikiem konkretnym plikiem szablon

Skoro już mówimy o przykładzie, to większość u Ciebie robi widok. Na przykład "pozwala na dodawanie sobie podstron". Przy pisaniu CMS, ciężko będzie bez wzorca MVC. Mimo wszystko podszedł bym do sprawy inaczej, przypisując elementom typy, a nie widoki. Sprawa by była prostsza - widoki by były wymienne, niezależne od siebie, a same elementy były by łatwe do jednoznacznego zidentyfikowania.
Go to the top of the page
+Quote Post
elnino.pl
post
Post #3





Grupa: Zarejestrowani
Postów: 125
Pomógł: 0
Dołączył: 17.06.2006

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


Cytat(Ludvik @ 13.07.2006, 11:07 ) *
Będziesz miał problem z sortowaniem danych względem pól "specjalnych". Poczytaj temat, do którego adres podał ci Diwi.

Racja, rozwiązanie to miało inne plusy, ale już zniknęły...

Cytat(Ludvik @ 13.07.2006, 11:07 ) *
Skoro już mówimy o przykładzie, to większość u Ciebie robi widok. Na przykład "pozwala na dodawanie sobie podstron". Przy pisaniu CMS, ciężko będzie bez wzorca MVC. Mimo wszystko podszedł bym do sprawy inaczej, przypisując elementom typy, a nie widoki. Sprawa by była prostsza - widoki by były wymienne, niezależne od siebie, a same elementy były by łatwe do jednoznacznego zidentyfikowania.


Czyli tak:
2 rodzaje widoków - content + listing

Dodajemy newsa (wszystkie pola dla niego odpowienie) i wybieramy do niego widok (jeden z dostarczonych przez moduł oznaczonych jako content).

I tu sprawa jest prosta, ale co z listingiem? Dla struktury:
ROOT/news/tytuł_newsa1
ROOT/news/tytuł_newsa2
ROOT/news/tytuł_newsa3
wiadomo, że ROOT/news/ będzie listingiem.

Ale jeśli zechcę dodać na stronie głównej dodatkowo listing? Albo w menu dowolnej innej podstrony?

Chciałbym, żeby z poziomu szablonu można było wywoływać soć takiego:

{module_block module=news order=date limit=5 var=zmienna}

i do zmiennej $zmienna wywalana jest tablica 5 najnowszych newsów (ich dane listingowe). I teraz możemy sobie w szablonie dowolnie to wyświetlić - jako listing, lista punktowana, itp.

Zależy mi jednak, żeby ten blok był generowany dynamicznie, a jednocześnie żeby korzystał ze skryptu, który powołuje do życia aktualny plik szablonu - żeby nie tworzył nowego połączenia z bazą i zapytania tylko po to, żeby pobrać te dane - czy to wykonalne? Chodzi o to, żeby skrypt rozpoznał zanim wywoła szablon to, co będzie w nim potrzebne i przygotuje to. Chyba będzie trzeba dodać pliki konfiguracyjne dla każdego szablonu zawierające listę bloków...
Go to the top of the page
+Quote Post

Posty w temacie
- elnino.pl   CMS - założenia wstępne   12.07.2006, 17:06:32
- - Diwi   Coż, założenia co do wykorzystania technologii są ...   12.07.2006, 18:55:06
- - piczu   @elnino ja zamierzam u siebie zrobic pliki z jezyk...   12.07.2006, 20:22:00
- - Ludvik   CMS to dokładnie to, o czym napisał Diwi. W swoim ...   12.07.2006, 21:39:15
- - piczu   @Ludvik chyba zle mnie zrozumiales, mam zamiar zas...   12.07.2006, 22:23:48
- - Diwi   Polecam zapoznanie się z tym tematem: http://forum...   13.07.2006, 07:44:08
- - elnino.pl   Dzięki za wypowiedzi. @Ludvik: czy rozumiesz wyra...   13.07.2006, 07:56:45
- - Ludvik   Cytat@Ludvik: czy rozumiesz wyraz "przykładow...   13.07.2006, 10:07:38
|- - elnino.pl   Cytat(Ludvik @ 13.07.2006, 11:07 ) Będzie...   13.07.2006, 10:29:40
- - Diwi   Moje przemyślenia były podobne do Twoich. CytatZ...   13.07.2006, 10:43:23
|- - elnino.pl   Cytat(Diwi @ 13.07.2006, 11:43 ) Moje prz...   13.07.2006, 10:52:37
- - Diwi   CytatNiby tak, ale w chili, gdy szablon jest już p...   13.07.2006, 10:57:10
- - Ludvik   Ja bym się skłaniał ku rozwiązaniu problemu jedną ...   13.07.2006, 10:59:18
- - Diwi   CytatTo by strasznie uzależniło model od widoku. A...   13.07.2006, 11:11:21
- - Ludvik   Ja bym obstawał przy zachowaniu standardowego prze...   13.07.2006, 11:18:19
- - elnino.pl   @Ludvik: A co jeśli na jednej stronie chcę umieści...   13.07.2006, 11:22:05
- - piczu   @elnino tworzysz dwa takie modele, a kontroler je ...   13.07.2006, 13:56:42
- - NuLL   Temat: Wirtualne klasy contentu Temat: zarzadzani...   13.07.2006, 21:01:41
- - slash12345   Tylko nie .mo , takie rozszerzenie mają moduły SLA...   13.07.2006, 22:13:40
- - elnino.pl   Wracając do tematu. Zastanawiam się jesz...   21.07.2006, 17:54:10
- - NuLL   Ja jakiegos czasu rozwiazalem to chamsko przez JSa...   21.07.2006, 19:00:11
- - elnino.pl   A własne znaczniki? Czy któryś z dostępnych system...   21.07.2006, 19:03:48
|- - sf   Cytat(elnino.pl @ 21.07.2006, 20:03 ) A w...   21.07.2006, 19:28:03
- - elnino.pl   Chodzi mi o wyłączenie tych bloków z cache'owa...   21.07.2006, 19:42:31


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

 



RSS Aktualny czas: 7.10.2025 - 19:30