Node
A Node object represents a single item in a navigation menu tree — a link, a linked Craft element, or a structural item such as a group or Dynamic node. When you work with nodes in Twig or PHP, you are usually dealing with a verbb\navigation\elements\Node object.
Properties
Type: int|null
Node element ID
Type: int|null
Linked Craft element ID (element-backed nodes)
Type: craft\base\ElementInterface|null
Linked Craft element — lazy-loaded; use withLinkedElements() on the query to batch-load
Type: int|null
Parent menu ID
Type: verbb\navigation\elements\Menu|null
Parent Menu element — use withMenu() on the query to batch-load
Type: string|null
Full URL (linked element or custom)
Type: string
URI portion relative to the site
Type: string|null
Node title
Type: string|null
Node type class name (e.g. verbb\navigation\nodetypes\Entry)
Type: string|null
CSS classes string
Type: array
Table of { attribute, value } rows
Type: string|null
Per-site suffix (anchor path, query string)
Type: bool
Open in new window
Type: string
_blank or empty string
Element status
Type: craft\elements\db\ElementQueryInterface|craft\elements\ElementCollection
Child nodes — wired in memory when hierarchy is enabled
Type: int|null
Structure level
Type: int|null
Node site variant
Node custom fields (on the menu’s node field layout) are available by handle like any Craft element.
Active State
Returns: bool
Exact URL match
Returns: bool|null
Current, path-section, or has active descendant
Returns: bool
Descendant nav node is current (bool)
Returns: verbb\navigation\models\NodeActiveState
Underlying state object
Methods
Returns: string
HTML tag for this node type (a, span, …)
Display name for the node type
Returns: Twig\Markup|null
Full HTML anchor (or appropriate tag) with title
Returns: Twig\Markup
Rendered attribute string for custom markup
Returns: bool
Element-backed node
Returns: bool
Custom URL node
Returns: bool
Passive (non-link) node
Returns: bool
Site node
Returns: bool
Group/column structural node
linkAttributes
<a {{ node.linkAttributes({
class: 'nav-link',
}) }}>{{ node.title }}</a>Merges node classes, target, rel, and custom attributes with any extras you pass.
customAttributes
This property contains the authored { attribute, value } rows. Use linkAttributes when rendering them into HTML so Navigation evaluates the values and applies its supported attribute rules.
Linked Element Fields
{% if node.element %}
{{ node.element.someFieldHandle }}
{% endif %}Use withLinkedElements() on the parent query to avoid N+1 loads.