Content queries¶
With content queries you can find and render specific content according to criteria that you define.
You can use queries to list or embed content items, such as:
- children in a folder
- related articles
- most recent blog posts
- recommended products
Content queries use the built-in Query controller which simplifies querying. For more complex cases, you can build custom controllers.
Query types¶
The Query controller offers a set of built-in Query types. You can use them in the content view configuration, or in the content query field.
You can also write custom Query types for the cases that aren't covered by the built-in ones.
Query type configuration¶
To use a Query type, select the Query controller (ibexa_query
) in the content view configuration and select the Query type under params.query.query_type
:
1 2 3 4 5 6 7 8 9 10 11 |
|
Use one of the following Query controller methods:
locationQueryAction
runs a location SearchcontentQueryAction
runs a content SearchcontentInfoQueryAction
runs a ContentInfo searchpagingQueryAction
returns aPagerFanta
object and can be used to quickly paginate query results
See the Search documentation page for more details about different types of search.
All Query types take the following parameters:
query_type
is the name of the Query type to use.parameters
can include:- arbitrary values
- expressions based on the
content
,location
andview
variables. For example,@=location.id
is evaluated to the current Location's ID.
assign_results_to
declares the Twig variable that contains the search results.
Tip
Search results are a SearchResult
object, which contains SearchHit
objects.
To get the content or Locations that are in search results, you access the valueObject
of the SearchHit
.
Pagination¶
To paginate the results of a query, use the pagingQueryAction
of the Query controller and assign a limit per page in params.query.limit
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Use the pagerfanta
function to render pagination controls:
1 2 3 4 5 6 7 8 |
|
Content query field¶
The Content query field is a field that defines a query. The results of the query are available in the field value.
Query type¶
When adding the field to a content type definition, select the Query type in the Query type dropdown. All Query types in the application are available, both built-in and custom ones.
Returned types¶
Select the content type of items you want to return in the Returned type dropdown.
To take it into account, your Query type must filter on the content type.
Provide the selected content type through the returnedType
variable:
1 |
|
Pagination¶
Select Enable pagination and set the number of items per page to paginate the results.
You can override the pagination settings from field definition by setting the enablePagination
, disablePagination
or itemsPerPage
parameters when rendering the content query field:
1 2 3 4 5 6 |
|
You can also define an offset for the results. Provide the offset in the Query type, or in parameters:
1 |
|
If pagination is disabled and an offset value is defined, the query's offset is added to the offset calculated for a page.
For example, with offset
5 and itemsPerPage
10, the first page starts with 5, the second page starts with 15, and so on.
Without offset defined, pagination defines the starting number for each page.
For example, with itemsPerPage
10, first page starts with 0, second page starts with 10, and so on.
Parameters¶
The following variables are available in parameter expressions:
returnedType
- the identifier of the content type selected in the Returned type dropdowncontent
- the current content itemlocation
- the current Location of the content itemmainLocation
- the main Location of the content itemcontentInfo
- the current content item's ContentInfo
Content view configuration¶
To render a content query field, in the content view configuration, use the content_query_field
view type:
1 2 3 4 5 6 7 |
|
The identifier of the content query field must be matched by using the '@Ibexa\FieldTypeQuery\ContentView\FieldDefinitionIdentifierMatcher'
matcher.
Query results are provided to the template in the items
variable.
See List content for an example of using the content query field.