Talán a cikk neve egy kicsit érdekesen hangzik, de aki belesett az alábbi problémába, az egyből érteni fogja miért is adtam ezt a nevet.
Talán sokan olvastátok már Harder php switch get I. című írását. Számomra alapmű, mivel az oldalaim nagy részének fejlesztését ezen script segítségével indítom. Azonban nem megfelelő körültekintéssel érhetnek olyan váratlan meglepetések, amik megkeseríthetik a fejlesztést.
Adott egy csodaszép HTML template, ami olyan js scripteket futtat, amire nagyon nagy szükséged van. A probléma ott kezdődik, hogy minden egyes HTML fájl külön JS fájlokat kíván megnyitni. Az főoldal például egy diagramot és egy vektoros térképet, a másik oldal egy adattáblát…
Aki már alakított át HTML sablonokat PHP oldallá és használta a fent megnevezett Switch get eljárást, az tudhatja, hogy az index oldal tartalmi részén fog betölteni minden megnyitott oldal (már ha az útmutató szerint csinálunk mindent).
A probléma itt kezdődik. A scriptek minden esetben a forráskód alján jelennek meg. Ha viszont a főoldalról megnyitok egy adattáblával ellátott oldalt, akkor már a js-ek nem úgy fognak működni ahogy kellene, mivel a switch get miatt a megnyitott oldal scriptje lehet hogy nem a megfelelő helyen fog a forrásban megjelenni.
A megoldás nagyon egyszerű, mindig az adott oldal scriptjeit töltsük csak be, a többivel ne foglalkozzunk.
Első lépés. Nézd végig az összes oldalt, hogy melyik milyen scripteket használ. Azokat, amik minden oldalon megjelennek tedd bele egy corejs.php-fájlba.
Ezek után az index.php legaljára szúrd be az alábbi kódot:
<?php include “corejs.php”; ?> |
A kód beszúrása után, az összes oldalról kitörölheted az összegyűjtött scripteket.
De mivel minden oldalon más és más script jelenik meg, ezért oldalakra lebontva kell megjeleníteni mindet, úgy hogy az más oldalakat ne zavarjon.
<?php include “corejs.php”; // Fő js, ami minden oldalhoz kelleni fog if(empty($_GET["id"])) include “fooldaljs.php”; if($_GET["id"] === “lista”) include “listajs.php”; ?> |
A fenti kód a következőket csinálja:
Megnyitja a corejs.php fájlt, ami tartalmazza mindazt az js scriptet, amit használ minden oldal.
A következő sorban egy feltételhez kötöm a megnyitást. Ha a GET[id] értéke üres, akkor megnyitja azokat a scripteket, amik csak a főoldalra vonatkoznak.
A harmadik sorban szintén egy feltételhez kötöm a megjelenést. Ha a GET[id] értéke „lista”, akkor megnyitja a listajs.php fájlt.
A sort lehet folytatni a végtelenségig. Ugyanezt a műveletet használom a különböző oldalakon megjelenő, különböző CSS fájloknál is.
A fent leírtak szorosan kapcsolódnak a php switch get I. nevű leíráshoz!!