Avatar billede bumle90 Nybegynder
17. juli 2004 - 20:49 Der er 6 kommentarer og
2 løsninger

Hjælp til opbygning af smart komponentbaseret hjemmeside

Jeg sidder og laver lidt php og vil gerne bygge en side.
Kravet er at siden skal være supervedligeholdelsesvenlig. Dvs. det hele skal opbygges i komponenter dvs. delsider i php filer der har hver deres ansvarsområder.
Der er så en "hovedside" der inkluderer de forskellige dele på den samlede side alt efter hvad brugeren ønsker. Fx. har jeg en menu i venstre side og et logo i toppen. Disse skal hele tiden være der. I bunden er der en content del af siden.Denne skal skifte dynamisk alt efter hvad brugeren vil se. Nogle gange er det kun enkelte dele af contentsiden der skal skiftes ud.
Siden må IKKE bruge frames, men skal opbygges vha. tabeller. Jeg har lidt svært ved at overskue hvordan jeg skal klare denne opgave, men jeg ved det er sådan man lave en god side i dag.
Jeg håbede på et par garvede php udviklere kunne guide mig lidt på vejen. Gi mig et par fif om hvordan det normalt gøres...et par små eksempler og måske nogle gode links.
Hvis i ikke er med på hvad jeg mener uddyber jeg meget gerne.
Håber der er nogle der kan hjælpe.
Mvh. Bumle90
Avatar billede avminarm Juniormester
17. juli 2004 - 21:31 #1
brug funktioner og/eller classes til at styre din kode - så kan du nøjes med at rette i funktionen/klassen ved ændringer og optimering.

Brug evt templates så kan du adskille PHP og HTML - det kan vise sig at være fikst - den her klasse som template er nem at gå til og forstå: http://maiatech.com/varpage.php - så kan man alt efter hvad der ændres skifte template.
Avatar billede bumle90 Nybegynder
17. juli 2004 - 21:47 #2
Jeg bruger allerede smarty som templates og html_quickform for at overskueliggøre mine forms.
Men jeg synes stadig der mangler en form for styring og logisk opbygning af siden. Det er det jeg ikke rigtig ved hvad jeg skal gøre med. Nogle forslag?
Avatar billede razmuz_dk Nybegynder
18. juli 2004 - 00:12 #3
Ved ikke om du kan bruge det til noget, men jeg har brugt følgende metode til at opbygge mine seneste sites/projekter:

Jeg har følgende mapper
-----------------------
root
- inc
- pages
- gfx
-----------------------

Herudover har jeg i min mysql-database disse to tableller:
-----------------------
- menu
- pages
-----------------------

I inc-mappen har jeg min header.php, footer.php (jeg antager du kender brugen af disse) + andre classes/funktioner der på en eller anden måde include's rundt omkring på siden, eksempelvis min "mysql-connector".

I mappen "pages" har jeg alle mine forskellige sider (duh?:)). Det kunne fx være login.php, opret_bruger.php, onlineusers.php osv. Outputtet af disse filer starter ikke med <html><head> osv..., men måske i stedet fx "Her kan du logge ind"... hvorfor kommer jeg til nu.

I root mappen har jeg så index.php. Denne fil SKAL kaldes således:
index.php?menu_id=x&page_id=y

Denne query-streng henviser til mysql-tabellerne:
I mysql-tabellen menu har jeg følgende kolonner:
-----------------------
menu_id
text
page_id <- den side den skal finde frem når man trykker på menupunktet
-----------------------

Og i mysql-tabellen pages har jeg dette:
-----------------------
page_id
menu_id
filename
text
-----------------------


Min index.php ser således ud i meget meget simplificeret udgave:

<?
include("inc/header.php"); // <html><head> og css osv.

print "<table width=\"100%\" height=\"100%\">
<tr>
<td width=200>";

// Her generes menuen udfra et udtræk af mysql-tabellen menu, man kan se hvilket menupunkt man har valgt udfra $_GET[menu_id]
// fx: print "<a href=\"$PHP_SELF?menu_id=$r_menu[menu_id]&page_id=$r_menu[page_id]\">$r_menu[text]</a>";

print "</td>
<td>";
// select filename fra mysql-tabellen pages udfra $_GET[page_id] og så
include("pages/$r_page[filename]");

print "</td>
</tr>
</table>";

include("inc/footer.php");
?>

Mappen gfx indeholder alt grafik der måtte være på siden.

På denne måde kan jeg nemt opdatere hver enkelt "page" ved at redigere de relativt små filer i mappen "pages".


Puha, dette må være mit længste indlæg på eksperten so far.. håber du kan bruge det til noget og at det ikke blev alt for indviklet.
Avatar billede swaxi Nybegynder
18. juli 2004 - 13:47 #4
det var godtnok en ordentlig smørre razmuz_dk :)

jeg vil råde dig til, at kigge på nogle eksisterende cms (content management systemer), og lade dig inspirere/stjæle med arme og ben. du får oftest mest ud af det hvis du vælger et relativt lille system, da kodebasen så er lettere at overskue.
kig eks. på cmsimple.dk
Avatar billede tipsen Nybegynder
18. juli 2004 - 18:13 #5
Jeg har i lang tid bikset med et sådant smart, fleksibelt, komponentbaseret system og bruger bl.a. også smarty og pear-klasserne samtidig med at mig eget system også er 100% OO og baseret på PEAR base-klassen.

Jeg fik en del ud af, at læse disse artikler på devshed:

http://www.devshed.com/c/a/PHP/Building-a-Site-Engine-with-PHP-1/

(der er også 2., 3. og 4. del af ovenstående)

God fornøjelse

Mvh Tommy
Avatar billede bumle90 Nybegynder
19. juli 2004 - 23:17 #6
Okay...har du brugt html_quickform fra pear før også?
Avatar billede tipsen Nybegynder
20. juli 2004 - 02:38 #7
Jeg laver alt formularbehandling vha. QuickForm! Derudover har jeg også haft fingrene i: Config, DB, Date, HTML_Crypt, HTML_Menu, HTML_Table, HTTP_Request, I18N, Log, Mail_IMAP og er som nået af det sidste gået i gang med at kigge nærmere på Authentication og XML klasserne! Jeg kan slet ikke lovprise disse klasser nok - der er en stor mængde ganske fornuftig kode til folk der ikke gider bruge/ikke har tid til gentagne gange at opfinde den dybe tallerken. Det tager lidt tid lige at føle sig "ovenpå" mht. brugen af klasserne men efter de første vanskeligheder, begynder man at spare tid!
Avatar billede bumle90 Nybegynder
24. august 2004 - 18:07 #8
Undskyld den bratte afslutning, men jeg har lidt for mange løse ender...Blir nødt til at lukke for nogle af alle mine spg.
Tak for hjællpen. Hvis der er lagt svar får disse point, eller er jeg nødt til at tage dem selv for at lukke alle de her spg.
Mvh.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester