src/Twig/Extension/NavigationExtension.php line 47

Open in your IDE?
  1. <?php
  2.     /**
  3.      * project: Pimcore
  4.      * User: EBiermann
  5.      * Year: 2022
  6.      */
  7.     namespace App\Twig\Extension;
  8.     use Pimcore\Model\Document;
  9.     use Pimcore\Twig\Extension\Templating\Navigation;
  10.     use Twig\Extension\AbstractExtension;
  11.     use Twig\TwigFunction;
  12.     class NavigationExtension extends AbstractExtension
  13.     {
  14.         /**
  15.          * @var Navigation
  16.          */
  17.         protected $navigationHelper;
  18.         /**
  19.          * @param Navigation $navigationHelper
  20.          */
  21.         public function __construct(Navigation $navigationHelper)
  22.         {
  23.             $this->navigationHelper $navigationHelper;
  24.         }
  25.         /**
  26.          * @return array|TwigFunction[]
  27.          */
  28.         public function getFunctions()
  29.         {
  30.             return [
  31.                 new TwigFunction('custom_build_nav', [$this'getCustomNavigation'])
  32.             ];
  33.         }
  34.         /**
  35.          * @param Document $document
  36.          * @param Document $startNode
  37.          *
  38.          * @return \Pimcore\Navigation\Container
  39.          * @throws \Exception
  40.          */
  41.         public function getCustomNavigation(Document $documentDocument $startNode)
  42.         {
  43.             $navigation $this->navigationHelper->build([
  44.                 'active' => $document,
  45.                 'root' => $startNode,
  46.                 'pageCallback' => function ($page$document) {
  47.                     $page->setCustomSetting('navigationItemIcon'$document->getProperty('navigation-item-icon'));
  48.                     $page->setCustomSetting('navigationItemVirtual'$document->getProperty('navigation-item-virtual'));
  49.                     //$page->setCustomSetting('navigationHideMobile', $document->getProperty('navigation-hide-mobile'));
  50.                 }
  51.             ]);
  52.             return $navigation;
  53.         }
  54.     }