2011-07-07 13 views
7

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

IDは、クエリパラメータIDをmod.phpモジュールに渡すことによって変更され、期待どおりに機能します。私は、出力に含まれる

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

以降

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

を経由してページツリーの更新を試してみました。これは、ページツリーの現在のページを示すグレイネスが前の位置に残っていることを除いて、これも機能します(ページツリーはリフレッシュされ、渡されたIDの隠されたサブページが表示されます)。

pagetreeを作成する方法については、新しい$this->idが反映されていますか?

+0

あなたは解決策を見つけましたか? TYPO3のどのバージョンに関連していますか? – Mateng

+0

申し訳ありませんが、まだ何も見つかりませんでした。問題のプロジェクトはしばらく無視されていますが、(顧客の資金調達に応じて)再び瞬間的になるようですので、おそらく次の月のどこかで再度調べてみましょう。私は見つけるすべての解決策を共有します。私の心の中で質問にぶつけてくれてありがとう。 – norwebian

+0

賞金の提供はどうですか?私はあなたがこの質問を維持しているならば、100人のRepsを寄付したいと思っています:)。 – Mateng

答えて

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']を選択することを実現しましたリフレッシュ悲しいことに、そこに値を正しく注入する方法を決定することはできませんでした。値はユーザーとのやりとり(つまり、ユーザーがページツリー内のノードをクリックしたことを意味する)によってのみ調整されるはずです。 TYPO3 6.1では

+0

あなたの提案が確認されるまでに時間がかかる場合があります。私はnorwebianがこれがうまくいくかどうか私たちに知らせてくれると思います。 – Mateng

+0

@Mateng:そうです。私はこれが実際に彼のために問題を解決するか、それが*見えるかどうかを知りたいと思っています。 –

+0

私の質問に興味を持っていただきありがとうございます!私はちょうど今stackoverflowを再訪し、あなたのソリューションを見た。私は本当にそれを感謝し、それをテストするための最初の機会になります。 – norwebian

0

は、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); 
} 

あなたはこのようにそれを使用することができます:ちょうどあなたの正しいUIDで "uid_page" を置き換える

<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> 

:)

+0

移植性のため、おそらくalt_doc.phpを置き換えて、何らかのユーティリティー機能を持つURLを取得するべきです。 https://docs.typo3.org/typo3cms/extensions/core/8.7/singlehtml/Index.html#breaking-72360-removed-deprecated-entry-point-fallbackも参照してください。 – wirap

関連する問題