![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 374 Pomógł: 23 Dołączył: 3.06.2006 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam prawdopodobnie problem banalny, ale jakoś nie umiem sobie z nim poradzić a przeszukiwanie google nie daje oczekiwanych rezultatów (niestety...) Problem przedstawia się następująco: Tworzę serwis WWW dostępny w kilku wersjach językowych. W zmiennej $_SESSION['lang'] trzymam identyfikator języka (pl, en, ger, fr, ...) Pobieram z bazy danych pewną treść strony, która ma pojawić się na stronie. Zapisana jest ona w kolumnie 'content_body_pl' lub 'content_body_ger', '...' Oczywiście wszystko to zarzucam do tablicy asocjacyjnej mając postać:
Kod Array ( [welcome] => Array ( [content_name_pl] => Witaj na stronie [content_name_en] => [content_name_ger] => [content_name_fr] => [content_body_pl] => Lorem ipsum bla, powitanie w j. polskim [content_body_en] => [content_body_ger] => [content_body_fr] => ) ) i teraz na stronie w szablonie chcę wyświetlić dany element tablicy zależny od danego języka. Próba odwołania się w stylu: Kod $content.welcome.content_body_$smarty.session.lang nie skutkuje jak należy. Łączenie zmiennych w samym szablonie ({assign ...}) też niebardzo wychodzi... Bardzo proszę o pomoc w rozwiązaniu problemu. Pozdrawiam, Michał -------------------- Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Kod {assign var="lang" value="content_body_$smarty.session.lang"} {$content.welcome.$lang} ps: nie ger a de edit: czemu ladujesz cala tablice ze wszystkimi jezykami skoro potrzebujesz tylko jednego w danej chwili? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 374 Pomógł: 23 Dołączył: 3.06.2006 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
@nospor: Wywala mi następujący błąd:
Fatal error: Smarty error: [in index.tpl line 4]: syntax error: $smarty. is an unknown reference (Smarty_Compiler.class.php, line 2119) in C:\wamp\www\ew-invest\libs\Smarty.class.php on line 1095 -------------------- Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
sorki, moj blad:
Kod {assign var="lang" value="content_body_`$smarty.session.lang`"}
{$content.welcome.$lang} -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 374 Pomógł: 23 Dołączył: 3.06.2006 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
No i sobie pyka jak należy.
@nospor: Dzięki ![]() -------------------- Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Odświeżę stary temat gdyż mam podobny problem. Mianowicie to rozwiązanie powyższe mi nie działa.
Dokładnie stosuję to w ten sposób: Kod {$menu.name_`$jezyki[j]`} Otrzymuję komunikat: Kod Fatal error: Smarty error: [in /home/virtualki/52702/admin/modules/menu/templates/editmenu.tpl line 16]: syntax error: unrecognized tag: $menu.name_`$jezyki[j]` (Smarty_Compiler.class.php, line 446) in /home/virtualki/52702/admin/lib/smarty/Smarty.class.php on line 1091 Co można zrobić jeszcze ? -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 437 Pomógł: 42 Dołączył: 16.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
musisz zrobić nową zmienną z poziomu Smarty - sposób nospor-a na pewno działa
![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
No jakby to było takie proste.. Wydaje się tak jakby moje smarty nie rozumiało znaczka `
Poniżej jak mam to zrobione teraz. Języki są w tabeli w polu zapisane w postaci:
Wyciągam je z bazy i:
Następnie wyciągam dane z tabeli menu:
I odpalam wszystko w szablonie: Kod {section start=0 step=1 name=j loop=$jezyki} {assign var="lang" value="name_$jezyki[j]"} <input type="text" name="name_{$jezyki[j]|strtolower}" value="{$menu.`$lang|strtolower`}"><br /> {/section} Proszę pomóżcie bo ja już nie wiem co robić. Siedzę w manualu i dłubię i nie daje to rezultatów żadnych. EDIT: Problem rozwiązany. Prawidłowe rozwiązanie (dla potomnych): Kod {section start=0 step=1 name=j loop=$jezyki}
{assign var="lang" value="name_`$jezyki[j]`"|lower} <input type="text" name="{$lang}" value="{$menu.$lang}"><br /> {/section} Ten post edytował kasior 18.11.2010, 11:41:56 -------------------- Zapraszam do odwiedzenia mojej strony.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.06.2025 - 20:55 |