Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tworzenie CMS podstrony
Forum PHP.pl > Forum > PHP
mtk3d
Witam!

Zainteresowałem się programowaniem PHP ok. 5-6 lat temu, nauczyłem się programować strukturalnie. Po ok roku, zacząłem pisać swój system newsów na bazie MySQL, niestety nie udało mi się go dokończyć zgodnie z założeniami (padł mi laptop i straciłem dane z dysku), ale główne funkcje działały. Teraz wróciłem do nauki tego języka, jestem na etapie nauki programowania obiektowego. Postanowiłem, że do końca wakacji napiszę swój własny CMS. I z tym wiąże się moje pytanie. W jaki sposób generowane są podstrony w CMS'ach? Wiem że działa to na bazie danych, ale nie bardzo rozumiem w jaki sposób są dodawane na podstronie np artykuły, lub mapa strony. Wymyśliłem sobie, że może to działać, poprzez dodawanie odpowiednich "modułów" na podstawie treści dodatkowej kolumny danej podstrony w bazie danych. W głowie mam mniej więcej plan jakby to działało, ale chciałbym mimo wszystko dowiedzieć się w jaki sposób jest to rozwiązane w popularnych CMS'ach, żeby nie iść zbyt okrężną drogą.

Pozdrawiam i liczę na pomoc.
SmokAnalog
Ściągnij sobie WordPressa i się pobaw smile.gif
mtk3d
W wordpressie da się dodawać tylko czyste strony, a w joomli do podstron można dodawać moduły z tego co pamiętam.
SmokAnalog
W WordPressie możesz zrobić wszystko co chcesz praktycznie, tylko czasem trzeba wtyczkę ściągnąć.

Możesz np. zrobić panel do dodawania pasków bocznych i potem z poziomu edytora strony wybierać co ma na nim być. To tylko pomysł na gorąco - możesz robić co tylko wymyślisz smile.gif
adbacz
Jesli mówisz, że chcesz napisac do końca wakacji system CMS, ale powiedzmy, że rozpoczynasz naukę OOP (długa przerwa) to najlepszym wyjściem jest zaczęcie od projektowania. Najpierw napisz sobie na kartce to, co chcesz by system posiadał. W tym wypadku chcesz by były podstrony, ok. Ale na jakiej zasadzie? Czysty tekst?

W niektórych systemach CMS jest to rozwiązane na zasadzie wtyczki czy komponentu. To ona jest odpowiedzialna za dany typ podstrony. Typów podstron można wymieniać mnogości: artykuł, kategoria, galeria, produkt, kontakt itp. I teraz tak, każdy komponent jest odpowiedzialny za inny typ strony. Tak tak Ty, jesteś w swojej pracy odpowiedzialny za programowanie, nie będziesz zajmował się pisaniem faktur czy sprzątaniem wink.gif

Dalej można to rozwiązać na dwa sposoby:
1. Komponent jest częścią aplikacji samą w sobie. To w nim dzieje się dodawanie, edycja, usuwanie i wszystkie inne opcje danego typu podstrony. Sam system CMS daje tylko szkielet aplikacji dla komponentów, by one mogły działać (Joomla!, WordPress).
2. Komponent daje tylko definicję typu podstrony, czyli to jak ma ona wyglądać, jakie ma mieć pola do wpisania (formularz dodawania artykułu czy produktu), jak ma się zachowywać. A system CMS odpowiedzialny jest w całości za zarzadzanie tymi podstronami w taki sposób, jak zdefiniował to dany komponent.

Oczywiście zdaję sobie sprawdę, że są jeszcze inne możliwości, ale takie tylko przyszły mi do głowy.

Pierwszy jest o wieeeele łatwiejszy i polecam Ci go. Bo z drugim to staniesz w miejscu na samym początku (bez urazy, początki są trudne zawsze, a gdy się wejdzie na zbyt głęboką wode, to się odechciewa dalszej nauki).

Zalety:
- Każdy komponent możesz nstalować, usuwać oddzielnie.
- Każdy komponent jest odpowiedzialny tylko i wyłącznie za swój typ podstrony.
- Każdy komponent jest odpowiedzialny za zarzadzaniej swoimi podstronami, to w nim odbywa się edycja. Możesz ta edycję rozwiązac tak, jak tego w danym miejscu potrzebujesz.

Hmm, chyba nie ma wad wink.gif

System CMS obsługiwac powinien podstawowo tylko routing, czyli włączenie danego komponentu na zasadzie tego, co znajduje się w adresie URL. W tedy to gry wchodzi komponent i to on dalej sprawdza co dokłądnie jest w adresie URL i wyświetla daną podstronę, oczywiście za pomocą metod udostępnianych przez system CMSa.


Troche się rozpisałem, ale mnie wena twórcza złapała, sam jestem projektantem systemu CMS i mógłbym o tym pisać całymi godzinami wink.gif Jeśli masz jakieś pytania to wal śmiało.
sf
Cytat(mtk3d @ 3.07.2014, 15:46:09 ) *
I z tym wiąże się moje pytanie. W jaki sposób generowane są podstrony w CMS'ach? Wiem że działa to na bazie danych, ale nie bardzo rozumiem w jaki sposób są dodawane na podstronie np artykuły, lub mapa strony.


Na Twoim miejscu zainteresowałbym się jakimś frameworkiem, to rozwiązuje duże problemy jak chodzi o architekturę aplikacji.

Cytat
Wymyśliłem sobie, że może to działać, poprzez dodawanie odpowiednich "modułów" na podstawie treści dodatkowej kolumny danej podstrony w bazie danych. W głowie mam mniej więcej plan jakby to działało, ale chciałbym mimo wszystko dowiedzieć się w jaki sposób jest to rozwiązane w popularnych CMS'ach, żeby nie iść zbyt okrężną drogą.


Jak piszesz swój CMS to skupiłbym się na poznaniu co to jest routing, controller i akcja. W warstwie prezentacji view helpery.

Nie bazowałbym na takich rozwiązaniach jak wordpress bo kod jest przestarzały, powinni to już dawno przepisać.
aras785
Cytat(sf @ 4.07.2014, 08:46:06 ) *
Na Twoim miejscu zainteresowałbym się jakimś frameworkiem, to rozwiązuje duże problemy jak chodzi o architekturę aplikacji.



Jak piszesz swój CMS to skupiłbym się na poznaniu co to jest routing, controller i akcja. W warstwie prezentacji view helpery.

Nie bazowałbym na takich rozwiązaniach jak wordpress bo kod jest przestarzały, powinni to już dawno przepisać.


Chłopak nie ma nawet pojęcia jak się robi dynamiczne strony php/mysql, a Ty mu mówisz o takich rzeczach biggrin.gif
SmokAnalog
Cytat(sf @ 4.07.2014, 08:46:06 ) *
Nie bazowałbym na takich rozwiązaniach jak wordpress bo kod jest przestarzały, powinni to już dawno przepisać.

To prawda, kod WordPressa woła o pomstę do nieba, tylko nie mówcie tego fanom WordPressa, bo Was zlinczują. Ja kiedyś dostałem po głowie za to, bo przecież główne hasło WordPressa to "Code is poetry" (LOL) biggrin.gif

Ale chłopak pyta o to jak to wygląda od strony panelu (ideę), a nie o kod. A tu WordPress radzi sobie dobrze.
mtk3d
Cytat(sf @ 4.07.2014, 08:46:06 ) *
Na Twoim miejscu zainteresowałbym się jakimś frameworkiem, to rozwiązuje duże problemy jak chodzi o architekturę aplikacji.

Właśnie biorę się za poznanie codeigniter'a


Cytat(aras785 @ 4.07.2014, 09:26:03 ) *
Chłopak nie ma nawet pojęcia jak się robi dynamiczne strony php/mysql, a Ty mu mówisz o takich rzeczach biggrin.gif

Po czym wnioskujesz że nie potrafię tworzyć dynamicznych stron?


Dziękuję wszystkim za odpowiedzi, jeśli podczas tworzenia będę miał jeszcze jakieś problemy to się zgłoszę.
SmokAnalog
To nie framework rozjaśni Ci ten problem, tylko CMS.
aras785
Cytat(mtk3d @ 4.07.2014, 14:36:50 ) *
Po czym wnioskujesz że nie potrafię tworzyć dynamicznych stron?


Odp:

Cytat(mtk3d @ 3.07.2014, 15:46:09 ) *
I z tym wiąże się moje pytanie. W jaki sposób generowane są podstrony w CMS'ach? Wiem że działa to na bazie danych, ale nie bardzo rozumiem w jaki sposób są dodawane na podstronie np artykuły, lub mapa strony.

mtk3d
Chodziło mi tutaj o to, jak to rozwiązać, aby użytkownik miał możliwość wybierania, czy na danej stronie ma być tylko jego tekst, czy jakiś komponent. Na to być może niezbyt dobrze sformułowane pytanie świetnie odpowiedział adbacz.
aras785
Cytat(mtk3d @ 4.07.2014, 15:14:48 ) *
Chodziło mi tutaj o to, jak to rozwiązać, aby użytkownik miał możliwość wybierania, czy na danej stronie ma być tylko jego tekst, czy jakiś komponent. Na to być może niezbyt dobrze sformułowane pytanie świetnie odpowiedział adbacz.



W takim razie zwracam honor i życzę powodzenia przy projekcie.

Pozdrawiam
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.