[ theH @ 14.02.2007. 18:46 ] @
Evo konkretno: Pravim neki mali sajt i rešio sam da header i footer budu odvojeni fajlovi koje će stranice pozivati sa include ili require. E sada, želeo bih da se naslov menja na svakoj stranici, međutim kako naslov prikazujem ovako
Code:
echo "<title>".$naslov."</title>";

a
Code:
$naslov = "Ovo je naslov";

se nalazi u fajlu same strane, odnosno u redovima niže cela stvar ne radi.

Rešenje koje sam smislio je da mi sama strana počinje sa definisanjem naslova pa onda pozivanjem header-a tako da cela stvar radi ali me zanima neko elegantnije rešenje.
[ VladaSu @ 06.07.2007. 17:51 ] @
Ovo ti nikada nece raditi. Smislli nesto drugo
[ milosijaa @ 06.07.2007. 18:03 ] @
A sto npr. ne bi napravio 2 funkcije

function page_header($naslov){
//sadrzaj hedera

}
ako ti je bas zapelo da includujes... inkluduj u funkciji tj.
//
function page_header($naslov, $datoteka){
include_once($datoteka);

}

ista prica sa footerom

PS. ne mesaj interfejs sa kodom, moja preporuka koristi neki template system.
[ djordje @ 09.07.2007. 16:07 ] @
Kako da koristi template sistem kad ne zna da prvo mora da dodeli vrednost promenljivoj pa da je onda stampa. Za tebe je (bez uvrede) jedan pocetnicki tutorial, a ne template sistem.

A tvoje resenje bi zaista bilo najelegantnije kad bi bilo moguce :)

A zamisli da uradis ovo:

Code:

echo "<title>".$naslov."</title>";
$naslov = "Ovo je naslov";
$naslov = "Ili je mozda ovo naslov";


Sta bi se stampalo? (po tvom)

[Ovu poruku je menjao djordje dana 09.07.2007. u 17:57 GMT+1]
[ Nemanja Avramović @ 10.07.2007. 11:27 ] @
I ja sam radio na nekim već (polu) završenim sajtovima koji su imali odvojen header sa "fiksnim" titlom a onda su od mene tražili da promenim title iz fajla koji se includuje posle (znači title se pošalje browseru pre nego što ja u stranici dobijem novi title). To može da se reši tako što ćemo title promeniti iz JavaScripta ali ako to uradimo na ovaj način onda to nema uticaja na pretraživače, što je kod ovog sajta bilo bitno. Problem sam rešio sa jednim ne baš najsrećnijim rešenjem, ali bar nisam menjao celu koncepciju sajta: U taj fiksni title sam stavio %TITLE% a pre toga uključio output buffering. Posle sam u footeru samo pokupio html iz buffera, replaceovao %TITLE% sa svojim titlom i echo-vao ceo HTML kod.

Ovo rešenje mi se ne sviđa, znači kada krećete da pravite sajt nemojte sa ovakvom idejom da krećete, ali sam bar uštedeo dosta vremena
[ Mister Big Time @ 07.05.2008. 19:39 ] @
Eh i ja imam ovaj problem, isto kao Nemanja Avramović dorada sajta....


index.php

Code:
<?php

$naslov = "sajt.com";

include "inc/header.php"; 

switch ($izbor) {
case "home": include"page/home.php";
     break;
case "news": include"page/news.php";
   break;

// itd itd... ostale stranice

}




include "inc/footer.php"; 

?> 



header:
Code:

<title> <?php echo $naslov; ?> </title>


Dosta toga sam pokusao, ali nikako da ga nateram da se varijabla
$naslov = "naslov neke stranice"; vuce iz page/news.php ili neke druge stranice koja se nalazi u sredini izmedju header-a i footer-a...

Sa tim output buffering-om mi se nesto ne petlja...

Postoji li elegantna solucija ovog problema?

[ djordje @ 07.05.2008. 21:31 ] @
Definitivno si mogao bolje osmisliti sve to. U 99% slucajeva, cim se pojavi potreba za "budzenjem", nesto nije dobro osmisljeno...

Mozes da koristis sesije, ali i to je jako ruzno resenje

[ Mister Big Time @ 07.05.2008. 22:17 ] @
Kome je upucen taj reply?
[ afwt @ 08.05.2008. 07:59 ] @
Zameni sve $naslov sa $GLOBALS['naslov'] i teraj... :)
[ Mister Big Time @ 08.05.2008. 16:02 ] @
I, sta se dobija sa time? Opet ne moze bez da se prvo dodeli vrednost promenljivoj pa tek onda da se stampa...

Kljucni problem je sto je header uvek prvi a sama stranica ide posle u sredini, mi hocemo da se na stranici doda npr:

Code:
<?php
$GLOBALS['naslov'] = "CONTACT";
?> 


pa na drugoj
Code:
<?php
$GLOBALS['naslov'] = "O nama";
?> 


itd itd...


a da title bude u headeru -

Code:
<title> <?php echo $GLOBALS['naslov']; ?> </title>


Pa da se sa svake stranice vuce naslov respektivno...

[ bzero @ 08.05.2008. 16:26 ] @
Najlogicnije bi bilo da se ono sto je potrebno za generisanje strane uradi pre bilo kakvog outputa, npr:

Code:

switch ($izbor) {
    case "home":
        $naslov = "main page";
        $main = "page/home.php";
        break;
    case "news":
        $naslov = "vesti";
        $main = "page/news.php";
        break;

    // itd itd... ostale stranice
}

include "inc/header.php"; 

include ($main);

include "inc/footer.php"; 
[ Mister Big Time @ 08.05.2008. 17:28 ] @
Uf bzero svaka cast :)

To je to... mada ne znam kako to sam vec bio probao (sa stranih foruma je neko ponudio resenje) ali ni meni ni tom pokretacu teme nije uspevalo na taj nacin... sad kontam da je kod mene izgleda ostao header include opet iznad switch-eva, a treba ispod!



[ Nemke_BG @ 09.05.2008. 09:05 ] @
jos dodaj samo promenljivu za meta tagove i eto vec imas neki SEO....