1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- namespace Grav\Plugin;
-
- use Grav\Common\Grav;
-
- class Breadcrumbs
- {
-
- /**
- * @var array
- */
- protected $breadcrumbs;
- protected $config;
-
- /**
- * @param $config
- */
- public function __construct($config)
- {
- $this->config = $config;
- }
-
- /**
- * Get all items in breadcrumbs.
- *
- * @return array
- */
- public function get()
- {
- if (!$this->breadcrumbs) {
- $this->build();
- }
- return $this->breadcrumbs;
- }
-
- /**
- * Build breadcrumbs.
- *
- * @internal
- */
- protected function build()
- {
- $hierarchy = array();
- $grav = Grav::instance();
- $current = $grav['page'];
-
- while ($current && !$current->root()) {
- $hierarchy[$current->url()] = $current;
- $current = $current->parent();
- }
-
- // Page cannot be routed.
- if (!$current) {
- $this->breadcrumbs = array();
- return;
- }
-
- if ($this->config['include_home']) {
- $home = $grav['pages']->dispatch('/');
- if ($home && !array_key_exists($home->url(), $hierarchy)) {
- $hierarchy[] = $home;
- }
- }
-
-
- $this->breadcrumbs = array_reverse($hierarchy);
- }
- }
|