Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: eZ publish - wielojęzyczność
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy portalowe i CMS'y
lukaswoj
Witam

Odziedziczyłem zarządzanie pewnym serwisem postawionym na ezp3.6 i jak narazie było ok ale wkońcu poległem.

Strona jest w 4 językach.

Zlecono mi dodać nową pozycję w menu wraz z nową treścią:
poz1
|\
|\ \- poz11
|\ \- poz12
\ - poz13

Zrobiłem to tworząc obiekty typu [Folder] i wszystko ok, ale tekst mam tylko w jednym z 4 języków i chciałbym ukryć te nowe elementy w pozostałych wersjach językowych - czy to wogóle jest możliwe ?

Będę wdzięczny za wszelką pomoc

--
pozdrawiam
Łukasz Wojciechowski
Luke
Uzyj only_translated.

Kod
{fetch( 'content', 'list',
       hash( 'parent_node_id',  2,
             'only_translated', true() ) )}


funkcja zwroci tylko przetlumaczone obiekty dla danego dostepu do strony/jezyka (siteaccess)
lukaswoj
Dzięki za odpowiedź.

Wiem co napisałeś ale niewiem gdzie to zastosować. Domyślam się, że w szablonie ale czy dobrze się domyślam ?

I druga sprawa - ja chciałbym to wyrzucić z menu i to by mnie w zupełności satsyfakcjonowało - czy twoja rada również dotyczy pozycji menu ?
Luke
Tak w szablonie. Nie wiem czy domyslnie korzystasz z wygladu "base" czy z wlasnego. Jezeli z "base" to domyslam sie ze chodzi o top menu, wiec zajrzyj do design/base/templates/menu/double_top.tpl albo flat_top.tpl. Poszukaj funkcji fetch i dodaj { ... "only_translated", true() }. Jezeli ktos bedzie przegladal strone po angielsku to zostana wyswietlone tylko przetlumaczone obiekty.
lukaswoj
Dobra - sama edycja to nie problem ale mam problem ze zlokalizowaniem szablonu odpowiedzialnego za wyświetlanie menu.

Czy byłbyś w stanie podpowiedzieć mi jak najłatwiej zlokalizować odpowiedni szablon ?

Menu mam z lewej strony i jest to jakiś rodzaj drzewka:



Próbowałem "serczować" w panelu zwroty "dodaj" lub "ulubionych" - nic nie zwraca sad.gif

pozdrawiam
Luke
Ktorej wersji eZ uzywasz? Jezeli 3.6.x to wlacz debug output z opcja List of used templates i Template debug. Mozesz to zrobic z poziomu Panelu po prawej stronie w adminie. Polecam poczytac dokumntacje, bardzo pomaga. http://ez.no/doc
lukaswoj
Ok.
Zidentyfikowałem szablon wyświetlający menu i nadpisałem go swoim.

Dane do budowy menu pobierane są w moim przypadku funkcją treemenu().

W między czasie okazało się, że jest wiele innych elementów - nie przetłumaczonych a takich, które mają być widoczne w innych wersjach językowych.

W obliczu powyższego oparłem się na nazwie obiektu i na jej podstawie wyświetlam lub nie dany element menu w konkretnych wersjach językowych. - Mało elegancko ale narazie wystarczy - ważne że cel osiągnięty.

Dziękuję bardzo za pomoc.
Luke
Problem polaga na tym ze funkcja treemenu() nie obsluguje parametru "only_translated", mozesz dodac do klasy folder atrybut typu checkbox (only_translated), i na jego podstawie okreslac ktory element powinien byc wyswietlany jako nie przetlumaczony. Bedzie to bardziej eleganckie i elastyczne.

Kod
{if $node.object.data_map.only_translated.data_int}

{* Tylko przetlumaczone *}

{/if}

Sprawdzenia dokonasz w petli, w kodzie ktory wyswietla menu.
lukaswoj
Jest to jakiś pomysł, ale tak jak pisałem - są elementy nieprzetłumaczone, które powinny być widoczne i są takie co nie powinny więc to sprawy do końca nie rozwiąże.

Na chwilę obecną zostawie tak jak jest.

Dzięki za sugestie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.