PDA

Zobacz pełną wersję : [Trick] Zmiana tytułu modułu w zależności od języka



arthe
31-07-2014, 19:33
Hej. Dziś podczas tworzenia jednej ze stron wpadłem na ciekawe rozwiązanie z modułami i tłumaczeniami. A mianowicie, czasami zdarza się tak, że tworzymy kilka takich samych modułów dla różnych języków, a treść modułu jest taka sama (lub podobna wtedy możemy dodać różną treść w zależności od strony języka - tutaj przydatny jest dodatek NoNumber Sourcerer, który pozwala nam użyć PHP, JS itp w edytorze joomli i sprawdzenie języka za pomocą PHP - prosty przykład: https://www.dropbox.com/s/9hvg5a4otld7lny/Zrzut%20ekranu%202014-07-31%2019.21.52.png).

Wracając do tematu, aby zmieniać tytuł modułu w zależności od języka strony, musimy wejść do naszego katalogu z szablonem i stowrzyć katalog html (jeśli nie mamy) a w nim plik modules.php - można go skopiować z szablonu systemowego.
Następnie musimy dopisać kod:


// Check is title lang variable or normal text;
if (substr($module->title, 0, 4) == 'TPL_')
$moduleTitle = JText::_($module->title);
else
$moduleTitle = $module->title;


do wybranego szablonu wyglądu modułu. Tutaj przykład: https://www.dropbox.com/s/r93dxhmqhu2jae9/Zrzut%20ekranu%202014-07-31%2019.27.21.png gdzie powinien się znaleźć kod.
Następnie musimy podmienić tekst z:

<<?php echo $headerTag . $headerClass . '>' . $module->title; ?></<?php echo $headerTag; ?>>
na:

<<?php echo $headerTag . $headerClass . '>' . $moduleTitle; ?></<?php echo $headerTag; ?>>
Od tej pory możemy dodawać zmienne do tłumaczenia w panelu administracyjnym (nadpisywanie tłumaczeń) lub bezpośrednio do plików językowych szablonu czyli w katalogu szablonu w katalogu language/[język]/pliki - tutaj przykładowa struktura plików językowych https://www.dropbox.com/s/ci4ok8503moxwnm/Zrzut%20ekranu%202014-07-31%2019.29.20.png a tutaj przykład dodawania zmiennych do pliku z tłumaczeniami https://www.dropbox.com/s/nk89roriw42b6ib/Zrzut%20ekranu%202014-07-31%2019.29.58.png

Teraz krótkie objaśnienie jak to działa. Jeżeli nasz tytuł modułu zaczyna się od "TPL_" to dodaje nam wartość
JText::_($module->title), która przetworzy treść z tytułu modułu na tekst, który został wprowadzony w plikach językowych, jeśli tytuł nie zaczyna się od "TPL_" to pokaże nam zwykły tytuł.

Mam nadzieję, że komuś się to przyda. Gdyby coś było nie zrozumiałe to chętnie pomogę. Powodzenia.
PS: Swoją drogą dziwi mnie , że nie stworzyli jeszcze w Joomli standardowo zmiany treści i tytułu w zależności języka w obrębie jednego modułu.

Gall Anonim
01-08-2014, 00:19
Swoją drogą dziwi mnie , że nie stworzyli jeszcze w Joomli standardowo zmiany treści i tytułu w zależności języka w obrębie jednego modułu.
Standardowo - bez dublowania modułu - nie ale FaLang spokojnie ogrania temat w sposób kompleksowy i ratuje sytuacje również w przypadku wielu komponentów.
Pzdr

arthe
01-08-2014, 14:00
No tak, ale jest kilka powodów dla, którego nie jestem za FaLang:
1. Falang był przydatny, kiedy jeszcze nie było tak rozwiniętej multi-języczności w starszych wersjach Joomli.
2. Nie jest zwolennikiem instalowania dodatków
3. Łatwiej i lepiej jest dodać 3 linijki kodu i korzystać z czystej wersji Joomli niż używać rozbudowanego komponentu.

Ale dobrze, że o tym wspomniałeś, ponieważ innym użytkownikom może być bardziej potrzebny :)

Gall Anonim
01-08-2014, 14:31
@arthe
w sytuacji kiedy chodzi tylko o tytuły modułów - owszem
w sytuacji kiedy chodzi o pola dodatkowe, nazwy kategorii e.c.t - absolutnie pozostaje falang - rdzenna sobie nie radzi
Pzdr
P.S. Zresztą jeśli chodzi o rdenną przy siedmiu językach i kilkudziesięciu elementach menu sytuacja staje się odrobinę "upiadrliwa" tak w zarządzaniu jak i konstrucji