如何更改TYPO3 pagetree中的选定条目

nor*_*ian 7 typo3

我正在制作一个后端扩展,在单击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>

被包括在输出中.这也有效(页面树被刷新,并且显示传递的ID的隐藏子页面),除了指示页面树中当前页面的灰色处于其先前位置的灰度.

关于如何制作pagetree的任何想法都反映了新的$this->id

Der*_*ler 2

我是这样做的。在我的 BE 模块的 PHP 代码中,我只openPageTree这样调用:

t3lib_BEfunc::openPageTree(76,false);
Run Code Online (Sandbox Code Playgroud)

我没有打电话,setUpdateSignal因为整个“更新信号”过程对我来说有点奇怪。另请注意,openPageTree现在有第二个参数,这是必需的。

据我了解,此调用应该足以在用户会话服务器端设置树的状态。现在是客户端。

在我的扩展的 JavaScript 代码中,我只需选择适当的页面 ID 即可:

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

在查看页面树的源代码时,我意识到它总是会top.fsMod.recentIds['web']在刷新后选择。遗憾的是,我无法确定如何在那里正确注入值。在我看来,该值只能通过用户交互进行调整(也就是说,用户单击页面树中的节点)。