Neodan wrote:O tai ko nenori meniu laikyti masyve tarp php failo? Nei ko parsinti nereiks ir n-sub meniu galesi tureti. Kam tu cia dabar bandai daryti kaip tik imanoma sudetingiau? :)
Ačiū Neodan už atsakymą. :)
mhm, na nežinau, kažkaip viskas labai sudėtingai ten ir taip pas manęs. :)
Viskas meniu yra padarytas su nested sets. Net neįsivaizduoju kaip reikia iš tikro padaryti, kad galėtum vaikščioti per tą patį meniu ir atsidarinėtų tie sub'ai paspaudus ant kažkokio punkto.. Visą dieną galvoą "laužau", bet matau, kad be pagalbos jau čia jau nebepajudėsiu daugiau iš vietos todėl nuspręndžiau pabandyti pagalbos sulaukti čia. :)
Tai dabar pagalvojau su nested sets galėčiau išgauti visą sitemap'ą (struktūra tokia pati, kaip ir viršuje), sukišti į xml'ą ir viską parsinti su php. Pliusai būtų tokie, kad nereikėtų db užkrauti pastoviai spaudžiant ant kažkurios nuorodos, o principas ar ne toks pat būtų imti iš xml'o ar iš masyvo?
šiuo atveju aš nesiekiu padaryti, kad veiktų siekiu padaryti, kad veiktų ir būtų kuo geriau. :)
Na, bet tiek to turbūt esate teisus, galbūt reiktų pradėti nuo paprasčiau, kad pagaučiau pačią esmę, o vėliau mėginti sudėtingiau padaryti.. :)
Na, gerai, tarkime turiu masyvą:
Array ( [0] => SiteMap
[1] => 1 PirmasMeniu
[2] => 2 2 Subas
[3] => 3 3 3 Sub'o sub'as
[4] => 2 2 Subas
[5] => 3 3 3 Sub'o sub'as
[6] => 1 Antras Meniu
[7] => 2 2 Sub'as
[8] => 2 2 Sub'as
[9] => 1 Trečias Meniu
[10] => 2 2 Sub'as
[11] => 2 2 Sub'as
[12] => 1 Ketvirtas Meniu
[13] => 2 2 Sub'as
[14] => 2 2 Sub'as
[15] => 1 Penktas Meniu
[16] => 1 šeštas Meniu
)
čia visur kur tie skaičiukai yra tai čia būtų gylis meniu. :)
Vat šičia ištraukiu pagrindinius meniu punktus kur gylis == 1:
function kat_test() {
$result = mysql_query('SELECT kaire, desne FROM kategorijos');
$row = mysql_fetch_array($result);
$right = array();
$masyvas = array();
$result = mysql_query('SELECT pavadinimas, seo, kaire, desne FROM kategorijos '.
'WHERE kaire BETWEEN '.$row['kaire'].' AND '.
$row['desne'].' ORDER BY kaire ASC;');
while ($row = mysql_fetch_array($result)) {
if (count($right)>0) {
while ($right[count($right)-1]<$row['desne']) {
array_pop($right);
}
}
//meniu kur parent === 1
if($this->gylis(count($right)) === 1) {
$masyvas[] = str_repeat('',count($right)).$row['seo'];
}
$right[] = $row['desne'];
}
return $masyvas;
}
Rezultatas:
PirmasMeniu
Antras Meniu
Trečias Meniu
Ketvirtas Meniu
Penktas Meniu
šeštas Meniu
Toliau jau "stop", nebeišmastau ką toliau daryti, kad galėtum vaikščioti per sub'us jeigu tokių yra..
Teoriškai reikėtų imti aktyvų punktą (ant kurio paspausta) ir vėl kažkaip traukti iš db duomenis, tačiau kaip juos įterpti į bendrą meniu?