Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rozplanowanie struktury katalogów CMS
Evinek
post
Post #1





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

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


Witam.

Zastanawiam się ciągle jak zrobić strukturę katalogów w CMS. Aktualnie planuje strukturę modułów więc na ten temat chciałbym się czegoś dowiedzieć.

Linki u mnie będą wyglądać w tym stylu:

Kod
/
-/news (moduł: news, akcja: domyślna)
--/news/:id (moduł: news, akcja: show, parametry: id)
-/gallery (moduł: gallery, akcja: domyślna)
--/gallery/:id (moduł: gallery, akcja: show, parametry: id)

/admin
-/admin/news (moduł: news, akcja: domyślna [list])
--/admin/news/add (moduł: news, akcja: add)
--/admin/news/edit/:id (moduł: news, akcja: edit, parametry: id)


Panel admina zamierzam zrobić tak, że gdy znajdzie w pierwszym członie linku słowo admin to wtedy moduł będzie ładowany z folderu admin, a jak nic nie będzie to wtedy z public (lub inna nazwa?).

Muszę więc zrobić jakiś fajny układ folderów. Mój pomysł póki co:
Kod
/module/
-admin/
--default.php
--news/
---default.php
---list.php
---add.php
---edit.php
-public/
--default.php
--news/
---list.php
---show.php


I teraz pytanko, jak wy robicie w własnych CMS'ach takie struktury? Fajnie jak by ktoś dał screeny dosłownie całej struktury. Przeglądałem jakieś CMS'y typu Joomla, Wordpress, Drupal, PHP Fusion i inne oraz skrypty for takie jak IP Board i różne malutkie, ale żadne z wszystkich struktur jakoś mnie nie przekonały. Choć IP Board najbardziej przypadło mi do gusty ze wszystkich innych lecz to nadal nie to.
I w ogóle czy mój pomysł to dobry sposób na tę strukturę?
Proszę o opinie.

Pozdrawiam, Paweł.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
pyro
post
Post #2





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Tobie nie chodzi o samą strukturę CMS'a, ale o to jak rozplanować aplikację. Poczytaj o MVC.

Ta "struktura linków" co podałeś jest w popularnych frameworkach rozwiązana za pomocą routerów, a te "rozmieszczenia" plików, żeby je wywoływać za pomocą kontrolerów.

Przy okazji dowiesz się co to jest front controller, model i widok.

Zajrzyj do manuala Symfony2.

Ten post edytował pyro 7.03.2013, 20:07:15


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
Evinek
post
Post #3





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

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


A Cię zaskoczę.
Znam wzorzec MVC. Przeglądałem frameworki takie jak: Symfony2, Zend2, CI, Kohana oraz SpawnFramework. Z tych wszystkich spodobał mi się tylko jeden, SpawnFramework, który był moim zdaniem łatwy, ale bardzo funkcjonalny.

Może jednak chodzi właśnie o rozplanowanie całej aplikacji. Ogólnie jakoś nie potrafię zrobić byle jak, tylko próbuję zrobić jak najlepiej.
Aktualnie właśnie testuje z kontrolerami i zrobiłem taki kod:

  1. $_module = isset($_GET['module']) ? $_GET['module'] : 'news';
  2. $_action = isset($_GET['action']) ? $_GET['action'] : 'index';
  3.  
  4. $_module = ucfirst(strtolower($_module));
  5. $_action = strtolower($_action).'Action';
  6.  
  7. $appPath = '\\'.$_module.'\\'.$_module;
  8. //echo $appPath;
  9. if(class_exists($appPath)){
  10. $app = new $appPath();
  11. if(method_exists($app, $_action)){
  12. $app->$_action();
  13. }
  14. else{
  15. if(method_exists($app, 'indexAction')){
  16. $app->indexAction();
  17. }
  18. else{
  19. die($_action.' isn\'t exists');
  20. }
  21. }
  22. }


I nie wiem czy przy tym zostać. Dodam, że nie chce używać Frameworka żadnego oraz nie chce tworzyć własnego Frameworka lecz stworzyć CMS, a potem na tym samym szkielecie Forum.
Go to the top of the page
+Quote Post
!*!
post
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  1. $_action
  2. $appPath = '\\'.$_module.'\\'.$_module;


Koszmarne te zapisy.
Drzewo modułów nawet ma sens o ile jest w tym MVC.

Cytat
I nie wiem czy przy tym zostać. Dodam, że nie chce używać Frameworka żadnego oraz nie chce tworzyć własnego Frameworka lecz stworzyć CMS, a potem na tym samym szkielecie Forum.

To źle. W połowie się pogubisz i będziesz pisał od nowa?


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Evinek
post
Post #5





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

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


Chce ogólnie pisać wzorcem MVC, ale nie mam pewności co do klas jako kontrolery.
Zapisy są byle jakie na razie. Gdy będę pewny co do struktury aplikacji to wtedy zacznę pisać wszystko czytelniej.

Moim zdaniem tworzenie skryptów na frameworku to nie nauka PHP.
Wiem, że przyda mi się znajomość frameworków, ale wolałbym pisać sam kod aby się więcej nauczyć. Chce stworzyć skrypt forum (taka tam mała rywalizacja z kolegą), który będę chciał po woli rozwijać aby coraz lepsze techniki stosować. A używając frameworka to będę miał o wiele mniej pracy więc dużo się nie nauczę. Co najwyżej nauczę się używać frameworka.

Co mi możecie ogólnie doradzić? Inni potrafią nawet mieszać HTML z PHP, a ja już nie umiem. Po prostu gdy już coś piszę, to chce jak najlepiej zrobić.
Go to the top of the page
+Quote Post
!*!
post
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Kierujesz wszystko na index.php w nim ustalasz główne ścieżki do silnika i aplikacji. Silnik i bebechy aplikacji wywalasz poza public_html, a w nim samym zostawiasz tylko to co potrzebne czyli pliki css, img, js które są w katalogu /web (lub czymś podobnym)

Co do całego drzewa, tu nie ma się co rozpisywać, bo każda implementacja MVC szczególnie w aplikacjach php jest niemalże identyczna. Stawiałbym na tą z codeignitera i symfoyny2 w porywach cakePHP


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Bezi z Polodnia
post
Post #7





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.01.2013

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


Powiem panom szczerze, wzorzec MVC jest w danym momencie niczym suplement diety, który ostatnio został przedawkowany. Ja osobiście tworzę na marę swoich projektów własne uściślone formy programistyczne niczym MVC, jednak w niektórych projektach nie można nazwać widoku, widokem obok podziału na kontroler, bo często jest tak, że w CMS nowszych produkcji te warstwy się przechodzą i operają jedne o drugie, a podział stoi w innej swerze, np.podziału na zawartość i funkcjonalność statyczną wejściową, wielopoziomową warunkową i np. dynamiczną wynikową. (wszystko wynika z tego że podział na model widok i kontroler jest zacieralny, a ustawianie twardych granic które są polecane jest niczym rozdzieranie płaszczu na 3 części i zszywanie go.)


Struktra katalogów CMS ma być dobudowywana na bierząco, ja przykładowo zaczynam od stworzenia bibliotek do 'budowania' strony. (np. bezpieczne formularze, tworzone wyłączenie funkcją php i/lub jQuery) Umieszczam taki mechanizm w katalogu styles i umieszczam tam pomniejszy system styli (przeważnie swój tak by był kompatybilny z bibliotekami), same zaś szablony daję do katalogu ze zbiorami, z obsługą API tzn. funkcja która dodaje szablon do tablicy szablonów.

Podstawowa moja struktura katalogów to:

  • system
  • libraries
    • MCC (multilevel content controller)
    • OM (services)
      • jquery
      • json
      • transmitter
  • resources
    • languages
    • templates
    • client (client web-API np. FB)
  • styles
    • css-lib
Go to the top of the page
+Quote Post
!*!
post
Post #8





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat
Ja osobiście tworzę na marę swoich projektów własne uściślone formy programistyczne niczym MVC, jednak w niektórych projektach nie można nazwać widoku, widokem obok podziału na kontroler, bo często jest tak, że w CMS nowszych produkcji te warstwy się przechodzą i operają jedne o drugie, a podział stoi w innej swerze, np.podziału na zawartość i funkcjonalność statyczną wejściową, wielopoziomową warunkową i np. dynamiczną wynikową. (wszystko wynika z tego że podział na model widok i kontroler jest zacieralny, a ustawianie twardych granic które są polecane jest niczym rozdzieranie płaszczu na 3 części i zszywanie go.)


Wyjaśnij mi na czym polega zacieranie kontrolera.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post

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: 22.08.2025 - 09:20