rövid webcímek: több mappa mélységben, illetve 404-es header
Sziasztok!
Rövid webcímeket szeretnék használni. Addig el is jutottam, hogy rewrite-al átadom az index.php-mnak a $REDIRECT_URL-t. De a következő problémákba ütköztem:
1.) Több mappa mélységben eltűnnek a stíluslapjaim, és a képeim is. Pl.: localhost/forum ez még oké, de a localhost/forum/tema/2007 már nem. (Ráadásul tudom is, hogy mi a hiba: forum/tema/2007 mappába nincsenek meg a stíluslap fájlok, se a képek.) Ezt a hibát, hogy lehetne kikerülni?
2./a) A másik probléma meg a következő. Korábban a programjaim folyamatosan kiírták az adatokat a böngésző felé. Pl.: Fejléc, és a menü kiírása... munkamenet folyamat kezelése, megfelelő modul kiválasztása... modul nevének, címének kiírása... a modul tartalmának kikeresése az adatbázisból... a feldolgozott tartalom kiírása
Most a rövid webcímeknél ki kell adnom a header("HTTP/1.0 404 Not Found");-t. Emiatt vagy kétszer kell mindent elvégezni (bárminemű kiírás előtt is), vagy valamilyen ideiglenes tárba kéne kiírnom minden egyes oldalbetöltést, és csak ha kész akkor kiírni az egészet. Ez hogy oldható meg? Nem terheli nagyon a szervert?
2/b.) Emellett a címeket (<TITLE>) is szeretném egyedivé tenni. Megint majdnem ott vagyok, mint előbb: Fejléc, és a menü kiírása... munkamenet folyamat kezelése, megfelelő modul kiválasztása... modul nevének, címének kiírása... Már rég kiírtam a TITLE tag-et, és hogy fogom belevarázsolni még ezt a címet is? (javascript nélkül! ;-) ) a modul tartalmának kikeresése az adatbázisból... a feldolgozott tartalom kiírása
Erre van egy ötletem (de szerintem sokkal szebben is meg lehetne oldani). A menü kiírását egy függvénybe teszem, és csak akkor hívom meg ha megvan a cím. Erre kiírja a fejlécet, és a menüt. Az egyik bemeneti paraméter, pedig a TITLE tag-ek közé beillesztendő szöveg lenne... Esetleg arra is gondoltam, hogy az "a" ponttal is variálhatnám, de nem, mert a munkamenet használatát nem tudom ennyire későre hagyni. Az meg már hagy nyomot maga után...
Előre köszönöm a segítséget.
■ Rövid webcímeket szeretnék használni. Addig el is jutottam, hogy rewrite-al átadom az index.php-mnak a $REDIRECT_URL-t. De a következő problémákba ütköztem:
1.) Több mappa mélységben eltűnnek a stíluslapjaim, és a képeim is. Pl.: localhost/forum ez még oké, de a localhost/forum/tema/2007 már nem. (Ráadásul tudom is, hogy mi a hiba: forum/tema/2007 mappába nincsenek meg a stíluslap fájlok, se a képek.) Ezt a hibát, hogy lehetne kikerülni?
2./a) A másik probléma meg a következő. Korábban a programjaim folyamatosan kiírták az adatokat a böngésző felé. Pl.: Fejléc, és a menü kiírása... munkamenet folyamat kezelése, megfelelő modul kiválasztása... modul nevének, címének kiírása... a modul tartalmának kikeresése az adatbázisból... a feldolgozott tartalom kiírása
Most a rövid webcímeknél ki kell adnom a header("HTTP/1.0 404 Not Found");-t. Emiatt vagy kétszer kell mindent elvégezni (bárminemű kiírás előtt is), vagy valamilyen ideiglenes tárba kéne kiírnom minden egyes oldalbetöltést, és csak ha kész akkor kiírni az egészet. Ez hogy oldható meg? Nem terheli nagyon a szervert?
2/b.) Emellett a címeket (<TITLE>) is szeretném egyedivé tenni. Megint majdnem ott vagyok, mint előbb: Fejléc, és a menü kiírása... munkamenet folyamat kezelése, megfelelő modul kiválasztása... modul nevének, címének kiírása... Már rég kiírtam a TITLE tag-et, és hogy fogom belevarázsolni még ezt a címet is? (javascript nélkül! ;-) ) a modul tartalmának kikeresése az adatbázisból... a feldolgozott tartalom kiírása
Erre van egy ötletem (de szerintem sokkal szebben is meg lehetne oldani). A menü kiírását egy függvénybe teszem, és csak akkor hívom meg ha megvan a cím. Erre kiírja a fejlécet, és a menüt. Az egyik bemeneti paraméter, pedig a TITLE tag-ek közé beillesztendő szöveg lenne... Esetleg arra is gondoltam, hogy az "a" ponttal is variálhatnám, de nem, mert a munkamenet használatát nem tudom ennyire későre hagyni. Az meg már hagy nyomot maga után...
Előre köszönöm a segítséget.
rövid válaszok
2./a ezt nem teljesen értem, miért is kéne kiadnod a 404-es fejlécet? persze nem létező oldalnál ki kell adni, de mit kell kétszer csinálni?
2./b elkezdhetnél valamilyen sablon-rendszert használni (pl: smarty)
2./a-ra kíváncsi vagyok, többit remélem érted, ha nem, kérdezz bátran!
1.) és 2/b.)
Lehet, hogy a forráskódomban van valami hiba...
2/b.) Sablonrendszer, ez jó ötlet.
Már gondoltam a smarty-ra, de nem akarom nagyon túl bonyolítani a dolgot. Tudom ez kényes téma, olyan, mint a webmesterek "böngésző vallása"... :-D
Az a megoldás, amit korábban írtam, mennyire járható út? Esetleg annyi változtatással, hogy csinálok egy tömböt, amit átadok a beágyazott fájlnak, és az szép sorjában feltölti a lyukakat a fájlban (amit előzőleg bejelöltem)...
Talán már ez is hasonlít egy kezdetleges sablon rendszerre.
Amúgy azt hittem, hogy erre valamilyen kimenet szabályzó függvényt fogtok javasolni, ami megállítja a kiíratást. Bár, a sablonrendszer tényleg jobb ilyen szempontból.
Sablonrendszer = PHP
Talán érdemes lehet egy pillantást vetned erre a cikkre:
http://www.sitepoint.com/article/beyond-template-engine
sitebuilder
Üdv,
Felhő
Most már megkérdezem :)
De ez tényleg valós helyzet?
Nem jobb megbízható sitebuilderekkel dolgozni, akik nem az ellenség beépített szabotőrei?
Nem jobb egy sitebuildernek megtanítani a PHP nyelvnek az általa használandó minimális részét, amely tudásból később továbbfejlesztheti magát, mint egy speciális szintaxist bemagoltatni vele, amivel önmagában nem megy semmire?
Tényleg olyan gyakori, hogy a sitebuilder (főleg az újonc) éles website templatejeit hegesztgeti, ahol valóban kárt tud okozni?
PHP és sitebuilder
Még egy olyan szempont is lehet, hogy ha PHP a template, akkor valszeg könnyebben előfordulhat, hogy valaki nem tartja magát a megjelenítési és az üzelti logika szétválasztásához.
Üdv,
Felhő
smarty féle borzalmak
Az eredmény:
Sokkal tisztább, áttekinthetőbb kód.
A logikát és a megjelenést el lehet választani egymástól.
Valóban biztonságosabb, arról nem is beszélve, hogy a programozó dolgozhat a logikán, addig a builder formázhat
Az igazat megvallva, mióta smarty-t használok, a hideg ráz a printekkel és kilométer hosszú stringekkel tűzdelt kódoktól.
Ha már dolgoztál nagyobb lélegzető projekteken, amik bonyolultabb felépítéssel, igényesebb builddel rendelkeznek, megtanulod értékelni a template rendszerek előnyeit.
base, ob_* fv-ek
ha beírod a böngészőbe, hogy http://localhost/kekpir.css, akkor látod magát a css-t? ha úgy igen, akkor a firefox live http headers kiterjesztésével meg tudod nézni, hogy milyen kérések mennek a szerver felé, ott látni fogod, hogy a böngésző hogyan kéri le a css-t és a képeket. ha úgy sem látod, akkor nálad (localhost) van valami hiba (esetleg könyvtárban vannak a css-ek és képek).
a smarty nem olyan bonyolult, persze más sablonrendszert is használhatsz (sajátot is), a lényeg az, hogy a sablonok használatával megkönnyíted az életed.
az ideiglenes tárra ( ) gondolsz? mert arra használhatod az ob_* függvényeket is, aztán dom függvényekkel vagy reguláris kifejezésekkel meg tudod változtatni azt, amit már kiírtál.
DOM vs RegExp
Egyszer kísérletképpen írtam egy egyszerű template-rendszert PHP 5-tel, amit elkészítettem DOM-os és RegExpes változatban is.
Speciális XML tageket ismert fel, és meghívta a tag neve szerinti függvényt, átadva az attribútumokat mint paramétereket, majd az eredményt a tag helyére rakta.
A reguláris kifejezéses változat majdnem kétszer gyorsabb volt a DOM-osnál.
a 2a-t én se értem
Én a base tagről átálltam a relatív-abszolút (/valami/valami.jpg) hivatkozásokra, ez viszont azzal jár, hogy domain rootban kell fejleszteni. Ez általában megoldható (virtual hostokkal és subdomainekkel).
2/a. példával
A másik címem a http://localhost/forum/tema/802425, ami nem létezik. Tehát indul a lap készítése, és itt probléma: utólag nem tudom a 200-as headert 404-re változtatni.
Ezért gondoltam, hogy első lépésben még a session_start() előtt is csinálnék egy lekérdezést a táblából, hogy van-e ilyen téma. Ha van, akkor elkezdődik a lap "legyártása". Ha nincs, akkor:
Ágyúval verébre
link
Megoldások
1.) Több próbálkozás után rájöttem, mi okozza a hibát: csak egy perjel hiányzott... Leírom, ha esetleg másnál is előjön.
Jó:
2/b.) Saját sablonrendszer használata, amit javasoltatok.