Autor | Zpráva | ||
---|---|---|---|
Libor Jabor Profil * |
#1 · Zasláno: 5. 8. 2011, 21:32:38
Zdravím,
tady jsem našel script na drobečkovou navigaci http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=64114&page=1 /* vytvorime si zkusebni promenne */ $url = "/prvni/druhe/treti/ctvrte/pate/seste/sedme/"; $nazev = array('První', 'Druhé', 'Třetí', 'Čtvrté', 'Páté', 'Šesté', 'Sedmé'); $navigace = "Slovo:\n"; /* odstranime prvni a posledni lomitko a vytvorime dobrecky */ $drobecky = explode("/", substr($url, 1, -1)); /* spocitame vyskyt lomitka a odecteme prvni a posledni lomitko */ $pocet = substr_count($url, '/')-2; /* vytvorime nove pole */ $pole = array(); foreach($drobecky as $klic => $drobek){ /* ulozime $drobek do pole */ $pole[] = $drobek; /* pokud se $klic rovna $pocet, tak vytvorit prosty text, pokud se nerovna, tak odkaz */ if($klic == $pocet){ $navigace .= "<b>$nazev[$klic]</b>\n"; } else { $navigace .= "<a href='http://".$_SERVER['SERVER_NAME']."/".implode("/", $pole)."/'>$nazev[$klic]</a>\n"; $navigace .= ">\n"; } } echo $navigace; Problém je v tom, aby z toho pole $nazev tahal názvy ne podle pořadí ale podle toho textu $url = "/prvni/druhe/treti/ctvrte/pate/seste/sedme/"; $nazev = array('První', 'Druhé', 'Třetí', 'Čtvrté', 'Páté', 'Šesté', 'Sedmé'); asi nějak takto $nazev = array( 'prvni' => 'První', 'druhe' => 'Druhé', 'treti' => 'Třetí', 'ctvrte' => 'Čtvrté', 'pate' => 'Páté', 'seste' => 'Šesté', 'sedme' => 'Sedmé' ); jenže se mi to vůbec nedaří rozchodit. Neporadí nějaký profík? Díky za obětavost ;) |
||
joe Profil |
#2 · Zasláno: 5. 8. 2011, 22:51:38
Takhle to bude asi jednodušší
$urls = array( 'prvni' => 'První', 'druhe' => 'Druhé', 'treti' => 'Třetí', 'ctvrte' => 'Čtvrté', 'pate' => 'Páté', 'seste' => 'Šesté', 'sedme' => 'Sedmé', ); $counter = 0; $count = count($urls) - 1; echo 'Slovo: '; foreach($urls as $url => $title) { if($counter++ !== $count) { echo '<a href="' . $url . '">' . $title . '</a> > '; } else { echo '<b>' . $title . '</b>'; } } |
||
Libor Jabor Profil * |
#3 · Zasláno: 5. 8. 2011, 22:59:06
joe:
Jednodušší to je, jen škoda, že to nefunguje :( Nebo jsem to nepochopil, odkud bere adresu(url)? Proč počítáš $urls? Díky |
||
joe Profil |
#4 · Zasláno: 6. 8. 2011, 00:04:53
Libor Jabor:
„Jednodušší to je, jen škoda, že to nefunguje“ Funguje. „odkud bere adresu(url)?“ Pole $urls je složeno z klíče (URL adresa) a hodnoty, což je titulek odkazu. |
||
Libor Jabor Profil * |
#5 · Zasláno: 6. 8. 2011, 00:12:08
joe:
„Pole $urls je složeno z klíče (URL adresa) a hodnoty, což je titulek odkazu“ Jo? a jak pozná co jsem zadal za adresu do prohlížeče? |
||
motik Profil |
#6 · Zasláno: 6. 8. 2011, 13:45:17 · Upravil/a: motik
Libor Jabor:
a co kdybys něco zkusil vytvořit sám..?! kdyz dáš print_r($_SERVER); Potom si z toho udělej pole $drobecky pomocí explode() viz. např. #1. Vytvoř si to pole názvů $nazev = array('jedna'=>'jednička',....); a potom zkus projít pole $drobecky pomocí foreach(). foreach ($drobecky as $key => $val) { echo $key . " - " . $val . "<br>"; echo $nazev[$val] . "<br>"; } |
||
joe Profil |
#7 · Zasláno: 6. 8. 2011, 14:17:59
Libor Jabor:
„Jo? a jak pozná co jsem zadal za adresu do prohlížeče?“ To pole si musíš naplnit sám, proč by to co společného s adresou? Na adrese example.com/auta může být navigace: Homepage -> Auta Na adrese example.com/nahradni-dily může být navigace: Homepage -> Auta -> náhradní díly |
||
Libor Jabor Profil * |
#8 · Zasláno: 7. 8. 2011, 12:48:30
joe:
„To pole si musíš naplnit sám, proč by to co společného s adresou?“ Ale jaké pole? pořád nevím kde to bude hledat, v jaké proměnné? |
||
Davex Profil |
#9 · Zasláno: 7. 8. 2011, 18:06:54
Libor Jabor:
Tento kód řeší pouze finální výpis drobečků. Nezabývá se získáním adresy a textu popisků. Jinak řečeno se musí pole $url a $nazev naplnit vhodnými hodnotami někde jinde. Zde jsou pouze zkušební hodnoty.
|
||
peta Profil |
#10 · Zasláno: 8. 8. 2011, 13:43:40 · Upravil/a: peta
Libor Jabor: Funkcni reseni by mela byt druha cast tveho dotazu + odpoved joe. S tim, ze tam schazi to parsovani url do pole, radek 1-10 prvni casti dotazu. Ale oni vysledek po explode ulozili do $drobecky, joe to pojmenoval ale $url. Cili staci $url v jeho kodu prepsat na drobecky a pridat tu prvni cast.
/* vytvorime si zkusebni promenne */ $url = "/prvni/druhe/treti/ctvrte/pate/seste/sedme/"; $nazev = array('První', 'Druhé', 'Třetí', 'Čtvrté', 'Páté', 'Šesté', 'Sedmé'); Zkusebni jsou od toho, ze jsou pro priklad. Nikde se nic hledat nebude, kdyz mu nenapises program, aby neco hledal. $navigace = "Slovo:\n"; /* odstranime prvni a posledni lomitko a vytvorime dobrecky */ $drobecky = explode("/", substr($url, 1, -1)); /* spocitame vyskyt lomitka a odecteme prvni a posledni lomitko */ $pocet = substr_count($url, '/')-2; Nevim, ktery placal to tvoril, ale napada me otazka, proc pocita pocet sloupcu z puvodniho stringu $url a pak odecita 2, kdyz pres count($drobecky) by dostal presne vysledek? A pak, proc tam cpe do html kodu nejake bold a neresi to pres css? css ma las-child, first-child, nth-child, pripadne by se tam dali dat class. Misto toho zatezuje cyklus ifem. Z tve reakce clovek nabyva dojmu (ani jsi se neobtezoval pochopit princip prikladu 1 ani prikladu joe, nevim, kde jsi vycaroval to dvourozmerne pole, asi na jinem foru), udelejte mi vsechno zadarmo, ja vas jen zaukoluji a pak schrabnu od zakaznika 100.000. Coz tu lidi nemaji moc radi. |
||
joe Profil |
#11 · Zasláno: 9. 8. 2011, 06:47:07
peta:
Ta podmínka tam zatěžuje asi minimálně. Tučné proto, protože bez CSS to nebude vidět ;) |
||
Časová prodleva: 13 let
|
0