Routování a relativní cesty k souborům
- Richard Jedlička
- Člen | 51
Čau, začal jsem aplikovat routování na svůj web a mám drobný problém. Používám JS skript pro hezký zobrazování obrázků (lighbox). Skript ale používá své vlastní obrázky pro tlačítko „next“, „close“, … . Cesty k obrázkům mám relativní „images/…“, no a problém je v tom, že pokud mám teď routováním vytvořenou adresu www.neco.cz/…ty/kategorie a v ní používám ten skript, tak mi to ty obrázky nezobrazí. Co s tím?
Dík Uiii
- Foowie
- Člen | 269
Možností je několik. Změnit adresy na absolutní v JS by měl umět plugin Webloader . Dále je tu možnost tam skrátka tu absolutní adresu dát napevno. Nebo neměnit obrázky v JS, ale trošku si s tím pohrát a měnit jenom styly a odkazy na obrázky by byly v CSS souboru. Nebo na každé stránce můžeš mít malý js scriptík který by ti definoval globální proměnnou s adresou…
Editoval Foowie (26. 5. 2010 10:53)
- Richard Jedlička
- Člen | 51
Aha, takže to znamená, že to pomocí routování udělat nejde, musím to tedy nějak obejít.
- Jan Tvrdík
- Nette guru | 2595
Pokud ten lightbox neprogramoval debil, tak tam bude možnost zadat nějakou basePath.
- VeeTee
- Člen | 6
Ja mam s tymto rovnaky problem – predovsetkym v niektorych css fixoch mam img/neco.jpg → samozrejme pri route /<presenter>/<view>/<id> – sa to interpretuje ako /<presenter>/<view>/<id>/img/neco.jpg , takze to treba nejako opravit.
Nebol by problem prepisat to na /cesta/img/neco.jpg ale linku na developer serveri mam localhost/project/… a production linku projekt.com/ – bud to funguje na jednom alebo druhom…
vie niekto o rieseni, ktore by mi fungovalo aj na developerskom aj produkcnom serveri bez nutnosti to prepisovat? pridavat (odobrerat) „/project“ v linke? (nieco ako magic_root/image.jpg – a nech je akakolvek absolutna cesta sa to presmeruje v pripade developerskeho na /project/ a v pripade produkcneho len na / )
- RadH
- Člen | 23
Taky si můžeš v šabloně definovat JS proměnnou basePath (nejlépe v šabloně @layout).
<script type="text/javascript">
var basePath = {$basePath};
</script>
A pak ji v lightboxu použít.
<script type="text/javascript">
$(document).ready(function() {
$('a.lightbox').lightBox({
imageLoading: basePath + '/images/lightbox/ico-loading.gif',
imageBlank: basePath + '/images/lightbox/blank.gif',
imageBtnClose: basePath + '/images/lightbox/btn-close.gif',
imageBtnPrev: basePath + '/images/lightbox/btn-prev.gif',
imageBtnNext: basePath + '/images/lightbox/btn-next.gif',
txtImage: 'Obrázek',
txtOf: 'z'
});
});
</script>