31. 01. 2013, 16:50

Hallo,

ich habe ein kleines Problem beim auslesen des Seitenbaums in einer eigenen Extbase Erweiterung.

Ich habe es mit folgendem Code probiert das ich aus Beschreibungen von älteren Versionen und mit durchschauen der Klassen erstellt habe.

  1. <?php
  2. public function crawlAction() {
  3. $node = $this->objectManager->get('TYPO3\CMS\Backend\Tree\Pagetree\PagetreeNode');
  4.  
  5. $dataProvider = $this->objectManager->get('TYPO3\CMS\Backend\Tree\Pagetree\DataProvider', 1 );
  6.  
  7. $nodeCollection = $dataProvider->getNodes($node);
  8.  
  9.  
  10. $pageTree = $this->getPageTreeTest($nodeCollection);
  11.  
  12. $this->view->assign('pagetree', $pageTree);
  13. }
  14.  
  15. protected function getPageTreeTest( \TYPO3\CMS\Backend\Tree\TreeNodeCollection $nodeCollection ) {
  16.  
  17. foreach ($nodeCollection as $childNode) {
  18. $pids_data = array(
  19. 'id' => $childNode->getId(),
  20. 'text' => $childNode->getText(),
  21. 'viewable' => $childNode->canBeViewed(),
  22. );
  23. //$pids[] = $childNode->toArray();
  24.  
  25. if ( $childNode->hasChildNodes() ) {
  26. $pids_data['subPages'] = $this->getPageTreeTest( $childNode->getChildNodes() );
  27. }
  28.  
  29. $pids[] = $pids_data;
  30. }
  31.  
  32. return $pids;
  33. }

Ich bekomme auch alle Seiten in das Array.

Leider scheint aber der erste Aufruf von "Pagetree\DataProvider" Alle Typo3 Seiten auf allen Ebenen auszuspielen. Also auch tief verschachtelte Seiten sind auf der obersten Ebene zu sehen.

Dann habe ich gesehen das der constructor den Parameter "nodeLimit" annimmt.

Also habe ich versucht diesen bei objectManager->get zu setzen. Leider ohne erfolg.

Wie also komme ich am besten an die Seitenstruktur in Extbase 6.0 ?

Danke schon mal für jeden Hinweis.