Menu wczytywane z pliku zewnętrznego - jak?

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.
Regulus
Nowy
Nowy
Posty: 86
Rejestracja: wt lis 13, 2007 8:40 pm

Menu wczytywane z pliku zewnętrznego - jak?

Post autor: Regulus »

mam taki kod:

Kod: Zaznacz cały

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2"/>

inne <META> tagi

<linkrel="stylesheet" HREF="style.css" type="text/css"/>
<link rel="stylesheet" href="menustyle.css" type="text/css"/>
<title></title>


<!--[if gte IE 5.5]>
<script language="JavaScript" src="ie.js" type="text/JavaScript"></script>
<![endif]-->
</head>
<body>

<div id="menu">
<div id="menupasek">Menu ::.</div>
<!--początek menu -->
<ul id="navmenu">
  <li><a href="#">O nas +</a>
  <ul>
          <li><A HREF="kontakt.html" TARGET="_self">Kontakt</a></li>
		  <li><A HREF="#" TARGET="_self">Głosy Radia</a>
		 <ul>
          <li><A HREF="danusia.html" TARGET="_self">Danusia </a></li>
          <li><A HREF="finezja.html" TARGET="_self">Finezja</a></li>
          <!-- kolejne zakladki menu -->         
</li>
        </ul>
		  </li>
		<li><a href="#">Nasze audycje</a></li>
		<li><a href="#">Ramówka - nasze perełki</a></li>
		<li><a href="#">Historia Radia</a> 
			<ul>
				<li><a href="#">Historia</a></li>
          		<li><a href="#">Byli z nami</a></li>
          		<li><a href="#">To już było</a></li>
        	</ul>
		</li>
		  	<li><a href="#">Zostań prezenterem</a></li>
		  	<li><a href="#">licencje</a></li>
        </ul></li>
		
  
  <li><a href="#">Lista przebojów - Top 10</a></li>
  <li><a href="#">Rozrywka +</a>
    <ul>
      <li><a href="#">Fotogaleria</a></li>
      <li><a href="#">Wasza twórczość</a></li>
	  <li><a href="#">Forum Radia</a></li>
	  <li><a href="#">Księga gosci</a></li>
      <li><a href="#">Humor</a></li>
	  
    </ul>
  </li>
  <li><a href="#">Wydarzenia +</a>
    <ul>
      <li><a href="#">Wydarzenia w Radio</a>
        <!--<ul>
          <li><a href="http://www.free-css.com/">qrayg</a></li>
          <li><a href="http://www.free-css.com/">qArcade</a></li>
          <li><a href="http://www.free-css.com/">qLoM</a></li>
          <li><a href="http://www.free-css.com/">qDT</a></li>
        </ul>  -->
      </li>
      <li><a href="#">Z krju i ze świata</a></li>
	  
    </ul>
  </li>
  <li><a href="#">Patronat</a>
  <li><a href="#">Linki +</a>
    <ul>
      <li><a href="#">Forum Radia na NK</a>
      </li>
      <li><a href="#">Polecamy +</a>
        <ul>
          
          <li><a href="#">Link 1</a></li>
          <li><a href="#">Link 2</a></li>
        </ul>
      </li>
    </ul>
  </li>

  <li><BR/>
<BR/>
</li>
</ul> 
<!-- koniec menu -->
</div>

<div id="dol">
<!-- początek dolnej -->

<div id="srodek-d">
<!-- poczatek lewej dolnej -->
<div id="sr-pasek-d"><!-- pasek prawy dolny -->
Licencje ::.
</div>
<div id="txt-srodek-d">
<!-- tekst okna -->
tekst strony prawy 
<!-- koniec tekstu okna -->

</div>

<!-- koniec prawej dolnej -->
</div>


<!-- koniec dolnej glownej  -->
</div>
<div class="pasek_770a"></DIV>
<div id="stopka">stopka


</div>
</body/>
</html>

jak wczytać menu z zewnętrznego pliku

Kod: Zaznacz cały

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2"/>
inne <META> tagi
<linkrel="stylesheet" HREF="style.css" type="text/css"/>
<link rel="stylesheet" href="style.css" type="text/css"/>
<title></title>


<!--[if gte IE 5.5]>
<script language="JavaScript" src="ie.js" type="text/JavaScript"></script>
<![endif]-->
</head>
<body>
<div id="menu">

TU TRZEBA WCZYTAĆ MENU

<!-- koniec menu -->
</div>

<div id="dol">
<!-- początek dolnej -->

<div id="srodek-d">
<!-- poczatek lewej dolnej -->
<div id="sr-pasek-d"><!-- pasek prawy dolny -->
Licencje ::.
</div>
<div id="txt-srodek-d">
<!-- tekst okna -->
tekst strony prawy 
<!-- koniec tekstu okna -->

</div>

<!-- koniec prawej dolnej -->
</div>


<!-- koniec dolnej glownej  -->
</div>
<div class="pasek_770a"></DIV>
<div id="stopka">stopka


</div>
</body/>
</html>
Chodzi o to, że cały serwis ma 19 podstron i nie chcę wprowadzać ewentualnych zmian menu w 19 dokumentach, tylko w jednym np "menu.html" i wczytywać go do wszystkich podstron.


Podejrzewam że wgrę wchodzi php, więc proszę o maksymalnie łopatologiczną i w miarę Waszej woli wyczerpującą odpowiedź , gdyż php jest mi nieznany. :(

R.
ooo_michal
Przelotem
Przelotem
Posty: 245
Rejestracja: śr kwie 18, 2007 9:06 am

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: ooo_michal »

1. Serwer musi obsługiwać PHP
2. Wszystkie podstrony muszą mieć rozszerzenie .php
3. tam, gdzie chcesz wstawić menu piszesz[php]<?php
include('menu.html');
?>
?>[/php]
Regulus
Nowy
Nowy
Posty: 86
Rejestracja: wt lis 13, 2007 8:40 pm

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: Regulus »

Dzięki, to może mógłbyś mi jeszcze napisać jak z takiego menu wczytać strone do DIV'a

[php]
<div name="menu id="menu">
<?php
include('menu.html');
?>
</div>
<div name="wczytywana strona">
wczytywana_strona.html
</div>
[/php]


1. Jak ma wyglądać link do:
wczytywana_strona.html w pliku menu.html.
2. jakie ma mieć atrybuty <div>, do którego będzie wczytywany plik:
wczytywana_strona.html

Rozwiązanie zamiast <frameset>, lub <iframe>


R.
htmlowiecii
Nowy
Nowy
Posty: 86
Rejestracja: sob lip 19, 2008 11:51 am

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: htmlowiecii »

przeglądarka będzie widziała menu jakby było częścią strony więc jak w pliku z menu będą linki typu [xml]<a href="strona">strona</a> [/xml]to problemu nie będzie
Regulus
Nowy
Nowy
Posty: 86
Rejestracja: wt lis 13, 2007 8:40 pm

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: Regulus »

To to rozumiem ale, to spowoduje odświeżenie całej strony jak sądzę, a ja chciałem by z linku umieszczonym w menu doczytywanym za pomocą

[php]<?php
include('menu.html');
?>[/php]

wczytywać tylko to, co będzie się zmieniać w

[xml]<div name="wczytywana strona"></div>[/xml]

, a reszta strony, by się nie przeładowywała, tak jak jest w przypadku iframe, gdzie jedynie zmieniana jest zawartość ramki pływającej.

Krótko:



[xml]
<div name="1stały element strony">
zawierajacy stałe elementy strony
</div>
<div name="doczytywane menu">
<?php
include('menu.html');
?>
</div>
<div name ="2stały element strony">
inne stałe elementy strony
</div>
<div name="wczytywana_strona">
treści elementy w odrębnych plikach *html, podmieniane po kliknięciu w linki, w doczytywanym menu.html
</div>
<div name ="3stały element strony">
inne stałe elementy strony
</div>
[/xml]

Czyli
1. Jakie powinny być atrybuty linków umieszczonych w doczytywanym menu.html?
2. Jakie atrybuty powinien mieć <div> w który będą wczytywane treści z zewnętrznych dokumentów html?


R.
ooo_michal
Przelotem
Przelotem
Posty: 245
Rejestracja: śr kwie 18, 2007 9:06 am

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: ooo_michal »

No to już tylko ajax. Ale myślę, że nie będzie to najlepsze rozwiązanie ze względu na to, że użytkownik może mieć wyłączony JS.

Według mnie powinieneś na początek zrobić tak:
1. plik index.php

Kod: Zaznacz cały

<div name="menu id="menu"> 
<?php 
include('menu.html'); 
?> 
</div> 
<div name="wczytywana strona"> 
<?php 
include('content.php'); 
?> 
</div>
W powyższym pliku robisz sobie cały layout itp. i w wybranych miejscach dołączasz menu i skrypt ładujący treść.

2. menu.html

Kod: Zaznacz cały

<a href="index.php?page=home">Strona główna</a><br>
<a href="index.php?page=download">Pliki do pobrania</a>
...
3. content.php[php]<?php
$strony['home'] = 'home.html';
$strony['download'] = 'download.html';
$strony['e404'] = '404.html';

if (isset($_POST['page']) && isset($strony[$_POST['page']])) {
include($strony[$_POST['page']]);
} elseif (isset($_GET['page']) && isset($strony[$_GET['page']])) {
include($strony[$_GET['page']]);
} elseif (isset($_GET['page']) || isset($_POST['page'])) {
include($strony['e404']);
} else {
include($strony['home']);
}
?>[/php]

4. Elementy w menu tworzysz analogicznie do tych, które dostałeś powyżej.

Kod: Zaznacz cały

    $strony['home']     ->   adres w linku: "index.php?page=home"
    $strony['download']     ->   adres w linku: "index.php?page=download"
5. 404.html zawiera treść wyświetlaną, jeśli dla ?page=costam nie ma przypisanego pliku html. można też zamiast tego wyświetlać stronę główną. Wtedy content.php wygląda tak: [php]<?php
$strony['home'] = 'home.html';
$strony['download'] = 'download.html';
$strony['e404'] = '404.html';

if (isset($_POST['page']) && isset($strony[$_POST['page']])) {
include($strony[$_POST['page']]);
} elseif (isset($_GET['page']) && isset($strony[$_GET['page']])) {
include($strony[$_GET['page']]);
} else {
include($strony['home']);
}
?>[/php]

Póżniej będzie można dodać do tego AJAX (żeby ładowała się tylko treść) ale najpierw opanuj to. W razie problemów służę pomocą.
Regulus
Nowy
Nowy
Posty: 86
Rejestracja: wt lis 13, 2007 8:40 pm

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: Regulus »

To dla mnie na razie chińszczyzna 8O.

to może prościej było by tak?


[xml]

<div name="menu">
<ul>
<li><a href =" "name=" "></a></li>
<li><a href =" "name=" "></a></li>
</ul>
</div>
<div name="zmieniana_tresc">
doczytywany zewnętrzny html
</div>
<div name="stały element strony">
jakiś stały element strony
</div>
[/xml]


Jak w takim razie powinny wygladać linki?
Jak w takim razie powinny wygladać atrybuty dla:
[xml]<div name="zmieniana_tresc"></div>[/xml]
ooo_michal
Przelotem
Przelotem
Posty: 245
Rejestracja: śr kwie 18, 2007 9:06 am

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: ooo_michal »

1. Z tego co pamiętam to dla DIV nie ma czegoś takiego jak name="". Wcześniej nie zwróciłem na to uwagi. Stosuj samo id=""
2. DIV ze zmienną treścią nie potrzebuje żadnych dodatkowych atrybutów.
3. Wygląd linków:

Kod: Zaznacz cały

<a href="index.php?page=nazwa_strony_ktora_bedzie_sie_zmieniac">Link</a>
A w pliku content.php dla każdego linku z menu wpisujesz linijkę:[php]$strony['ta_sama_nazwa_co_jest_w_menu_w_adresie_zaraz_po_znaku_rownosci'] = 'plik_zawierajacy_tresc_ktora_ma_sie_ladowac.html');[/php]
4. Całą pozostałą resztę zostawiasz bez zmian.


PS. Jakby co to możesz pisać na gg:10295945 - będzie szybciej
Regulus
Nowy
Nowy
Posty: 86
Rejestracja: wt lis 13, 2007 8:40 pm

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: Regulus »

Czyli:

w menu robię tak, w pliku index.HTML piszę: [xml]<a href="index.php?page=strona1">Link</a>
[/xml]- to rozumiem

Potem mam utworzyć plik o nazwie content.php? i wklepać dla każdego linku to, ze zminą nazw stron: [php]
<?php
$strony['strona1']='strona1.html');
?>
[/php]

Co w <div>, gdzie ma być wczytywany strona1.html?
Przepraszam za moją zieloność :oops:


ps. @ooo_michal pisałem na gg, jak mi tam odpiszesz, to tu chyba już nie musisz się powtarzać, no chyba że z pożytkiem dla innych wyjaśnisz, też tu


R.
Regulus
Nowy
Nowy
Posty: 86
Rejestracja: wt lis 13, 2007 8:40 pm

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: Regulus »

Zrobiłem tak:


[xml]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- ... onal.dtd"/>
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2"/>
<META NAME="Keywords" CONTENT=""/>
<META NAME="Description" CONTENT=""/>
<META NAME="Robots" CONTENT="ALL, INDEX"/>
<link rel="stylesheet" type="text/css" href="webstylcss.css"/>
<title>Webstyl</title>
<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="iehacks.css" />
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="ie7hacks.css" />
<![endif]-->
</head>

<body>
<div id="banner">
<div id="menu">
<ul>
<li><A HREF="index.php?page=home.html">home</A></li>
<li><A HREF="index.php?page=strona1" >strona1</A></li>
<li><A HREF="index.php?page=strona2" >strona2</A></li>
<li><A HREF="index.php?page=strona3" >strona3</A></li>
<li><A HREF="index.php?page=strona4">strona4</A></li>
</ul>
</div>
</div>
<div class="listwa"></div>
<div id="glownatlo">

<?php
include('onas.html');
include('content.php');
?>

</div>
</div>
<div class="listwa"></div>
<div id="stopka"></div>
</body>
</html>
[/xml]

plik content.php:[php]
<?php
$strony['onas']='home.html';
$strony['oferta']='strona1.html';
$strony['wzory']='strona2.html';
$strony['cennik']='strona3.html';
$strony['kontakt']='strona4.html';
?>[/php]

Wczytuje się "na dzień dobry" plik home.html, jednak nie doczytują się pozostałe pliki po kliknięciu w odnośniki menu.

Jak to powinno wyglądać, by działało?
Ostatnio zmieniony pn lut 16, 2009 7:05 pm przez Regulus, łącznie zmieniany 1 raz.
ooo_michal
Przelotem
Przelotem
Posty: 245
Rejestracja: śr kwie 18, 2007 9:06 am

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: ooo_michal »

Kurde no przecież w content.php ma jeszcze być [php]<?php
if (isset($_POST['page']) && isset($strony[$_POST['page']])) {
include($strony[$_POST['page']]);
} elseif (isset($_GET['page']) && isset($strony[$_GET['page']])) {
include($strony[$_GET['page']]);
} else {
include($strony['home']);
}
?>[/php]przecież o tym pisałem
Regulus
Nowy
Nowy
Posty: 86
Rejestracja: wt lis 13, 2007 8:40 pm

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: Regulus »

Faktycznie, sorry zakręciłem się ;-) wszystko gra :) dzięki


R.
Regulus
Nowy
Nowy
Posty: 86
Rejestracja: wt lis 13, 2007 8:40 pm

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: Regulus »

Jeszcze jeden drobiazg, wiem że to jest irytujące, jak ktoś o takie proste rzeczy głowę zawraca ale:

zastosowałem to w pliku content.php[php]<?php
$strony['home']='home.html';
$strony['oferta']='strona1.html';
$strony['wzory']='strona2.html';
$strony['cennik']='strona3.html';
$strony['e404'] = 'e404.html';


if (isset($_POST['page']) && isset($strony[$_POST['page']])) {
include($strony[$_POST['page']]);
} elseif (isset($_GET['page']) && isset($strony[$_GET['page']])) {
include($strony[$_GET['page']]);
} elseif (isset($_GET['page']) || isset($_POST['page'])) {
include($strony['home']);
} else {
include($strony['e404']);
}
?>
[/php]


[xml]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- ... onal.dtd"/>
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2"/>
<META NAME="Keywords" CONTENT=""/>
<META NAME="Description" CONTENT=""/>
<META NAME="Robots" CONTENT="ALL, INDEX"/>
<link rel="stylesheet" type="text/css" href="webstylcss.css"/>
<title>title</title>
<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="iehacks.css" />
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="ie7hacks.css" />
<![endif]-->
</head>

<body>
<div id="banner">
<div id="menu">
<ul>
<li><A HREF="index.php?page=home.html">home</A></li>
<li><A HREF="index.php?page=strona1" >strona1</A></li>
<li><A HREF="index.php?page=strona2" >strona2</A></li>
<li><A HREF="index.php?page=strona3" >strona3</A></li>
<li><A HREF="index.php?page=strona4">strona4</A></li>
</ul>
</div>
</div>
<div class="listwa"></div>
<div id="glownatlo">

<?php

include('content.php');
?>

</div>
</div>
<div class="listwa"></div>
<div id="stopka">
<?php

include('stopka.ini');
?>
</div>
</body>
</html>
[/xml]
Ostatnio zmieniony pn lut 16, 2009 7:02 pm przez Regulus, łącznie zmieniany 4 razy.
Regulus
Nowy
Nowy
Posty: 86
Rejestracja: wt lis 13, 2007 8:40 pm

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: Regulus »

To, co tu nie trybi?;-)
Dlaczego wczytuje mi się błędem 404?

a po kliknięciu w kontakt, (którego de' facto celowo niema), wyświetla się "O nas"?

Oczywiście pliki:
home.html (ten ma się wczytać na dzień dobry);
strona1.html;
strona2.html;
strona3.html;
404.html;

są na serwerze i ścieżki sś poprawne do nich poprawne



a gdy robię tak jak jest we wzorze ooo_michal wyrzej:
[php]<?php
$strony['home']='home.html';
$strony['strona1']='strona1.html';
$strony['strona2']='strona2.html';
$strony['strona3']='strona3.html';
$strony['e404'] = 'e404.html';


if (isset($_POST['page']) && isset($strony[$_POST['page']])) {
include($strony[$_POST['page']]);
} elseif (isset($_GET['page']) && isset($strony[$_GET['page']])) {
include($strony[$_GET['page']]);
} elseif (isset($_GET['page']) || isset($_POST['page'])) {
include($strony['e404']);
} else {
include($strony['home']);
}
?>[/php]

to owszem, na "dzień dobry się wczytuje prawidłowo, ale po kliknięciu w "home" wyśwetla mi bład 404


R.
ooo_michal
Przelotem
Przelotem
Posty: 245
Rejestracja: śr kwie 18, 2007 9:06 am

Re: Menu wczytywane z pliku zewnętrznego - jak?

Post autor: ooo_michal »

to owszem, na "dzień dobry się wczytuje prawidłowo, ale po kliknięciu w "home" wyśwetla mi bład 404
Bo w menu masz

Kod: Zaznacz cały

<A HREF="index.php?page=home.html"> home </A>
A powinno być

Kod: Zaznacz cały

<A HREF="index.php?page=home"> home </A>
Popraw i powinno być dobrze.

a po kliknięciu w kontakt, (którego de' facto celowo niema), wyświetla się "O nas"
Ale o co tu ci biega to nie wiem... Nie widze ani żadnego kontaktu w menu ani żadnego O nas w całym kodzie.
ODPOWIEDZ