[php]Zastepstwo dla include lub require

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
butcher
Posty: 9
Rejestracja: pt lip 11, 2003 10:36 pm
Lokalizacja: Czestochowa
Kontakt:

[php]Zastepstwo dla include lub require

Post autor: butcher »

Witam, mam problem...
Moja strona wyglada tak

[php]
<head>
<tilte> $tytul </title>
</head>

<body>
<?php include("menu.php"); ?>

<?php include("strona.php"); ?>

</body>
[/php]

(Pomijajamy bledy skladni), chodzi mi o to że zmienna $tytul jest dopiero w strona.php, a w momencie wyswietlana <title> ta zmienna nie jest znana, jesli sie da include wczesniej to wyswietla calosc jeszcze przed menu... jak to najprosciej rozwiazac? jest jakies polecenie ktore tylko pobiera zmienne z pliku?

Krzasz: Używaj BBCode
ex
Przelotem
Przelotem
Posty: 223
Rejestracja: sob sie 02, 2003 12:25 pm
Kontakt:

Re: [php]Zastepstwo dla include lub require

Post autor: ex »

zrób tak:

# strona.php #

[php]
<?

$tytul="To jest mój tytuł ;-)";

$tresc_strony="Treść strony itp";

?>
[/php]


# index.php #

[php]
<?
include(strona.php);
?>

<title>
<? echo$tytul; ?>
</title>


Moja strona:

<? echo$tresc_strony; ?>

[/php]


Prawdopodonie w pliku strona.php miałeś funkcje echo.

Jak to Ci nie pomogło, to podaj kod pliku strona.php.
smook
Posty: 12
Rejestracja: czw gru 19, 2002 9:14 pm
Lokalizacja: pewnie z domu
Kontakt:

Re: [php]Zastepstwo dla include lub require

Post autor: smook »

dobrym sposobem jest tez rozdzielenie szablonu strony od pozostałych elementów np. w taki sposób.
index.php

Kod: Zaznacz cały

<?
$tytul='strona główna';
$lewa_kolumna=array('reklamy.inc','logowanie.inc','szukaj.inc');
$glowna_kolumna=array('strona_glowna.inc');
// wywolanie modulu do scalania strony
include('buduj_strone.php');
?>
i np. strony kontaktowej
kontakt.php

Kod: Zaznacz cały

<?
$tytul='kontakt z autorem';
$lewa_kolumna=array('reklamy.inc','mapka.inc','telefony.inc');
$glowna_kolumna=array('strona_kontakt.inc');
// wywolanie modulu do scalania strony
include('buduj_strone.php');
?>
i na koniec moduł składający stronę z kawałków
buduj_strone.php

Kod: Zaznacz cały

<html>
<head><title><? echo $tytul; ?></title></head>
<body>
<table><tr>
<td>
<?
// lewa kolumna
foreach($lewa_kolumna as $value)
{
  include($value);
}
?>
</td>
<td>
<?
// glowna kolumna
foreach($glowna_kolumna as $value)
{
  include($value);
}
?>
</td>
<tr><table>
</body>
</html>
W ten sposób mając stały szkielet strony, tworzenie kolejnych podstron polega tylko na utworzeniu małych pliczków o nazwie odpowiadającaj nazwie strony zawierających tablice z elementami które mają się pokaza + zmiennymi takimi jak np. tytuł
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: [php]Zastepstwo dla include lub require

Post autor: Dreen »

dodatkowo zamiast:

[php]
<? echo $tytul; ?>
[/php]

mozna dac:

[php]
<?= $tytul ?>
[/php]

ale jest to zabieg czysto kosmetyczny mimo to poprawia nieco czytelnosc kodu i skraca czas pisania szczegolnie, jesli wstawiamy tak duzo zmiennych.
pozdrawiam.
butcher
Posty: 9
Rejestracja: pt lip 11, 2003 10:36 pm
Lokalizacja: Czestochowa
Kontakt:

Re: [php]Zastepstwo dla include lub require

Post autor: butcher »

[php]
<html>
<head>

<title> {tu powinien byc tytul, ze strony ponizej, ale skrypt nie zna zmiennej $tytul} </title>

</head>

<body>
<? include('menu.php'); ?>

<center>
<table width=790><tr><td>

<? include('strona.php'); ?>


</td></tr></table>
</body>
</html>
[/php]


natomiast tresc pliku strona.php to tylko
[php]

<? $title="To jest tytul"; ?>

bla bla bla {czyli reszta w zwyklym htmlu}
[/php]


hm, moze to po prostu sposob na tworzenie szablonu i bede go musial zmienic...
ODPOWIEDZ