将嵌套链接添加到Pimcore 5导航菜单

时间:2017-11-09 16:49:01

标签: navigation hierarchy pimcore

根据Pimcore 5文档,您可以使用以下例程手动将导航链接添加到菜单:

$home = Document::getById(1);

$navigation->addPage([
  'order' => -1, // put it in front of all the others
  'uri' => '/', //path to homepage
  'label' => $home->getProperty('navigation_name'), //visible label
  'title' => $home->getProperty('navigation_title'), //tooltip text
  'active' => $this->document->id == $home->id //active state
]);

然而,我无法辨别的是如何添加链接到导航菜单并定义新添加的链接应嵌套的父链接。

1 个答案:

答案 0 :(得分:0)

我在Pimcore 5 github回购中做了一些挖掘:

https://github.com/pimcore/pimcore/blob/master/pimcore/lib/Pimcore/Navigation/Page.php

我发现当您使用上面指定的方法添加页面时,您可以在数组中包含一个pages条目,该数组嵌套了您要在该链接中嵌套的链接。

例如:

<?php

  // Manually add navigation links
  // to a Pimcore\Navigation\Container object
  $NavigationContainer->addPage(
    // Add a top-level link at the front (order = -1)
    array(
      'order' => -1,
      'uri' => '/test',
      'label' => 'Test',
      'title' => 'Test',
      'pages' => array(
        // Add a secondary-level link...
        array(
          'order' => 0,
          'uri' => '/test/a',
          'label' => 'Test A',
          'title' => 'Test A',
          'pages' => array(
            // Add a tertiary-level link...
            array(
              'order' => 0,
              'uri' => '/test/a/1',
              'label' => 'Test A1',
              'title' => 'Test A1'
            ),
            // Add a tertiary-level link...
            array(
              'order' => 1,
              'uri' => '/test/a/2',
              'label' => 'Test A2',
              'title' => 'Test A2'
            )
          )
        ),
        // Add a secondary-level link...
        array(
          'order' => 0,
          'uri' => '/test/b',
          'label' => 'Test B',
          'title' => 'Test B'
        )
      )
    )
  );

这会将以下内容添加到导航HTML中,假设您没有使用导航部分创建自定义渲染:

<li>
  <a title="Test" href="/test">Test</a>
  <ul>
    <li>
      <a title="Test A" href="/test/a">Test A</a>
      <ul>
        <li><a title="Test A1" href="/test/a/1">Test A1</a></li>
        <li><a title="Test A2" href="/test/a/2">Test A1</a></li>
      </ul>
    </li>
    <li><a title="Test B" href="/test/b">Test B</a></li>
  </ul>
</li>