7

ページツリーの右側にある作業領域のリンクをクリックすると、作業中のページを変更するバックエンド拡張機能を作成しています。問題は、作業領域に表示されているIDに従ってページツリーが更新されないことです。

IDは、クエリパラメータIDをmod.php-moduleに渡すことで変更され、期待どおりに機能します。経由でページツリーを更新してみました

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

以降

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

出力に含まれます。これも機能します(ページツリーが更新され、渡されたIDの非表示のサブページが表示されます)。ただし、ページツリーの現在のページが前の位置に残っていることを示す灰色が表示されます。

ページツリーに新しいものを反映させる方法について何かアイデアはあり$this->idますか?

4

2 に答える 2

2

これが私がやった方法です。私の BE モジュールの PHP コードでは、次のopenPageTreeように呼び出しただけです。

t3lib_BEfunc::openPageTree(76,false);

setUpdateSignal「更新シグナル」プロセス全体が少し奇妙に感じたので、私は電話しませんでした。openPageTreeまた、必須の 2 番目のパラメーターがあることにも注意してください。

私の理解では、この呼び出しは、ユーザー セッションのサーバー側でツリーの状態を設定するのに十分なはずです。次にクライアント側です。

拡張機能の 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']ページ ツリーのソースを調べているときに、更新後に常に選択されることに気付きました。残念ながら、そこに値を適切に挿入する方法を判断できませんでした。値はユーザーの操作 (つまり、ユーザーがページ ツリーのノードをクリックしたこと) によってのみ調整されるように思われました。

于 2012-11-23T18:49:09.897 に答える
0

TYPO3 6.1 では、Web モジュールにジャンプする 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に置き換えるだけです:)

于 2014-09-23T09:50:51.803 に答える