PHP code example of studioespresso / craft-navigate
1. Go to this page and download the library: Download studioespresso/craft-navigate library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
studioespresso / craft-navigate example snippets
use studioespresso\navigate\Navigate;
use studioespresso\navigate\models\NavigationModel;
$nav = new NavigationModel();
$nav->title = 'Main menu';
$nav->handle = 'mainMenu'; // unique, validated as a handle
$nav->levels = 2; // 1 = flat; > 1 allows nested children
$nav->allowedSources = '*'; // '*' or a JSON array e.g. '["entry","url"]'
$nav->enabledSiteGroups = '*'; // '*' or a JSON array of site-group ids
$nav->adminOnly = false;
Navigate::$plugin->navigate->saveNavigation($nav); // returns bool (not the model)
// saveNavigation() returns a boolean, so re-fetch to get the new id:
$navId = Navigate::$plugin->navigate->getNavigationByHandle('mainMenu', false)->id;
use studioespresso\navigate\models\NodeModel;
// A URL item
$node = new NodeModel();
$node->navId = $navId;
$node->siteId = Craft::$app->sites->getPrimarySite()->id;
$node->name = 'Home';
$node->type = 'url';
$node->url = '/';
Navigate::$plugin->nodes->save($node);
// An element item (entry / asset / category) — url resolves from the element
$node = new NodeModel();
$node->navId = $navId;
$node->siteId = $siteId;
$node->name = 'About us';
$node->type = 'element';
$node->elementType = 'entry'; // 'entry' | 'asset' | 'category'
$node->elementId = 42;
Navigate::$plugin->nodes->save($node);
// A heading (grouping label; needs levels > 1 to be useful)
$node = new NodeModel();
$node->navId = $navId;
$node->siteId = $siteId;
$node->name = 'Products';
$node->type = 'heading';
Navigate::$plugin->nodes->save($node);
$tree = Navigate::$plugin->nodes->getNodesForRender('mainMenu', $siteId); // parsed for output
$nodes = Navigate::$plugin->nodes->getNodesByNavIdAndSiteById($navId, $siteId); // raw models