Incearca urmatorul script. Are meniu cu 3 nivele (
Aici la: Poze->Natura) si icon la fiecare link.
- Fisierul admin.php
Cod: Selectaţi tot
<?php
// Datele initiale pt. HEAD ale pagini "index"
$titlu = 'Titlul paginii index';
$desc = 'Descrierea pentru pagina index';
$keys = 'cuvnte, cheie, pagina, index';
//Pt icons in meniu
$icons =[
'social'=>'fas so-image',
'facebook'=>'fas fb-image',
'youtobe'=>'fas yo-image',
'poze'=>'fas po-image',
'natura'=>'fas na-image',
'pasari'=>'fas pa-image',
'animale'=>'fas an-image',
'familie'=>'fas fa-image',
'prieteni'=>'fas pr-image',
'contact'=>'fas co-image'
];
/*** Matricea cu datele despre paginile adaugate in site, care apar in "context" ***/
// Este formata din numele paginilor ca si cheie principala
// Fiecare contine un array cu: Titlul paginii, Descriere si Cuvinte-cheie (pt. sectiunea HEAD)
// Sau pt. submeniuri, cu alte array imbricate, ce contin datele de mai sus (cum e la 'poze')
$pags['social'] =[
'facebook'=>[
'titl'=>'Titlul pt. pagina Poze facebook',
'desc'=>'Descriere pt. pagina Poze facebook',
'keys'=>'cuvinte, cheie, poze, facebook'
],
'youtobe'=>[
'titl'=>'Titlul pt. pagina Poze youtobe',
'desc'=>'Descriere pt. pagina Poze youtobe',
'keys'=>'cuvinte, cheie, poze, youtobe'
]
];
$pags['poze'] =[
'natura'=>[
'pasari'=>[
'titl'=>'Titlul paginii pasari',
'desc'=>'Descrierea paginii pasari',
'keys'=>'cuvinte, cheie, pasari'
],
'animale'=>[
'titl'=>'Titlul paginii animale',
'desc'=>'Descrierea paginii animale',
'keys'=>'cuvinte, cheie, animale'
]
],
'familie'=>[
'titl'=>'Titlul pt. pagina Poze Familie',
'desc'=>'Descriere pt. pagina Poze Familie',
'keys'=>'cuvinte, cheie, poze, familie'
],
'prieteni'=>[
'titl'=>'Titlul pt. pagina Poze Prieteni',
'desc'=>'Descriere pt. pagina Poze Prieteni',
'keys'=>'cuvinte, cheie, poze, prieteni'
]
];
$pags['contact'] =[
'titl'=>'Titlul paginii Contact',
'desc'=>'Descrierea paginii Contact',
'keys'=>'cuvinte, cheie, contact'
];
//Returneaza tagul pt icons
function set_iconm($k){
global $icons;
$ic = isset($icons[$k]) ?'<i class="'. $icons[$k].'"></i>' :'';
return $ic;
}
// Daca doriti sa adaugati alte meniuri sau submeniuri pt. alte pagini de site
// Adaugati in continuare, comform modelului de mai sus
// De asemenea, trebuie sa adaugati in dir. "pagini" fisierul ce contine contextul afisat de acel meniu
?>
- Fisierul index.php
Cod: Selectaţi tot
<?php
// Exemplu creare site cu PHP, de la https://marplo.net/
ini_set('display_errors',1);
error_reporting(E_ALL);
// Include fisierul "admin.php", in care e matricea cu datele fiecarei pagini
include('admin.php');
/*** Crearea variabilei ce contine codul HTML pt. meniu, cu paginile din matrice ***/
$meniu = '<ul><li><a href="index.php" title="Pagina principala"><i class="fas pp-image"></i>Pagina principala</a></li>'; // Initializeaza variabila pt. meniu
// Parcurge matricea cu foreach() si adauga un link in <li> pt. fiecare pagina
// Verifica daca sunt submeniuri si creaza codul HTML pt. ele
foreach($pags as $kei=>$pagini) {
// Daca elementul are cheia 'titl', e considerat cu link direct, fara submeniu
if (isset($pags[$kei]['titl'])) {
// Daca e meniu direct
// Creaza link-ul, codificat urlencode() si prima litera din nume majuscula cu ucfirst()
$link = '<a href="index.php?id='. urlencode($kei).'" title="'. $pagini['titl']. '">'. set_iconm($kei). str_replace('_', ' ', ucfirst($kei)). '</a>';
// Adauga link-ul in meniu
$meniu .= '<li>'. $link. "</li>\r\n";
}
else {
// Altfel e considerat cu submeniu
$meniu .= '<li class="smeniu">'.set_iconm($kei).'<span>'. str_replace('_', ' ', ucfirst($kei)). '</span><ul>';
// Parcurge submeniul
foreach($pagini as $kei2=>$pagini2) {
// Daca elementul are cheia 'titl', e considerat cu link direct, fara submeniu
if (isset($pagini[$kei2]['titl'])) {
// Daca e meniu direct
// Creaza link-ul, codificat urlencode() si prima litera din nume majuscula cu ucfirst()
$link = '<a href="index.php?id='. urlencode($kei). '&sm='. urlencode($kei2).'" title="'. $pagini2['titl']. '">'. set_iconm($kei2). str_replace('_', ' ', ucfirst($kei2)). '</a>';
// Adauga link-ul in meniu
$meniu .= '<li>'. $link. "</li>\r\n";
}
else{
// Altfel e considerat cu submeniu
$meniu .= '<li class="smeniu2">'.set_iconm($kei2).'<span>'. str_replace('_', ' ', ucfirst($kei2)). '</span><ul>';
// Parcurge submeniul
foreach($pagini2 as $kei3=>$pagini3) {
// Creaza link-ul, codificat urlencode() si prima litera din nume majuscula cu ucfirst()
$link = '<a href="index.php?id='. urlencode($kei). '&sm='. urlencode($kei2). '&sm2='. urlencode($kei3).'" title="'. $pagini3['titl']. '">'. set_iconm($kei3). str_replace('_', ' ', ucfirst($kei3)). '</a>';
// Creaza submeniul cu link-ul si numele
$meniu .= '<li>'. $link. "</li>\r\n";
}
$meniu .= '</ul></li>'; // Inchide codul HTML pt. submeniu
}
}
$meniu .= '</ul></li>'; // Inchide codul HTML pt. submeniu
}
}
$meniu .= '</ul>'; // Inchide codul HTML pt. tot meniul
/*** Prelucrarea datelor primite prin GET ***/
// Verifica daca sunt primite date prin GET si daca acestea se afla in matrice
// Creaza variabilele pt. meta-tags si continutul ce va fi inclus
if (isset($_GET['id']) && isset($pags[urldecode(trim($_GET['id']))])) {
$pg = urldecode(trim($_GET['id'])); // Numele paginii, decodificat URL, care va fi inclusa pt. continut
$obj = $pags[$pg]; // Obiectul cu datele despre pagina
// Daca e accesata pagina din submeniu
if (isset($_GET['sm']) && isset($obj[urldecode(trim($_GET['sm']))])) {
$pg = urldecode(trim($_GET['sm'])); // Numele paginii, decodificat URL, care va fi inclusa pt. continut
$obj = $obj[$pg];
}
// Daca e accesata pagina din submeniu-2
if (isset($_GET['sm2']) && isset($obj[urldecode(trim($_GET['sm2']))])) {
$pg = urldecode(trim($_GET['sm2'])); // Numele paginii, decodificat URL, care va fi inclusa pt. continut
$obj = $obj[$pg];
}
// Seteaza variabilele cu datele pt. sectiunea HEAD
$titlu = $obj['titl'];
$desc = $obj['desc'];
$keys = $obj['keys'];
}
// In continuare, codul HTML in care se adauga variabilele necesare generate de PHP
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title><?php echo $titlu; ?></title>
<meta name="description" content="<?php echo $desc; ?>" />
<meta name="keywords" content="<?php echo $keys; ?>" />
<meta name="robots" content="index, follow" />
<link href="grafic.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- Start Top pagina -->
<div id="top">
<h1>Sectiunea din top-ul paginii</h1>
<h2>Va apare in toate paginile site-ului</h2>
</div>
<!-- Start Corp pagina -->
<div id="corp">
<!-- Start Meniu -->
<div id="meniu">
<h4>Meniu</h4>
<?php echo $meniu; ?>
</div>
<!-- Start Context -->
<div id="context">
<?php
// Daca e setata o valoare pt. variabila $pg,
// Variabila devinita cand e accesat un link din meniu
if (isset($pg)) {
// Include fisierul in care e continutul
include('pagini/'.$pg.'.php');
}
else {
// Daca nu e apelat vreun link din meniu
// Afiseaza continutul dorit pt. pagina "index"
// Il puteti afisa cu 'echo' sau sa includeti din alt fisier extern
echo '<h3>Continut initial pentru pagina index</h3>
<h3>Creati cu "echo" tag-urile HTML sau includeti continut din alt fisier extern,<br />
cu include("fisier.php") sau readfile("fisier.html")</h3>';
}
?>
</div>
</div>
<!-- Start Subsol pagina -->
<div id="subsol">
<h4>Continutul din subsolul paginii</h4>
<h4>Va apare in toate paginile site-ului</h4>
</div>
</body>
</html>
- Fisierul grafic.css
Cod: Selectaţi tot
body {
margin:0px auto;
width:1000px;
background-color:#e8e8fe;
text-align:center;
}
/* Grafica pentru sectiunea Top */
#top {
margin:2px auto;
position:relative;
border:1px solid #ceceda;
background-color:#dedeee;
}
/* Grafica pentru sectiunea Corp */
#corp {
position:relative;
margin:2px auto;
width:100%;
border:1px solid #eeeefe;
background-color:#ededfe;
text-align:left;
}
/* Grafica pentru Meniu */
#meniu {
float:left;
position:relative;
width:250px;
margin:2px auto;
border:1px solid #dafedf;
background-color:#deefee;
padding-left:5px;
}
#meniu ul {
margin:0px;
background-color:#cceede;
list-style:none;
padding:0px 0px 1px 5px;
}
#meniu ul li {
display:block;
position:relative;
margin:0px;
width:235px;
border:1px solid silver;
padding:2px 0px 2px 5px;
}
#meniu ul li a {
display:block;
margin:0px;
width:100%;
border:1px solid #daccfe;
}
#meniu ul li a:hover {
background-color:#ebede0;
}
#meniu .smeniu ul, #meniu .smeniu2 ul {
display:none;
position:absolute;
top:0px;
}
#meniu li span {
overflow:hidden;
}
#meniu .smeniu:hover ul:not(.smeniu2 ul), #meniu .smeniu2:hover ul {
display:block;
left:190px;
z-index:12;
}
/* Grafica pentru Context */
#context {
min-height:200px;
margin:0px 1px 1px 260px;
padding:3px 5px;
}
/* Grafica pentru sectiunea Subsol */
#subsol {
clear:both;
position:relative;
margin:2px auto;
border:1px solid #ceced8;
background-color:#ebede0;
z-index:10;
}