Navigacijos turbinimas
Parašė maxas66 2009 gruodžio 20 12:12:56
Sveiki, nesenai pasidariau, ir noriu pasidalinti patirtimi, kaip padaryti navigaciją, ar dar kur nors galima pritaikyti, kad pvz esate naujienose, jums navigacijoje Naujienos bus kitokios spalvos, ar dar kito. Dėmesio šiame straipsnyje parodysiu kaip dirbti, kai esate forume, kokioje nors kategorijoje ir kt.

Straipsnis susideda iš keturių etapų:
[hr]
[li]1 ETAPAS: CSS PARUOŠIMAS[/li]
[li]2 ETAPAS: PHP KODO PARUOŠIMAS[/li]
[li]3 ETAPAS: KODO IŠVEDIMAS[/li]
[li]4 ETAPAS: APIBENDRINIMAS[/li]
[hr]
Nieko nelaukę ir pradedam ;]
[hr]
[li]1 ETAPAS: CSS PARUOŠIMAS[/li]
[hr]
Geriausia yra dirbti su klasėmis, css faile aprašyti 3 klases, mano atveju:

[code]a.nav
a:hover.nav
.uzvaryta[/code]

Testavimo tikslams, kad būtų geriau suprantama aprašau klases jums

[code]a.nav {
font-family: Tahoma;
color: #fff;
text-decoration: none;
}

a:hover.nav {
font-family: Tahoma;
color: #000;
text-decoration: none;
}

.uzvaryta {
font-family: Tahoma;
color: #000;
text-decoration: none;
}[/code]

Viskas atrodys taip, nuoroda bus balta, užvarius pelę pajuoduos, ir kai bus aktyvi taip pat bus juoda.
[hr]
[li]2 ETAPAS: PHP KODO PARUOŠIMAS[/li]
[hr]
Toliau nesvarbu ar dirbsite theme.php faile ar atskirai includintam, render_header() arba includintos navigacijos faile įterpiam šitokias eilutes

[code]// 1 etapas, forumo nuorodos gavimas
$PHP_SELF = cleanurl($_SERVER['PHP_SELF']);
$nuoroda = explode("/",$PHP_SELF);
// 2 etapas, nuorodos gavimas su ?id=x
$URI = cleanurl($_SERVER['REQUEST_URI']);
$nuoroda1 = explode("/",$URI);
// 3 etapas, gaunam tikslia infusion nuoroda
$infusion = $nuoroda[1]."/".$nuoroda[2]."/".$nuoroda[3];[/code]
[b]ĮSPĖJIMAS![/b] Jeigu jūsų saitas stovi ne public_html aplanke, o poaplankyje, pvz public_html/fusion/ tada:
[code]$infusion = $nuoroda[1]."/".$nuoroda[2]."/".$nuoroda[3];[/code]
keiskite į
[code]$infusion = $nuoroda[2]."/".$nuoroda[3]."/".$nuoroda[4];[/code]

[b]Paaiškinimas:[/b]
1 etapu gauname nuorodą, iš kurios vėliau trauksim ar esame forume
2 etapu gauname nuorodą, su $_GET reikšmėmis, pvz articles.php?cat_id=1 ir t.t.
3 etapu gauname tikslią modifikacijos(įskiepio) nuorodą, pvz infusion/CS_demos_panel/CS_demos.php

Sekantis etapas, gauname tikslią nuorodą

[code]if(FUSION_SELF == '[color=green][b]news.php[/b][/color]') { $class[1] = "[color=blue][b]uzvaryta[/b][/color]"; } else { $class[1] = "[color=red][b]nav[/b][/color]"; }[/code]
[b]Redagavimas:[/b]
[code][color=green][b]news.php[/b][/color] - galite keisti į downloads.php, articles.php, contact.php ir t.t.
[color=blue][b]uzvaryta[/b][/color] - aktyvios nuorodos klasė, kuri yra aprašyta css faile.
[color=red][b]nav[/b][/color] - neaktyvios nuorodos klasė, kuri yra aprašyta css faile.[/code]
Šituo kodu nustatoma ar esate naujienose, jeigu taip $class[1] priskiriama "uzvaryta" reikšmę, kitu atveju paprasta "nav" reikšmė.
[b]Apie $class[]; paaiškinsiu toliau.[/b]

[code]if ($nuoroda[1] == "[color=green][b]forum[/b][/color]") { $class[2] = "[color=blue][b]uzvaryta[/b][/color]"; } else { $class[2] = "[color=red][b]nav[/b][/color]"; }[/code]
[b]Redagavimas:[/b]
[code][color=green][b]forum[/b][/color] - galite keisti į administration, forum, infusions, į direktorijas.
[color=blue][b]uzvaryta[/b][/color] - aktyvios nuorodos klasė, kuri yra aprašyta css faile.
[color=red][b]nav[/b][/color] - neaktyvios nuorodos klasė, kuri yra aprašyta css faile.[/code]
Šituo kodu nustatoma ar esate forume, jeigu taip $class[2] priskiriama "uzvaryta" reikšmę, kitu atveju paprasta "nav" reikšmė.
Galima nustatyti kurioje direktorijoje esate.
[b]ĮSPĖJIMAS![/b] Jeigu jūsų saitas stovi ne public_html aplanke, o poaplankyje, pvz public_html/fusion/ tada [b]$nuoroda[1][/b] pakeiskite į [b]$nuoroda[2][/b] !!!

[code]if ($nuoroda1[1] == "[color=green][b]news_cats.php?cat_id=0[/b][/color]") { $class[3] = "[color=blue][b]uzvaryta[/b][/color]"; } else { $class[3] = "[color=red][b]nav[/b][/color]"; }[/code]
[b]Redagavimas:[/b]
[code][color=green][b]news_cats.php?cat_id=0[/b][/color] - galite keisti į articles.php?cat_id=X, downloads.php?cat_id=X, ir t.t., nurodyti tikslią nuorodą.
[color=blue][b]uzvaryta[/b][/color] - aktyvios nuorodos klasė, kuri yra aprašyta css faile.
[color=red][b]nav[/b][/color] - neaktyvios nuorodos klasė, kuri yra aprašyta css faile.[/code]
Nustatome tikslią nuorodą, iki kategorijos ar straipsnio, kuriam pritaikome sąlyginį sakinį, šiuo atveju įėjus į news_cats.php?cat_id=0 nuorodai bus priskirta uzvaryta klasė.

[code]if ($infusion == "[color=green][b]infusions/CS_demos_panel/CS_demos.php[/b][/color]") { $class[4] = "[color=blue][b]uzvaryta[/b][/color]"; } else { $class[4] = "[color=red][b]nav[/b][/color]"; }[/code]
[b]Redagavimas:[/b]
[code][color=green][b]infusions/CS_demos_panel/CS_demos.php[/b][/color] - galite keisti į infusions/JUSU_INFUSION/JUSU_INFUSION.php
[color=blue][b]uzvaryta[/b][/color] - aktyvios nuorodos klasė, kuri yra aprašyta css faile.
[color=red][b]nav[/b][/color] - neaktyvios nuorodos klasė, kuri yra aprašyta css faile.[/code]
Nustatome tikslią įskiepio nuorodą, jeigu ji sutampa su aktyvia, tai priskiriama uzvaryta klasė.

Kai dar ką nors sugalvosiu papildysiu šią skiltį.

[b]$class[]; paaiškinimas[/b]
Kiekvienai nuorodai priskiriame atskirą $class[] reikšmę, pvz news.php priskiriam $class[1], downloads.php $class[2] ir taip toliau, ir kodo išvedime nesumaišykite $class[] reikšmių, kokias priskyrėte tokias ir išveskite.


[hr]
[li]3 ETAPAS: KODO IŠVEDIMAS[/li]
[hr]

Aprašėme kodą, tai ir išveskime jį į ekraną!

Aš naudosiu includintą failą, kuriame yra išvedami rezultatai, toliau pridėsiu pilną kodą:

[code]<table align='left' cellspacing='0' cellpadding='0' width='350' border='0'>
<tr>
<td>
<span style='padding-right: 30px;'><a href='".BASEDIR."news.php' class='$class[1]'>Pradinis</a></span>
<span style='padding-right: 30px;'><a href='".FORUM."index.php' class='$class[2]'>Forumas</a></span>
<span style='padding-right: 30px;'><a href='".BASEDIR."news_cats.php?cat_id=2' class='$class[3]'>Albumai</a></span>
<a href='".INFUSIONS."CS_demos_panel/CS_demos.php' class='$class[4]'>CS demos</a>
</td>
</tr>
</table>[/code]

[b]Paaiškinimas:[/b]
Jeigu esate naujienose, Pradinis nuorodai priskiraima uzvaryta klasė, kitu atveju nav klasė.
Jeigu esate forume, Forumas nuorodai priskiriama uzvaryta klasė, kitu atveju nav klasė.
Jeigu esate naujienų kategorijoje, Albumai nuorodai priskiriama uzvaryta klasė, kitu atveju nav klasė.
Jeigu esate įskiepyje, CS demos nuorodai priskiriama uzvaryta klasė, kitu atveju nav klasė.

[b]Nesumaišykite $class[]; reikšmių ![/b]

GALUTINIS navigacija.php kodas

[code]<?php

// forumo nuorodos gavimas
$PHP_SELF = cleanurl($_SERVER['PHP_SELF']);
$nuoroda = explode("/",$PHP_SELF);
// nuorodos gavimas su ?id=x
$URI = cleanurl($_SERVER['REQUEST_URI']);
$nuoroda1 = explode("/",$URI);
// gaunam tikslia infusion nuoroda
$infusion = $nuoroda[1]."/".$nuoroda[2]."/".$nuoroda[3];


if(FUSION_SELF == 'news.php') { $class[1] = "uzvaryta"; } else { $class[1] = "nav"; }
if ($nuoroda[1] == "forum") { $class[2] = "uzvaryta"; } else { $class[2] = "nav"; }
if ($nuoroda1[1] == "news_cats.php?cat_id=2") { $class[3] = "uzvaryta"; } else { $class[3] = "nav"; }
if ($infusion == "infusions/CS_demos_panel/CS_demos.php") { $class[4] = "uzvaryta"; } else { $class[4] = "nav"; }
echo "<table align='left' cellspacing='0' cellpadding='0' width='350' border='0'>
<tr>
<td>
<span style='padding-right: 30px;'><a href='".BASEDIR."news.php' class='$class[1]'>Pradinis</a></span>
<span style='padding-right: 30px;'><a href='".FORUM."index.php' class='$class[2]'>Forumas</a></span>
<span style='padding-right: 30px;'><a href='".BASEDIR."news_cats.php?cat_id=2' class='$class[3]'>Albumai</a></span>
<a href='".INFUSIONS."CS_demos_panel/CS_demos.php' class='$class[4]'>CS demos</a>
</td>
</tr>
</table>";

?>[/code]

Includinkit į theme.php render_header dalį ir testuokite laisvai :)

O kam visgi neaišku, ką aš čia dariau, įdėjau paveikslėlį kuriame pavaizduota navigacija, kai esate forume

[img align=left]http://img63.imageshack.us/img63/7786/navigacija.jpg[/img]



Galbūt pasidarė aiškiau :P

[hr]
[li]4 ETAPAS: APIBENDRINIMAS[/li]
[hr]

Šiuo straipsniu kuo aiškiau norėjau aprašyti nuorodų gavimo kodus, daugeliui atvejų, kadangi ne kartą esu matęs, ir pačiam reikėjo tokio dalyko, kaip sukurti navigaciją, kad atvaizduotų ir esant forume ir kitur, tačiau nepavykdavo, manau kils neaiškumų, tai kas neaišku rašykite į komentarus :) +10 jei ne gaila, ačiū, kad skaitėte, labai nesmerkite, tai mano pirmasis straipsnis, linksmų artėjančių švenčių!

[b][color=green]©[url=https://webdnd.com/profile.php?lookup=12405]Eizo0x[/url], 2009-12-20[/color][/b]