W php bedzie to wygladalo tak:
Struktura pliku z danymi do menu
Cytat
nazwa menu|adres strony|ramka docelowan
(...)
n - oznacza, ze jest to koniec lini (nie podawac tego w pliku
)
kazdy plik to nasza osobna sekcja (dalej bedzie wiadomo o co mi chodzi)
W naszym przykladzie chcemy uzyzkac np takie menu:
Cytat
. ..:: ::: Glowne ::: ::.. .
- Strona glowna -
- Newsy -
. ..:: ::: Inne ::: ::.. .
- Linki -
Glown i Inne sa to owe sekcje
Tak wiec nasze bazy danych menu bedza wygladac tak:
s1.dat (dowolna nazwa) - dla sekcji Glowne
Cytat
Strona glowna|default.html|_self
Linki|links.html|_blank
s2.dat - dla sekcji Inne
Cytat
Newsy|news.html|_self
Kolejnosc wpisow w plikach odpowiednich lini decyduje o kolejnosci wyyswietlania listy menu.
Teraz plik menu.tpt wzorca, ktory bedzie okreslal nam jak dana linia z nazwa menu ma wygladac
Cytat
- <a href="%link%" taget="%target%">%name%</a> -
%link%, &target&, %name% - zmienne te (koniecznie w takiej formie) beda zamieniane na dane z pliku (bazy danych w pliku). Nie trzeba ich umieszczac wszystkich. Wzasadzie wogole mozna ich nie umieszczac
Plik menu.inc.php, ktory bedzie nam wyswietlal menu (nasz skrypt menu):
[php:1:8c68d03c72]<?php
// by Seth (2003)
function print_menu( $tpt_path, $db_path ){
// Otwieramy wzorzec dla lini w menu
$rf = @fopen( $tpt_path, 'r' );
if( $rf ){
$content = fread ( $rf, filesize ( $tpt_path ) );
fclose( $rf );
}else
return -1; // Jezli plik nie istnieje zwraca -1
$db_menu = file( $db_path ); // Pobieranie danych
if( isset( $db_menu ) ){
$result = '';
// Przetwarzanie bazy do postaci posortowanego menu
foreach ( $db_menu as $line ){
$sets = explode( "|", $line );
$search = array( "'%name%'", "'%link%'", "'%target%'" );
$replace = array ( $sets[0], $sets[1], $sets[2] );
$result .= preg_replace ($search, $replace, $content).'<br>';
}
return $result; // Zwracanie menu
}else
return -1; // Jezli plik nie istnieje zwraca -1
}
?>[/php:1:8c68d03c72]
A teraz jak to wszystko polaczyc aby dzialalo:
w pliku index.php umieszczamy:
[php:1:8c68d03c72]
<html><body>
<?php
require_once('menu.inc.php');
echo '. .. .: :: Glowne :: :. .. <br>';
echo ( ($menu = print_menu( 'menu.tpt', 's1.dat' )) != -1 ? $menu : '<br>blad ladowania menu<br>' );
echo '. .. .: :: Inne :: :. .. .<br>';
echo ( ($menu = print_menu( 'menu.tpt', 's2.dat' )) != -1 ? $menu : '<br>blad ladowania menu<br>' );
?>
</body></html>[/php:1:8c68d03c72]
I to na tyle. Jezeli byly by jakies problemy pisz na forum bo nie testowalem tego i pisze to od reki.