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

"nodeClasses" => [
    '' => '---',
    'nav nav-primary' => "Primary",
    'nav nav-highlight' => 'Highlight'
]