Link
Represents a single navigational link, which may point to a product, category, page, article, or an external URL. Links can be nested to form hierarchical menus.
Type Definition
type Link {
levels: Int
links: [Link]
title: String
type: String
url: String
target: String
product: Product
productGroup: ProductGroup
page: Page
article: Article
}Fields
| Field | Type | Nullable | Description | Related Type |
|---|---|---|---|---|
| levels | Int | Yes | The maximum depth of nested child links below this link. | — |
| links | [Link] | Yes | The list of child links for this link. Each child link can itself have further children. | Link |
| title | String | Yes | The display name of the link, typically shown as the link’s label in navigation components. | — |
| type | String | Yes | The type of object this link points to, such as ‘product’, ‘category’, ‘page’, or ‘article’. | — |
| url | String | Yes | The URL that this link points to. This can be an internal or external address. | — |
| target | String | Yes | The target attribute for the link, indicating how the link should be opened (e.g., in a new tab). | — |
| product | Product | Yes | The product object associated with this link, if the link points to a product. | Product |
| productGroup | ProductGroup | Yes | The category object associated with this link, if the link points to a category. | ProductGroup |
| page | Page | Yes | The page object associated with this link, if the link points to a page. | Page |
| article | Article | Yes | The article object associated with this link, if the link points to an article. | Article |
Relationships
- links: Represents child links nested under this link, enabling hierarchical navigation menus.
- product: If the link points to a product, this field provides the associated
Productobject. - productGroup: If the link points to a category, this field provides the associated
ProductGroupobject. - page: If the link points to a page, this field provides the associated
Pageobject. - article: If the link points to an article, this field provides the associated
Articleobject.
These relationships allow traversal from a navigation link to the detailed object it references.
Usage Examples
Basic Query
Fetch the top-level link titles and their URLs:
{
links {
title
url
}
}Field Selection
Retrieve detailed information about a link including its type, target, and associated product if available:
{
links {
title
type
url
target
product {
id
name
price
}
}
}Nested Queries
Fetch a hierarchical menu with up to two levels of nested links, including titles and URLs:
{
links {
title
url
levels
links {
title
url
links {
title
url
}
}
}
}Filtering and Sorting
Since the Link type itself does not define filtering or sorting arguments, these operations should be applied at the query root or connection level where links are retrieved. For example, if a query field supports filtering links by type or sorting by title, that would be specified there.
Below is a hypothetical example assuming a menuLinks query supports filtering by type and sorting by title:
{
menuLinks(filter: { type: "product" }, sort: TITLE_ASC) {
title
url
type
}
}Note: Replace menuLinks and filter/sort arguments with actual query fields and arguments as defined in your schema.
Implements
The Link type does not implement any interfaces.
Connections
The links field provides a recursive connection to child Link objects, enabling the construction of nested navigation structures.
Related Types
- Product: Represents a product linked from this navigation item.
- ProductGroup: Represents a category or product group linked from this navigation item.
- Page: Represents a page linked from this navigation item.
- Article: Represents an article linked from this navigation item.
- Link: The same type used for nested child links.
Best Practices
- Use the
levelsfield to control the depth of nested links returned, preventing overly large responses. - When rendering navigation menus, prefer querying only necessary fields (
title,url,type) to optimize performance. - Leverage the
typefield to conditionally render links differently based on their target (e.g., product links vs external URLs). - Use the
targetfield to determine whether links should open in a new tab or the same window. - For large menus, consider paginating or lazy-loading nested links if supported by the query root.
Notes
- The
Linktype supports optional fields; always check for nullability in your client code to avoid runtime errors. - Recursive nesting via the
linksfield can lead to deep hierarchies; be mindful of query complexity and response size. - The API currently requires no authentication, but this may change in future versions. Plan your integration accordingly.
- No computed or derived fields are defined on
Link; all fields reflect stored data. - No field arguments are defined on
Linkfields. - When accessing related objects (
product,productGroup,page,article), ensure to select only the fields you need to minimize payload size.
For all queries, use the endpoint:
https://www.mystoreurl.com/graphql/0.8.0and handle errors gracefully to ensure a robust integration.