2011-07-07 12 views
7

Tworzę rozszerzenie zaplecza, które zmienia stronę, nad którą pracuje po kliknięciu łącza w obszarze roboczym po prawej stronie obszaru roboczego. Problem polega na tym, że obszar stron nie aktualizuje się zgodnie z identyfikatorem wyświetlanym w obszarze roboczym.Jak zmienić wybrany wpis w TYPO3 pagetree

Identyfikator zmienia się, przekazując identyfikator parametru zapytania do modułu mod.php i działa zgodnie z oczekiwaniami. Próbowałem aktualizacji drzewa stronę poprzez

 t3lib_BEfunc::openPageTree($this->id); 
    t3lib_BEfunc::setUpdateSignal('updatePageTree');

a później

 <script type="text/javascript">'.t3lib_BEfunc::getUpdateSignalCode().'</script>

być dołączona do wyjścia. To również działa (obszar stron jest odświeżany, a ukryte podstrony przekazanego identyfikatora są ujawniane), z wyjątkiem szarości wskazującej, że bieżąca strona w drzewie stron jest pozostawiona w poprzedniej pozycji.

Każdy pomysł, jak sprawić, by pagetree odzwierciedlało nowy numer $this->id?

+0

Czy znalazłeś rozwiązanie? Z którą wersją TYPO3 się odwołujesz? – Mateng

+0

Niestety, jeszcze nie znalazłem. Omawiany projekt został przez dłuższy czas zaniedbany, ale wydaje się, że znowu zyskuje na znaczeniu (w zależności od finansowania klienta), więc prawdopodobnie zagłębię się ponownie w kolejne miesiące. Podzielę się każdym znalezionym rozwiązaniem. Dzięki, że wpadłem na to pytanie w mojej głowie. – norwebian

+0

Co powiecie na nagrodę? Przekazałbym "100 Repów", jeśli utrzymasz to pytanie :). – Mateng

Odpowiedz

2

Oto jak to zrobiłem. W kodzie PHP mojego moduł BE, tylko nazywa openPageTree tak:

t3lib_BEfunc::openPageTree(76,false); 

Nie wołałem setUpdateSignal ponieważ cały proces „sygnał update” czułem się trochę dziwne dla mnie. Należy również pamiętać, że openPageTree ma teraz drugi parametr, który jest wymagany.

Według mnie to połączenie powinno wystarczyć do ustawienia stanu drzewa w sesji użytkownika po stronie serwera. Teraz przychodzi strona klienta.

w kodzie JavaScript mojego rozszerzenia, po prostu wybrać odpowiednią stronę identyfikator i to wszystko:

<script type="text/javascript"> 
    if (top && top.TYPO3.Backend.NavigationContainer.PageTree) { 
    top.TYPO3.Backend.NavigationContainer.PageTree.select(76); 
    } 
</script> 

Patrząc przez źródła drzewie widoku, zdałem sobie sprawę, że będzie zawsze wybierać top.fsMod.recentIds['web'] po odświeżać. Niestety, nie byłem w stanie określić, jak prawidłowo wprowadzić wartość tam. Wydawało mi się, że wartość ma być dostosowywana tylko poprzez interakcję z użytkownikiem (co oznacza, że ​​użytkownik kliknął węzeł w drzewie stron).

+0

OLiver, może minąć trochę czasu, zanim Twoja sugestia zostanie zweryfikowana. Domyślam się, że norweski poinformuje nas, czy to zadziałało. – Mateng

+0

@ Matat: W porządku. Chciałbym wiedzieć, czy to rzeczywiście rozwiązuje problem dla niego lub czy tylko * wygląda * dobrze :) –

+0

Dziękuję za zainteresowanie moim pytaniem! Właśnie wróciłem do stackoverflow i zobaczyłem twoje rozwiązanie. Naprawdę to doceniam i skorzystam z pierwszej okazji, aby to przetestować. – norwebian

0

W TYPO3 6.1, masz funkcji JavaScript, aby przejść do modułu internetowej:

/** 
* jump the backend to a module 
*/ 
function jump(url, modName, mainModName, pageId) { 
    if (isNaN(pageId)) { 
     pageId = -2; 
    } 
    // clear information about which entry in nav. tree that might have been highlighted. 
    top.fsMod.navFrameHighlightedID = []; 
    top.fsMod.recentIds['web'] = pageId; 

    if (top.TYPO3.Backend.NavigationContainer.PageTree) { 
     top.TYPO3.Backend.NavigationContainer.PageTree.refreshTree(); 
    } 

    top.nextLoadModuleUrl = url; 
    top.TYPO3.ModuleMenu.App.showModule(modName); 
} 

można go używać tak:

<a onclick="jump('alt_doc.php?&edit[pages][\'uid_page\']=edit','web_list', 'web', 'uid_page')" href="#"><span class="t3-icon t3-icon-actions t3-icon-actions-document t3-icon-document-open">&nbsp;</span></a> 

Wystarczy zastąpić "uid_page" przez prawidłowego uid :)

+0

Ze względów przenośnych prawdopodobnie powinieneś zastąpić alt_doc.php, aby uzyskać adres URL z pewną funkcją użyteczności. Zobacz również https://docs.typo3.org/typo3cms/extensions/core/8.7/singlehtml/Index.html#breaking-72360-removed-deprecated-entry-point -fallback. – wirap

Powiązane problemy