Как изменить выбранную запись в дереве страниц TYPO3 - PullRequest
7 голосов
/ 07 июля 2011

Я делаю внутреннее расширение, которое изменяет, над какой страницей он работает, нажав на ссылку в рабочей области справа от дерева страниц. Проблема в том, что дерево страниц не обновляется в соответствии с идентификатором, представленным в рабочей области.

Идентификатор изменяется путем передачи идентификатора параметра запроса в модуль mod.php и работает, как ожидается. Я попытался обновить дерево страниц с помощью

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

и позже

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

для включения в вывод. Это также работает (дерево страниц обновляется и обнаруживаются скрытые подстраницы переданного идентификатора), за исключением того, что серый цвет указывает на то, что текущая страница в дереве страниц остается на прежнем месте.

Любая идея относительно того, как заставить дерево страниц отражать новый $this->id?

Ответы [ 2 ]

2 голосов
/ 23 ноября 2012

Вот как я это сделал.В PHP-коде моего модуля BE я назвал openPageTree примерно так:

t3lib_BEfunc::openPageTree(76,false);

Я не вызывал setUpdateSignal, потому что весь процесс «сигнала обновления» показался мне немного странным.Также обратите внимание, что openPageTree теперь имеет второй параметр, который является обязательным.

Насколько я понимаю, этого вызова должно быть достаточно для установки состояния дерева на стороне сервера сеанса пользователя.Теперь перейдем на сторону клиента.

В коде JavaScript моего расширения я просто выбираю соответствующий идентификатор страницы и все:

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

Просматривая источник дерева страниц,Я понял, что он всегда будет выбирать top.fsMod.recentIds['web'] после обновления.К сожалению, я не смог определить, как правильно ввести туда значение.Мне показалось, что значение должно корректироваться только через взаимодействие с пользователем (т.е. пользователь щелкнул узел в дереве страниц).

0 голосов
/ 23 сентября 2014

В TYPO3 6.1 у вас есть функция Javascript для перехода к веб-модулю:

/**
 * 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_page" на ваш правильный uid:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...