PDA

Zobacz pełną wersję : Joom!Fish -Jak podmieniać banner przy zmianie jezyka?



hal9000
04-01-2007, 11:13
Witam,

Używam Joomla! 1.0.11 Stable oraz komponentu Joom!Fish 1.7. Chcę aby podczas zmiany języka na stronie był podmieniany również banner główny (na anglojęzyczny).

Proszę o pomoc.

Pozdrawiam

stone
04-01-2007, 22:37
Poszukaj na forum, pisałem o tym dość szeroko już kiedyś, a wolałbym się nie powtarzać:)

hal9000
05-01-2007, 10:27
KurdY no, zabij mnie ale nie moge się doszukać tego. Sorki, ale czy mógłbyś dać linka do tego postu?

stone
07-01-2007, 00:12
Nie do końca to co chciałem, też nie mogę znaleźć :), ale powinno Ci wskazać co i jak

http://forum.joomla.pl/forum/showthread.php?t=2992&highlight=joomfish

hal9000
09-01-2007, 17:33
Witam,

Niestety słabo znam php, opornie mi to idzie :(

Więc może inaczej. Grafika którą chcę podmienić równocześnie z przełączeniem języka w Joom!fish to górny baner (domyślnie logo_header.jpg). Uzywam templatki cb-sand i tylko tam jest kod zaiwerający „logo_header.jpg”.

Podaję tą linie kodu z pliku templates\cb-sand\index.php


<td background="<?php echo $mosConfig_live_site;?>/templates/cb-sand/images/logo_header.jpg" /><img src="<?php echo $mosConfig_live_site;?>/templates/cb-sand/images/spacer.gif" width="5" height="98" align="absmiddle"/></td> Jaką instrukcję mam dopisać aby przy zmianie języka na angielski logo_header.jpg zamieniało się np. na logo_header_en.jpg?

Wiem, że to może i lamerstwo z mojej strony, ale sam nie potrafię z tym sobie poradzić.

Pozdrawiam

stone
09-01-2007, 23:22
Musisz dać warunek typu

if ( $_GET['lang'] == 'en' ) {
$nazwa_lang = '_en';
}

i nazwę pliku jako
logo_header<?php echo $nazwa_lang; ?>.jpg

hal9000
10-01-2007, 12:30
:-)

W końcu...

Ale ze mnie głupiutki miś....nie dodałem
<?php
?>
Do instrukcji.....

Teraz DZIAŁA

hal9000
10-01-2007, 14:01
Kurde, no niby działa OK. Gdy kliknę na flage zmiany języka to logo_header zmienia sie na wersję angielską, lecz gdy klikne na jakąś pozycję w menu to znowu wraca do polskiej wersji....mimo, że strona wyświetlana jest po angielsku. Gdy ponownie kliknę na flagę to logo_header prawidłowo się zmienia na ang. Pewnie umieściłem linie kodu dotyczące zmiany logo_header.jpg na logo_header_en.jpg nie w tym miejscu (umieściłem je bezpośrednio przed linią:

<td background="<?php echo $mosConfig_live_site;?>/templates/cb-sand/images/logo_header.jpg" /><img src="<?php echo $mosConfig_live_site;?>/templates/cb-sand/images/spacer.gif" width="5" height="98" align="absmiddle"/></td>

(w pliku templates\cb-sand\index.php)

Zauważyłem, że gdy dopiszę w adresie &lang=en (index.php?option=com_content&task=view&id=16&Itemid=34&lang=en).....wtedy logo_header_en.jpg pojawia się. Problem w tym, że &lang=en pojawia się tylko po kliknięciu flagi zmiany języka, gdy kliknę inną pozycję w menu (będąc w wersji ang. strony) &lang=en znika no i pojawia sie polskie logo_header.jpg.

Czy ma ktoś jakiś pomysł jak temu zaradzić?

boskoff
10-01-2007, 18:05
A czy nie powinno być zamiast, a nie przed??
Na przykład tak:

<?php if ( $_GET['lang'] == 'en' ) {
$nazwa_lang = '_en';
}
<td background="<?php echo $mosConfig_live_site;?>/templates/cb-sand/images/logo_header<?php echo $nazwa_lang; ?>.jpg" /><img src="<?php echo $mosConfig_live_site;?>/templates/cb-sand/images/spacer.gif" width="5" height="98" align="absmiddle"/></td>?>

??

stone
10-01-2007, 21:17
Hal możesz dac link do stroni. Wydaje mi się że Fish zmienił trochę sposób przełączania języków co może mieć znaczenie

hal9000
11-01-2007, 03:13
boskoff;
Mam dokładnie tak jak napisałeś, tzn w lini kodu zamiast logo_header.jpg mam logo_header<?php echo $nazwa_lang; ?>.jpg (przepraszam ale w poście nr. 8 dałem jeszcze starą wersję lini kodu)

Stone;
Link do strony wysyłam na priv, gdybyś mógł sprawdzić tą zmianę języka i tajemnicze znikanie &lang=en z adresu strony po kliknięciu na jakąkolwiek pozycję w menu. Zauważ, że &lang=en jest tylko po kliknięciu na flagę i tylko wtedy wyświetlany jest banner w wersji ang.

hal9000
11-01-2007, 16:51
Problem rozwiązany...jutro przedstawię jego opis.

hal9000
12-01-2007, 13:02
Witam,

ROZWIĄZANIE PROBLEMU

Rozwiązanie z zastosowaniem instrukcji:
<?php if ( $_GET['lang'] == 'en' ) {
$nazwa_lang = '_en';
}
<td background="<?php echo $mosConfig_live_site;?>/templates/cb-sand/images/logo_header<?php echo $nazwa_lang; ?>.jpg" /><img src="<?php echo $mosConfig_live_site;?>/templates/cb-sand/images/spacer.gif" width="5" height="98" align="absmiddle"/></td>?>Nie jest zbyt szczęśliwie (przynajmniej dla mnie) -po kliknięciu na link banner znowu wraca do wersji polskiej. Joom!Fish inaczej zmienia język.

Lepiej zastosować następującą zmianę (w pliku templatki (index.php)):

<img src="<?php echo $mosConfig_live_site;?>/templates/NAZWA TEMPLATKI/images/NAZWABANNERA_<?php echo $mosConfig_lang;?>.gif/jpg/png" alt="" width="" height="" />
Pliki powinny miec nazwy:
zdjecie_english.jpg
zdjecie_polish.jpg

Oczywiscie powyzszy sposob mozna stosowac nie tylko do zmiany bannera ale innych plikow graficznych.

DZIAŁA BEZ PROBLEMU

stone
13-01-2007, 21:22
Dzięki za informację :)

boskoff
17-01-2007, 21:21
dodatkowe zastosowanie, jeśli ktoś nie chce modyfikować templatki i mieć div'y opisane stylem:
1. stworzyć "styl_english" i "styl_polish"
2. w pliku templatki odwołanie do stylu, analogicznie do rozwiązania podanego przez hal9000, np.:

<div id="styl_<?php echo $mosConfig_lang;?>">

moje 3 gr :)

Dzięki hal9000 za rozwiązanie :D

ph3n1x
14-03-2007, 21:32
Witam,

ROZWIĄZANIE PROBLEMU

Rozwiązanie z zastosowaniem instrukcji:
<?php if ( $_GET['lang'] == 'en' ) {
$nazwa_lang = '_en';
}
<td background="<?php echo $mosConfig_live_site;?>/templates/cb-sand/images/logo_header<?php echo $nazwa_lang; ?>.jpg" /><img src="<?php echo $mosConfig_live_site;?>/templates/cb-sand/images/spacer.gif" width="5" height="98" align="absmiddle"/></td>?>Nie jest zbyt szczęśliwie (przynajmniej dla mnie) -po kliknięciu na link banner znowu wraca do wersji polskiej. Joom!Fish inaczej zmienia język.

Lepiej zastosować następującą zmianę (w pliku templatki (index.php)):

<img src="<?php echo $mosConfig_live_site;?>/templates/NAZWA TEMPLATKI/images/NAZWABANNERA_<?php echo $mosConfig_lang;?>.gif/jpg/png" alt="" width="" height="" />
Pliki powinny miec nazwy:
zdjecie_english.jpg
zdjecie_polish.jpg

Oczywiscie powyzszy sposob mozna stosowac nie tylko do zmiany bannera ale innych plikow graficznych.

DZIAŁA BEZ PROBLEMU




Hmm dziwne poniewaz u mnie 'po kliknięciu na link banner znowu wraca do wersji polskiej' wlasnie po zaimplementowaniu tego drugiego kodu...


Używam: Joom!Fish V1.7 i Joomla! v. 1.0.12

Może coś przeoczyłem ? Nie rozumiem czemu jest powrót... :confused:




Natomiast dla rozwiązania pierwszego:::


<?php if ( $_GET['lang'] == 'en') {
$nazwa_lang = '_english';
}else if ( $_GET['lang'] == 'pl') {
$nazwa_lang = '_polish';
} else {
$nazwa_lang = '****************';
}
?>

nazwa_lang to '****************' u mnie :) ponieważ _GET['lang'] przyjmuje wartość dopiero po kliknięciu na flagę językową (więc gdy strona jest już załadowana). Zresztą nawet gdy kliknę na EN wersję/flagę to po kliknięciu na jpg strona laduje się w wersji angielskiej ale plik.jpg laduje się znów w wersji Polskiej, a zmienna lang przyjmuje wartosc '****************'

ku jasności: kod umieściłem w index.php w templatce.

stone
15-03-2007, 21:47
Znaczy problem jest z linkiem pod bannera a nie z samym obrazkiem, tak?
Możesz dać link do strony?

arekk
11-02-2008, 09:02
Witam. Chciał bym was prosić o pomoc, usiłuję zrobić podmianę baneru we fleshu podczas zmiany języka na polski, angielski, oraz rosyjski. Na początek chcę tylko zrobić zmianę gdy damy na język angielski,(jak to zadziała to potem wystarczy dodać jeszcze jeden warunek) ale mi nie wychodzi. Kod jaki wstawiam wygląda następująco


<?php if ( $_GET['lang'] == 'en' ) {
$nazwa_lang = '_en';
}
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
width="878" height="200" id="baner" align="middle">

<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="/new/baner.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#adc2dd" />
<param name="wmode" value="transparent" />

<embed src="/images/banners/baner.swf" quality="high" bgcolor="#adc2dd" width="878" height="200" name="baner" align="middle" allowScriptAccess="sameDomain"
type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="transparent"/>
</object>?>Wynik jaki otrzymuję


Parse error: syntax error, unexpected '<' in /export/home/httpd/htdocs/glasmark/templates/vista/index.php on line ...
Prosił bym o jakieś ukierunkowanie co robię nie tak...

WojT
11-02-2008, 09:16
jest to klasyczny błąd przy pisaniu kodu - zapomniałeś zamknąć któregoś znacznika - zresztą to ci pokazuje
syntax error, unexpected '<' in - błąd masz w podanej linii lub linii wyżej

arekk
11-02-2008, 17:14
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="878" height="200" id="baner" align="middle">

To jest ta linijka w której jest błąd co tu jest źle?

WojT
12-02-2008, 10:02
jak pisałem popatrz linijkę wyżej - przeważnie jak pokazuje błąd w lini nr ... to błędna nie jest ta linia (bardzo rzadko się zdarza) ale przeważnie błąd jest w linii wyżej.

dlp
11-03-2008, 11:43
WITAM
podbiję temat jeszcze raz, czy ta funkcja w przypadku podmiany banera flash jest prawidlowa?

<?php if ( $_GET['lang'] == 'en' ) {
$nazwa_lang = '_en';
}
TU WSTAWIAM WYGENEROWANY KOD FLASHA

?>


Tak jak kolega powyżej niestety otrzymuje komunikat
Parse error: syntax error, unexpected '<' in ...

czy w takim razie nie zagra coś takiego z flashem?, licząc kolejne < i > wygląda że wszystko jest podomykane

dlp
11-03-2008, 16:07
nie wiem czy w przypadku flasha jest trudniej niż z jpg, większość opisów podmiany dotyczy statycznych grafik,
w momencie gdy nie szło mi z zamianą wewnatrz jednego szablonu postanowiłem sprawdzić możliwość zmiany szablonu działajac na dwóch ze zmodyfikowaną zawartością i nazwami (archzone-po i archzone-en) (-po ponieważ tak joomfish oznacza iso polskiego)

Na stronach www.joomfish.net (http://www.joomfish.net) znalazłem taka podpowiedź:


// gets template for page
$cur_template = $mainframe->getTemplate();
// add this
if( $mosConfig_multilingual_support ) {
$cur_template .= "-". $iso_client_lang;
}
else {
$cur_template .= "-en";
} W tym monencie mam kilka watpliwości:
1. w configuration.php zmienną mosConfig_multilingual_support mam ustawioną na "0" czy konieczna jest zmiana
2. jak rozumiem konieczne jest dodanie fragmentu kodu w index.php, jeśli tak to czy tylko wklejam czy zupelnie musze zmodyfikować kod z szablonu

<link href="<?php echo $mosConfig_live_site;?>/templates/<?php echo $mainframe-> getTemplate(); ?>/css/template_css.css" rel="stylesheet" type="text/css"/>3. czy ten wstawiony fragment ma działać dwubiegunowo tzn. w archzone-po wklejam "-en"; a w archzone-en wklejam "-po"; a jako szablon domyślny ustawiam archzone-po

Trochę wprowadziłem chaosu w wypowiedź ale się uparłem że dzisiaj uda mi się to zrobić, czyli klikam na angielską flagę i widze flashowy baner z angielskimi batonami

Będę wdzięczny za podpowiedzi

weczi
21-05-2009, 01:27
Sorki za odgrzebywanie staroci...

Ja uzylem takiego kodu:

<script type="text/javascript">
***********
<script type="text/javascript">var fo = new FlashObject("images/menu_<?php echo $mosConfig_lang;?>.swf", "top", "935", "126", "6.0.29.0", "#000000");
fo.addParam("quality", "high");
fo.write("flashcontent");
***********
i generalnie wczytuje mi menu_polish.swf ale jak klikam na zmiane jezyka to flash nie zmienia sie na menu_english.swf (ktos moze podpowiedziec?)