Készítsünk menüvezérelt weboldalt - jobbat, mint ami HTML-ben lehetséges!
Mi a baj a HTML-ben készült menüvel?
HTML-ben két lehetőségünk van menüt tartalmazó oldalt készíteni. 1.
Az egyik esetben egy pl. öt aloldalt tartalmazó weblap esetén el kell készíteni
1-1 önálló .html fájlba minden oldal tartalmát, illetőleg mind az öt oldalba
(fájlba) be kell tenni a további oldalakra ugrás lehetőségét, vagyis a menüt is.
2.
A másik lehetőség, hogy frame-t alkalmazunk, vagyis a weblapon belül kialakítunk egy
belső területet, melyben önálló .html fájlt tudunk megjeleníteni. A menüt a külső
területen helyezzük el - így elég azt csak egyszer megvalósítani -, a menüpontok
bármelyikére kattintva viszont a hozzájuk tartozó tartalom a belső területen
jelenik meg.
Probléma: egy ilyen oldalt nagyon nehéz keresőoptimalizáltan megcsinálni,
mert egyrészt nem tartozik minden különböző tartalomhoz különböző oldalcím
(hiszen a külső rész tartalma nem változik a menüpontok között ugrálva),
másrészt a keresőrobotok önálló oldalként indexelhetik be az aloldalakat,
amiket aztán majd a találati listjukban önálló weblapként engednek megtekinteni,
vagyis a látogató a navició (menü) látványa nélkül fog a böngészőjének teljes
ablakában szembesülni a mi belső tartalmunkkal.
Erre a technikai megoldásra láthatunk példát a korábbi
Veszélyes állatok
című HTML mintafeladatunkban.
Miben nyújthat többet a PHP a HTML-nél?
A PHP-ben készült weblapok paraméterezhetőek. Ennek megfelelően megoldható, hogy míg
egy weblap kezdőoldala az index.php legyen, addig a további oldalak ugyanezen index.php
oldal paraméterezésének eredményeként legyenek elérhetőek.
Ilyenkor a háttérben (vagyis a PHP programban) az történik, hogy az index.php kezdőoldal
mindig betölti a weblap állandó elemeit (logó, fejléc, lábléc, menü, stb...), ám az egyes
menüpontokhoz tartozó tényleges tartalom a paraméter értékétől függően kerül kiválasztásra
és megjelenítésre. Erre azért van lehetőség, mert a PHP egy programozási nyelv (tehát
lehetnek benne változók, és elágazások), míg a HTML csak jelölőnyelv (tehát nincsenek
benne sem változók, sem elágazások).
Azért, hogy az index.php-ban szereplő forráskód ne legyen irreálisan hosszú, érdemes
az egyes menüpontokhoz tartozó tartalmakat önálló fájlban megalkotni. Ahhoz pedig, hogy
a paraméter értékétől függő tartalmat önálló forrásfájlból is beszerkeszthessük
a főoldalt jelentő index.php-ba, a PHP nyelv include() függvényét használhatjuk:
2021-11-23 09:41mzs60
Szép tiszta megoldás. Viszont ha ezer-kétezer menüpontot akarok a belodali div-be tenni (konkrétan ezt szeretném egy növényeket rendszerező lapon), a jobb oldali div feltételvizsgálatába is bele kell tenni mind az összes (ezer-kétezer) megcélozott lapra mutató sort. Nem lesz ez gond a php-nek, hogy minden esetben ilyen sok feltételen fusson végig ha esetleg sokáig válogatgatunk a menükből és kattintgatunk? Mennyire terheli ez a szervert és nem lesz vajon lassú a megjelenés?
az ezen az oldalon bemutatott megvalósítást inkább csak a néhány menüpontot tartalmazó weboldalakhoz merném javasolni.
A problémát nem a php, vagy a szerver korlátai jelentik, hanem az emberi tényező: 1000-2000 menüpontot manuálisan kezelni, felhasználóként pedig átlátni meglehetősen irreális elvárás.
Két dolgot biztosan másképp csinálnék:
1. A növényeket adatbázisba rendezném, és onnan jeleníteném meg az adatokat, mint menüpontokat.
2. Csoportosítanám a növényeket, és a csoportosítást felhasználva többszintű menüt alakítanék ki.
Nyilván e két módosítás jelentősen megbonyolítja az itt kialakított menüszerkezetet, de a felhasználói élmény miatt mégis érdemes lehet ebbe az irányba elindulni.