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

时间:2011-07-07 15:43:34

标签: 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>

包含在输出中。这也有效(刷新了pagetree,并显示了传递的ID的隐藏子页面),除了指示页面树中当前页面保留在其先前位置的灰度。

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

2 个答案:

答案 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">&nbsp;</span></a>

只需用正确的uid替换“uid_page”:)