我正在制作一个后端扩展,通过单击页面树右侧工作区域中的链接来更改它正在处理的页面。问题是:页面树不会根据工作区中显示的 ID 进行更新。
ID 通过将查询参数 ID 传递给 mod.php 模块来更改,并按预期工作。我尝试通过更新页面树
t3lib_BEfunc::openPageTree($this->id);
t3lib_BEfunc::setUpdateSignal('updatePageTree');
然后
被包含在输出中。这也有效(刷新页面树,并显示传递的 ID 的隐藏子页面),除了指示页面树中当前页面的灰色保留在其先前位置。
关于如何使页面树反射(reflect)新的 $this->id
的任何想法?
最佳答案
这就是我的做法。在我的BE模块的PHP代码中,我只调用了openPageTree
像这样:
t3lib_BEfunc::openPageTree(76,false);
我没有调用
setUpdateSignal
因为整个“更新信号”过程对我来说有点奇怪。另请注意 openPageTree
现在有第二个参数,这是必需的。据我了解,这个调用应该足以在用户 session 服务器端设置树的状态。现在是客户端。
在我的扩展程序的 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']
刷新后。可悲的是,我无法确定如何在那里正确注入(inject)值(value)。在我看来,该值似乎只能通过用户交互来调整(意思是用户点击了页面树中的一个节点)。
关于typo3 - 如何更改 TYPO3 页面树中的选定条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6613295/