Eszköztár
121 Kezdőlap - Webszerkesztés - PHP - Menü
ujdomainek.hu

Menü a weblapon

Frame helyett include

Mintapélda

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.
  1. Probléma: a menü bármilyen módosítása, vagy bővítése értelemszerűen azzal jár, hogy a változtatást nem csupán egy helyen, hanem az összes oldalon el kell végezni. Ez nemcsak kényelmetlen, hanem túl sok hibalehetőséget is magában hordoz.
    Található ilyen elrettentő példa a 2017. évi középszintű közismereti informatika érettségi vizsgafeladatai között is. (A fenti megvalósítás az oktatas.hu oldalról letölthető javítási-értékelési útmutató vonatkozó részének kitömörített változata.)
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.
  1. 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: Egy ilyen oldal megvalósítására mutat példát az alábbi link.
http://infojegyzet.hu/webszerkesztes/php/menu/pelda1/
A megoldás forráskódja a megnyíló oldalról, valamint a következő linkről is elérhető.
Amennyiben a mintapélda teljes változatát szeretné letölteni, ezt az alábbiakban kezdeményezheti:
előző oldal random oldal következő oldal


Eddig 2 hozzászólás van a témához:

2021-11-23 09:41 mzs60 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?

2021-11-23 19:53 Bálint Kedves mzs60,

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.





Új hozzászólás:
E-mail cím:


Erre a címre küldjük ki a hozzászólás jóvá- hagyásához szükséges linket. Az e-mail címet sehol nem tesszük közzé.

Név:


Ez a név fog megjelenni az Ön hozzászólásai mellett.

Mennyi tizennégy + kilenc?
Számjegyekkel írja be!



Ez a robotok beírása elleni védelem miatt szükséges ellenőrzés.


© infojegyzet.hu, 2008. február