2011-07-07 10 views
7

Estoy haciendo una extensión de back-end que cambia la página en la que está trabajando al hacer clic en un enlace en el área de trabajo a la derecha del árbol de páginas. El problema es que el árbol de páginas no se actualiza según la ID que se presenta en el área de trabajo.Cómo cambiar la entrada seleccionada en el árbol de páginas de TYPO3

La ID se cambia pasando el ID del parámetro de consulta al mod.php-module, y funciona como se esperaba. He intentado actualizar el árbol de páginas a través de

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

y más tarde

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

Para ser incluido en la salida. Esto también funciona (el árbol de páginas se actualiza y se revelan las subpáginas ocultas de la ID pasada), excepto el gris que indica que la página actual en el árbol de páginas se deja en su posición anterior.

¿Alguna idea de cómo hacer que el árbol de páginas refleje el nuevo $this->id?

+0

¿Encontró una solución? ¿Con qué versión de TYPO3 estás relacionado? – Mateng

+0

Lo sentimos, no hemos encontrado nada todavía. El proyecto en cuestión ha sido descuidado por un tiempo, pero parece volver a ganar impulso (dependiendo de los fondos de los clientes), por lo que probablemente lo investigue nuevamente en algún lugar los próximos meses. Compartiré cualquier solución que encuentre. Gracias por resolver la pregunta en mi mente. – norwebian

+0

¿Qué tal ofrecer una recompensa? Yo "donaría" 100 representantes si mantienes esta pregunta :). – Mateng

Respuesta

2

Así es como lo hice. En el código PHP de mi módulo BE, solamente he llamado openPageTree así:

t3lib_BEfunc::openPageTree(76,false); 

no llamar setUpdateSignal porque todo el proceso "señal de actualización" se sentía un poco raro para mí. Tenga en cuenta también que openPageTree ahora tiene un segundo parámetro, que es obligatorio.

A mi entender, esta llamada debería ser suficiente para establecer el estado del árbol en la sesión del usuario en el servidor. Ahora viene el lado del cliente.

En el código JavaScript de mi extensión, que sólo tiene que seleccionar el ID de página correspondiente y eso es todo:

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

Mientras mira por el origen del árbol de páginas, me di cuenta de que siempre va a seleccionar top.fsMod.recentIds['web'] después de una refrescar. Lamentablemente, no pude determinar cómo inyectar correctamente un valor allí. Me pareció que el valor solo se supone que debe ajustarse a través de la interacción del usuario (es decir, el usuario hizo clic en un nodo en el árbol de la página).

+0

OLIVA, puede tardar un tiempo hasta que se verifique su sugerencia. Supongo que Norwebian nos avisará si esto funcionó. – Mateng

+0

@Mateng: Está bien. Me encantaría saber si esto realmente resuelve el problema para él o si solo * se ve * bien :) –

+0

¡Gracias por su interés en mi pregunta! Acabo de volver a visitar stackoverflow y vi tu solución. Realmente lo aprecio y aprovecharé la primera oportunidad para probarlo. – norwebian

0

En TYPO3 6.1, que tiene una función Javascript para saltar a un módulo web:

/** 
* 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); 
} 

Usted puede utilizar de esta manera:

<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> 

Basta con sustituir "uid_page" por su UID correcta :)

+0

Por razones de portabilidades probablemente deba reemplazar alt_doc.php para obtener la url con alguna función de utilidad. También vea https://docs.typo3.org/typo3cms/extensions/core/8.7/singlehtml/Index.html#breaking-72360-removed-deprecated-entry-point-fallback. – wirap

Cuestiones relacionadas