我正在制作一个后端扩展程序,在点击pagetree右侧工作区中的链接时更改正在处理的页面。问题是:pagetree不会根据工作区中显示的ID进行更新。
通过将查询参数ID传递给mod.php-module来更改ID,并按预期工作。我尝试通过
更新页面树t3lib_BEfunc::openPageTree($this->id); t3lib_BEfunc::setUpdateSignal('updatePageTree');
以后
<script type="text/javascript">'.t3lib_BEfunc::getUpdateSignalCode().'</script>
包含在输出中。这也有效(刷新了pagetree,并显示了传递的ID的隐藏子页面),除了指示页面树中当前页面保留在其先前位置的灰度。
关于如何制作pagetree的任何想法都反映了新的$this->id
?
答案 0 :(得分:2)
这是我的表现方式。在我的BE模块的PHP代码中,我只调用了openPageTree
:
t3lib_BEfunc::openPageTree(76,false);
我没有致电setUpdateSignal
,因为整个&#34;更新信号&#34;过程对我来说有点奇怪。另请注意,openPageTree
现在有第二个参数,这是必需的。
据我了解,此调用应足以在用户会话服务器端设置树的状态。现在是客户端。
在我的扩展程序的JavaScript代码中,我只需选择适当的页面ID即可:
<script type="text/javascript">
if (top && top.TYPO3.Backend.NavigationContainer.PageTree) {
top.TYPO3.Backend.NavigationContainer.PageTree.select(76);
}
</script>
在浏览页面树的源代码时,我意识到刷新后它总是会选择top.fsMod.recentIds['web']
。可悲的是,我无法确定如何在那里正确注入价值。在我看来,这个值只能通过用户交互来调整(意思是,用户点击了页面树中的节点)。
答案 1 :(得分:0)
在TYPO3 6.1中,您有一个Javascript函数可以跳转到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);
}
你可以像这样使用它:
<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"> </span></a>
只需用正确的uid替换“uid_page”:)