PDA

Zobacz pełną wersję : Problem z src w img



woker20
27-09-2012, 11:42
Witam,

Wiem ze to tajemniczy tytuł ale w skrócie o to właśnie chodzi. Napisałem sobie prosty moduł do wyświetlania galerii zdjęć z wykorzystaniem jquery. Na stronie głównej wszystko jest ok ale jak już przechodzę na inne podstrony to nie wiem dlaczego nagle zmieniają się adresy obrazków czyli właśnie "src" w img.

Adres do danego obrazka podawany i zmieniany jest automatycznie, bo obrazki co wyznaczony czas mają się przeładowywać i wyświetlać ma się inny, w pliku "skrypty.js" tam znajdują się 2 stałe które wskazują na folder w którym znajdują się obrazki:



const MAX = "images/zdjecia/";
const MINI = "images/zdjecia/mini/";

MAX wskazuje na oryginalne zdjęcia a MINI na ich miniaturki.

W tablicy mam zapisane nazwy plików w tych folderach i później w pętli podmieniam je co wyznaczony czas. Jednak to akurat działa więc pominę tą nudną część i przejdę do setna.

Na stronie głównej adres do obrazków (czyli ten w <img src="" />) się zgadza czyli przykładowo: " http://www.test.pl/images/zdjecia/mini/zdjecie1.jpg ". Jednak jak przejdę do jakiejś podstrony przykładowo "blog" w której ustawiony jest alias="blog-menu" to nagle adres zmienia się na: " http://www.test.pl/index.php/blog-menu/images/zdjecia/mini/zdjecie1.jpg " i niestety nie wiem dlaczego. Testowałem już go na świeżo zainstalowanej wersji joomla 2.5 i problem jest dokładnie ten sam. Oto jak uaktualniam i w podobny sposób ładuję zdjęcia do strony w podanym wyżej pliku:



function uaktualnij(){
var img = document.getElementsByTagName("img");
var nowe = losuj();
for(var i=0; i<img.length; i++){
if(img[i].id.match(/^foto/)){
img[i].src = MINI+zdjecia[nowe[i]] + ".jpg";
img[i].alt = zdjecia[nowe[i]];
}
}
}


Jeśli ktoś wie jak rozwiązać ten problem był bym wdzięczny za pomoc. A i jeszcze jedno podany adres jest przykładowy i nie działa w przeglądarce tzn. pod tym adresem nie mam mojej strony bo testuję ją na localhost ale jak przeniosłem to na chwilę na prawdziwy serwer to i tak problem był ten sam. Wiem też ze to nie sprawka żadnego z pluginów bo tą opcję już wykluczyłem. Jedyne co przychodzi mi do głowy ze joomla sama w sobie dodaje przed moim adresem adres do danej strony tzn. podmenu czyli to " http://www.test.pl/index.php/blog-menu/ " ale niestety nie wiem jak się tego pozbyć? :(

deviapps
27-09-2012, 11:59
do ścieżek relatywnych (bez "/" na początku) dodaje się ścieżka bazowa, czyli base href w sekcji HEAD. Aby temu zapobiec możesz np podawać ścieżki bezwzględne zaczynające się od "/"

woker20
27-09-2012, 12:09
To prawda ale jak dodam samo "/" i wówczas z const mam "/images/zdjecia/mini/" to ścieżka również jest zła dopiero jak podam całkowity adres czyli :"http://localhost/testowy/images/zdjecia/mini/" to działa tak jak ja bym chciał a nie da się tego zrobić aby domenę sam sobie dodawał ? czyli to "http://localhost/testowy" ?

deviapps
27-09-2012, 12:25
Kiedyś się bawiłem z tym, ale nie pamiętam jak to rozwiązałem. Chyba doklejając $this->baseurl lub coś z JURI::
Skończyło się na tym, że każdą stronę testową robię jako virtualhost i dodaję wpis w /etc/hosts (win: windows/system32/drivers/etc/hosts)
127.0.0.1 nowastrona.local
i nie używam już localhost/subdirectory

woker20
27-09-2012, 12:45
Tak tylko ze zarówno $this->baseurl i JURI:: to bardziej podchodzi pod PHP a nie javascript. JAVA SCRIPT nie da się używać PHP bynajmniej ja nie wiem jak. Więc jeśli ktoś wie jak to zrobić w JS to niech napisze.

PS. Pewnie chodziło ci o " .JURI::root(). " i <?php echo $this->baseurl ?> czy coś w tym stylu?

deviapps
27-09-2012, 15:21
W head pliku index.php szablonu (lub php modułu jako $document->addScript, czy coś takiego)


<script type="text/javascript">
var baseurl = '<?php echo $this->baseurl;?>';
</script>

Potem doklejasz baseurl do ścieżek plików.

woker20
28-09-2012, 08:39
No i niestety ale to nie działa. Próbowałem. I albo nie było żadnych zmian albo wyświetlała się biała strona.