PDA

Zobacz pełną wersję : Joomla- zmienne tło - prośba o rozwiazanie problemu.



Sanga
22-08-2008, 17:32
Witam.

Postaram się dokładnie przedstawić problem z jakim się napotkałem.

Robię stronkę pod joomla 1.5.x z rozwijanym menu. Menu jest zrobione w xhtml+css+java (nie wykonane w joomla). Opcje w menu mają za zadanie przejść do danego artykułu oraz jednocześnie zmienić dwa tła - główne oraz w container-ze.

Zmiana tła zachodzi przy pomocy javy:

-zmiana głównego tła:
<script type="text/javascript">
function changeStyle()
{
document.body.style.backgroundColor="#00436d";
document.body.style.backgroundImage="...";
}
***********

-zmiana tła w container:
<script type="text/javascript">
function zmienTlo(elem) {
oDiv = document.getElementById(elem);
oDiv.style.backgroundImage ="...";
}
***********

- odsyłacz:
<a href="#" onclick="changeStyle();zmienTlo('container')">...</a>


Wszystko chodzi pieknie az do momentu gdy umieszczę link do artykułu:

<a href="index.php?option=com_content&view=article&id=45" />...</a>

wtedy to artykuł sie wczytuje, tak jak powinien, ale niestety traca sie tła -
widać ze wczytuja sie tła ktore powinny sie zmienic, lecz za chwile pojawiaja sie tła domyślne (ustawione w css w body).

Czy ktoś wie może jak sprawić aby nie wczytywały się domyślne tła po przejściu do artykułu?


Pozdrawiam i czekam na rozwiazanie.

vego007
22-08-2008, 18:24
Jak na mój gust to problem jest z tym, że następuje przeładowanie strony a po przeładowaniu jest wczytywany CSS. Ale pewny nie jestem. A i java z javascriptem ma tyle wspólnego co jajko z jajnikiem :P

Sanga
22-08-2008, 18:33
Tak też myślałem, ale jak sprawic by po ewentualnym przeładowaniu dopiero wczytywaly się dane tła? albo sprawic by nie przeladowywal strony?

Dzięki za zainteresowanie.

vego007
22-08-2008, 18:54
Bez przeładowania to ajax ale to już troszkę bardziej zaawansowane. Podajesz troche za mało informacji. Np. gdzie masz umieszczony skrypt, czy tło jest wciąż takie same, czemu ma to służyć itd. Musisz to przestawić tak aby każdy czytający mógł to zrozumieć i wyobrazić sobie jak to działa a jakiego działania Ty oczekujesz. Możesz też podać link do stronki, tak dla lepszego zobrazowania. Im więcej informacji dasz od siebie tym szybciej możesz otrzymać odpowiedź. O ile ktoś będzie się na tym znał. Ja ze swojej strony mogę CI jedynie pomóc na zasadzie "spróbuj tego a może się uda" :)

Sanga
22-08-2008, 19:33
;]

Udzielam wiec dodatkowych informacji.
Skrypty są w "head" - działają one w 100%, wszystko dziala az do momentu dodania odnosnika do artykułu.

Tła oba nawiązują do artykułów- dlatego mają się zmieniac.

Niestety nie mogę podać linka do strony. Postaram się wytłumaczyć jak zmieniaja się tła:

drzewko nemu:

-home (tło_1, front_page)
-link1
---pod_link1.1 (tło_2, art_1)
---pod_link1.2 (tło_2, art_2)
-link2
---pod_link2.1 (tło_3, art_3)
---pod_link2.2 (tło_3, art_4)

Start. Stronka się załadowała z artykulem front_page (tło_1).
Po wybraniu np pod_link1.1 stronka ładuje sie (widać że wczytuje tło_2), wczytuje się art_1 ale niestety wtedy nastepuje szybkie przeladowanie i wczytuje się tło_1 (zamiast tło_2).

Tak jest za kazdym razem, artykuly sie wczytuja poprawnie ale zawsze z tło_1.

Gdy usune tlo z css artykuly laduja sie bez tla.

Mam nadzieje ze to troche pomoże w zrozumieniu.

vego007
22-08-2008, 20:15
Najprościej było by zrobić to bez użycia javascript np poprzez dodanie zmiennej do adresu np. set=tlo1
i wtedy w templatce dodać


switch($_GET['set']){
case 'tlo1':
$tlo = link/kolor tła;
break;
case 'tlo2':
$tlo = link kolor drugiego tla
break;
}
a następnie do diva kontenera dodać np: (przyjmując że masz id="contener")


<div id="contener" style="atrybut(czyli color lub obrazek):\"<?php echo $tlo; ?>\";></div>
Nie gwarantuję, że to zadziała ale można spróbować.

Sanga
22-08-2008, 20:32
Mógłbyś mi dokładniej napisać gdzie ten kod wpisać do templaki?

vego007
22-08-2008, 20:40
Gdzieś w treści strony przed divem z kontenerem. Troche poprawiłem bo był mały błędzik "=" zamiast ":" oraz nie było znacznika otwarcia instrukcji swich. I w atrybucie chodzi oczywiście o background-color lub background-image. Oczywiście musisz dać taką wartość zmiennej $tło jaką oczekujesz po prawej stronie ":"

Sanga
22-08-2008, 20:57
Niestety nie dziala. Moze zle wpisuje. Niestety nieznam sie na php.
W pierwszym kodzie jest jeden wiece nawiasow zamykajacych niz otwierajacych.

Wpisalem to nastepujaco:
<switch($_GET['set'])
case 'tlo1':
$tlo = "#000000"
break;
case 'tlo2':
$tlo = "#ffffff"
break;>

a w divie:
<div id="mainContent" style="tlo1=\'<?php echo $tlo; ?>'\" >

czy tak mialo byc?

vego007
22-08-2008, 21:24
niet :D



<?php

switch($_GET['set'])
{
case 'tlo1':
$tlo = "#000000"'
break;
case 'tlo2':
$tlo = "#ffffff";
break;
}
?>
a w divie:
<div id="mainContent" style="background-color:\'<?php echo $tlo; ?>'\;" >

Coś w tym stylu

Sanga
22-08-2008, 21:32
efekt wyszedł dość zatrważający .... przestalo znajdowac mi stronke... O_o

podaje adres stronki, ktora sprawia mi tyle problemow:

link usuniety


w menu artykuly sa przypisane tylko do "home" oraz do linkow w "visiting region"

chwila zabawy z menu ukaze moj problem ;/

vego007
22-08-2008, 21:40
Masz przypisane wszędzie ID artykułu 64 więc wskazuje na artykuł 64. Co zrobiłeś poza tym co Ci pisałem? Wróć do poprzedniego kodu i napisz jak to zrobisz. A i co zrobiłeś że jednak Ci zmienia tło?

Sanga
22-08-2008, 21:50
Ok. zostawilem link do artykulu tylko w ostatniej opcji menu "visiting...". Wybierz najpierw pierwsza opcje zeby zobaczyc jakie powinno byc tło a pozniej ostatnia zeby zobaczyc jaki jest efekt.

vego007
22-08-2008, 21:53
Czyli że mają być domki zamiast wody?

Sanga
22-08-2008, 21:55
Ano;]

vego007
22-08-2008, 21:57
i nie zadziałało to co Ci napisałem? Oczywiście zamiast background-color: musi być background-image: a do zmiennej przypisane url(/sciezka/do/pliku). Sprawdzałem u siebie w templatce i widzi te zmienne więc powinno działać.

vego007
22-08-2008, 22:05
Pobaw się dzisiaj z tym. Przeczytaj jak powinna wyglądać instrukcja switch i jaki jest zapis w css tła. Ja lece spać bo starczy pracy na dzisiaj. Może jutro wymyśli się coś bardziej konstruktywnego choć to jakby zrobił powinno chodzić. Można też zamiast switch($_GET['set') użyć $_GET['id'] jeżeli wszystko będzie po kategorii. W joomli są funkcje do pobierania wartości np getVar to o tym też możesz poczytać. I powodzenia

Sanga
22-08-2008, 22:09
Dzieki bardzo, pobawie sie tym.

Jakby komuś innemu wpadł jakiś pomysł to chetnie skorzystam.

Jak na razie problem nierozwiazany....

Pozdrawiam