Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Budowa serwisu oparta na modulach
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
jakal
Mam takie pytanie:
Czy to dobre rozwiazanie oprzec serwis o moduly?

Moze opisze jak to ma wygladac:
Pliki serwisu:
+grafika/ <- grafika do strony
+strona/
-logowanie.php <-modul obslugujacy logowanie urzytkownikow
-jakisdzial.php <-modul wyswietlajacy jakis dzial
-jakisdzial2.php <-inny dzial
-funkcje.php <-zestaw funkcji do obslugi modulow w tym MySQL
itp...
+admin/
-logowanie.php <-modul obslugujacy logowanie admina
-urzytkownicy.php <-modul do zarzadzania urzytkownikami serwisu
-sondy.php <-modul do zarzadzania sondami
-news.php <-modul do dodawania/edytowania/kasowania newsow
-artukuly.php <-modul do dodawania/edytowania/kasowania artykulow
-funkcje.php <-zestaw funkcji do obslugi modulow w tym MySQL
itd.
-index.php <-strona z ktorej beda wywolywane moduly strony
-admin.php <-strona z ktorej beda wywolywane moduly admina
-style.css <-style

Cos w tym stylu oczewiscie bedzie tego wiecej, beda czesci dla urzytkownikow (strona/) dla admina (admin/) i wspolpracownikow (wspolpraca/) wywolywane odpowiednio z index.php, admin.php oraz wspolpraca.php
Obluga modulow:
Moduly beda wywolywane przez linki
np.
1) www.nazwa.pl/index.php?modul=logowanie&akcja=formularz <-wywola sie formularz do logowania.
2) www.nazwa.pl/index.php?modul=logowanie&akcja=sprawdz <- sprawdzanie podanych danych.

Czy to dobry sposob budowania serwisow?
Jakie sa inne sposoby?
Jeszcze nic nie zrobilem to sa tylko plany, wiec jeszcze jedno pytanie :
Da sie wyslac formularz(np. logowania) do strony:
www.nazwa.pl/index.php?modul=logowanie&akcja=sprawdz
zadziala to? jesli nie to jak rozwiazac ten problem?
showstoppa
witam!

dobre pytanie, sam tworze cos takiego, choc zajmuje sie jedynie cms`em, bo o stronie www decyduje klient, a on jak zwykle bardzo grymasi. I tu robie juz pod konkretne zyczenia.

Ale do rzeczy. Moja idea budowania cms opiera sie wlasnie o moduly, uzywam szablonow smarty i biblioteki PEAR.

Modul u mnie sklada sie nie tylko z jednego pliku, ale bym powiedzial calego szeregu elementow, jak odpowiednich szablonow, zestawu tabel MySQL, pliku XML i wpisow do glownego pliku szablonu main.tpl. Wszystko odpowiednio poukladane. Teraz po kolei.

Gdy admin wejdzie na cms zostaja sprawdzone pliki XML (kazdy modul ma 1 plik XML)

[xml:1:068f372332]

<?xml version="1.0"?>
<modul module_name="newsletter" menu_name="menu newsletter">
<sekcja>
<nazwa>napisz i wyslij</nazwa>
<stan>800</stan>
</sekcja>
<sekcja>
<nazwa>archiwum</nazwa>
<stan>810</stan>
</sekcja>
<sekcja>
<nazwa>odbiorcy</nazwa>
<stan>820</stan>
</sekcja>
</modul>

[/xml:1:068f372332]

z nich generowane jest menu, tzn. tworze rozbudowana tablice w zmiennej sesyjnej i ja parsuje. Jesli mam modul newslettera, to linki sa postaci: main.php?module=newsletter&stan=800

Mam zdefiniowane stale, ktore przekladaja sie na konkretne czynnosci.

jesli user kliknie na linka (kazdy odwoluje sie do pliku main.php) w tym pliku mam cos takiego:

[php:1:068f372332]<?php


if (isset($_GET['module']))
{
$modul = $_GET['module'];

if (file_exists (TO_ROOT . 'modules/' . $modul . '/kernel.' . $modul . '.php'))
include (TO_ROOT . 'modules/' . $modul . '/kernel.' . $modul . '.php');
else
echo "nie ma takiego pliku modulu";
}

?>[/php:1:068f372332]

i automatycznie mam dostep do pliku, gdzie obslugiwany jest stan aplikacji.

Jesli jakiejs sekcji nie bedzie w pliku xml, admin nie bedzie mial do niej dostepu.

Zas w szablonie smarty robie cos takiego
Kod
{if $smarty.request.module == "newsletter"}



{if $smarty.request.module == "600"}

{include "templates/newsletter/add_form.tpl}

{if else}





itd.



{/if}

{/if}


W ten sposob mam porozdzielane szablony od odpowiednich sekcji (modulow).

Ciekaw jestem co sadzicie o moim rozwiazaniu, chetnie poczytam Wasze opinie, nie wiem czy to dobrze i jasno wszystko opisalem, ale byc moze cos komus pomoze.

Pozdrawiam
menic
Żadnej Ameryki nie odkryliście tongue.gif Wiekszość CMS'ow jest na takiej zasadzie tworzona. Między innymi mój mSite. Tylko oczywiście to jeszcze bardziej rozbudowałem o baze danych itp. Ale ogólna zasada działania wszedzie jest taka sama :]
matic
Proszę, proszę... Widzę, że nastały już czasy kiedy to każdy szanujący się "webmaster" posiada swój własny CMS rolleyes.gif
Bakus
Własny - b. dobrze znany... winksmiley.jpg

Jeżeli samemu napisze się CMS łatwiej jest go zmienić (przy minimalnym nakładzie pracy) do konkretnych potrzeb...
Jest to niesamowite ułatwienie...
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.