Tag field Content relations Query Type¶
This Query Type is used to build queries that fetch Content tag field relations from selected tag fields of a given Content.
Hint
Tag field Content relations are Content items tagged with a tag contained in a tag field of a given Content.
Hint
This query type assumes Netgen’s TagsBundle is used for tagging functionality.
Identifier | SiteAPI:Content/Relations/TagFields |
Own conditions | |
Common Content conditions | |
Common query parameters |
Examples¶
Your project is a web shop, where Content of type product
is tagged with tags that define
product’s market. Specific tag field named market
is used for that. For example, you could have
a wireless keyboard product tagged with market tag components
. Various other Content is also
tagged with that tag, for example we could have files and articles using that same tag.
On the full view for Content of type product
, fetch articles from the same market, sort them
by their publication date and paginate them by 10 per page using URL query parameter page
:
ezpublish:
system:
frontend_group:
ngcontent_view:
full:
product:
template: '@ezdesign/content/full/product.html.twig'
match:
Identifier\ContentType: product
queries:
market_articles:
query_type: SiteAPI:Content/Relations/TagFields
max_per_page: 10
page: '@=queryParam("page", 1)'
parameters:
relation_field: market
content_type: article
sort: published desc
{% set articles = ng_query( 'market_articles' ) %}
<h3>Related market articles</h3>
<ul>
{% for article in articles %}
<li>{{ article.name }}</li>
{% endfor %}
</ul>
{{ pagerfanta( articles, 'twitter_bootstrap' ) }}
Own conditions¶
content
¶
Defines the source (from) relation Content, which is the one containing tag fields.
Note
This condition is required. It’s also automatically set to the Content
instance resolved by
the view builder if the query is defined in the view builder configuration.
- value type:
Content
- value format:
single
- operators: none
- target: none
- required:
true
- default: not defined
Examples:
# this is also automatically set when using from view builder configuration
location: '@=content'
# fetch relations from Content's main Location parent Location's Content
location: '@=content.mainLocation.parent.content'
# fetch relations from Content's main Location parent Location's parent Location's Content
location: '@=content.mainLocation.parent.parent.content'
exclude_self
¶
Defines whether to include Content defined by the content
condition in the result set.
- value type:
boolean
- value format:
single
- operators: none
- target: none
- required:
false
- default:
true
Examples:
# do not include the source relation Content, this is also the default behaviour
exclude_self: true
# include the source relation Content
exclude_self: false
relation_field
¶
Defines Content fields to take into account for determining relations.
- value type:
string
- value format:
single
,array
- operators: none
- target: none
- required:
true
- default: not defined
Examples:
relation_field: appellation
relation_field: [head, heart, base]
Common Content conditions¶
content_type
¶
Defines ContentType of the Content by the identifier.
- value type:
string
- value format:
single
,array
- operators:
eq
,in
- target:
string
ContentType identifier - required:
false
- default: not defined
Examples:
# identical to the example below
content_type: article
content_type:
eq: article
# identical to the example below
content_type: [image, video]
content_type:
in: [image, video]
field
¶
Defines conditions on Content fields.
- value type:
integer
,string
,boolean
- value format:
single
,array
- operators:
eq
,in
,gt
,gte
,lt
,lte
,between
,like
,contains
- target:
string
Field identifier - required:
false
- default: not defined
Examples:
field:
date_field:
not:
gt: 'today +5 days'
price:
between: [100, 200]
not: 155
publication_date
¶
Defines the publication date of the Content as a timestamp.
- value type:
integer
- value format:
single
,array
- operators:
eq
,in
,gt
,gte
,lt
,lte
,between
- target: none
- required:
false
- default: not defined
Examples:
# identical to the example below
publication_date: 1535117737
depth:
eq: 1535117737
# identical to the example below
publication_date: [1435117737, 1535117737]
publication_date:
in: [1435117737, 1535117737]
# multiple operators are combined with logical AND
publication_date:
gt: '29 June 1991'
lte: '5 August 1995'
publication_date:
gt: 'today'
publication_date:
between: ['today', '+1 week 2 days 4 hours 2 seconds']
section
¶
Defines Section of the Content by the identifier.
- value type:
string
- value format:
single
,array
- operators:
eq
,in
- target: none
- required:
false
- default: not defined
Examples:
# identical to the example below
section: standard
section:
eq: standard
# identical to the example below
section: [standard, restricted]
section:
in: [standard, restricted]
state
¶
Defines ObjectState of the Content by the ObjectStateGroup and ObjectState identifiers.
Note
Content can only exist in single ObjectState from the same ObjectStateGroup.
- value type:
string
ObjectState identifier - value format:
single
- operators:
eq
- target:
string
ObjectStateGroup identifier - required:
false
- default: not defined
Examples:
# identical to the example below
state:
ez_lock: not_locked
state:
ez_lock:
eq: not_locked
# multiple states are combined with logical AND
# identical to the example below
state:
ez_lock: locked
approval: rejected
state:
ez_lock:
eq: locked
approval:
eq: rejected
Common query parameters¶
limit
¶
Defines the maximum number of items to return.
Note
This parameter will not be used if you execute the query from Twig using ng_query
function.
In that case Pargerfanta
pager is used with semantic parameters page
and max_per_page
.
To execute the query directly use ng_raw_query
Twig function instead.
- value type:
integer
- value format:
single
- required:
false
- default:
25
Examples:
limit: 10
offset
¶
Defines the offset for search hits, used for paging the results.
Note
This parameter will not be used if you execute the query from Twig using ng_query
function.
In that case Pargerfanta
pager is used with semantic parameters page
and max_per_page
.
To execute the query directly use ng_raw_query
Twig function instead.
- value type:
integer
- value format:
single
- required:
false
- default:
0
Examples:
offset: 20
sort
¶
- value type:
string
,SortClause
- value format:
single
,array
- required:
false
- default: not defined
Here you can use any SortClause implementation. However, if you define the query in the view
configuration, you won’t be able to instantiate the SortClause there. For that reason we provide a
way to define the sort clause as a string instead. We this format a subset of commonly used
SortClauses is supported. Sort direction is defined as asc
for ascending and desc
for
descending. In can be omitted, in which case it will default to asc
.
Strings can be used to define multiple sort clauses through an array of definitions:
sort:
- depth asc
- modified desc
Following sort clauses are available through string definition:
Location depth¶
String depth
enables sorting by Location’s depth:
sort: depth
sort: depth asc
sort: depth desc
Content Field¶
String in form of of field/[content_type]/[field]
enables sorting by any Content Field. For
example by Field with identifier title
in ContentType with identifier article
:
sort: field/article/title
sort: field/article/title asc
sort: field/article/title desc
Content modification date¶
String modified
enables sorting by the Content modification date:
sort: modified
sort: modified asc
sort: modified desc
Content name¶
String name
enables sorting by the Content name:
sort: name
sort: name asc
sort: name desc
Location priority¶
String priority
enables sorting by the Location priority:
sort: priority
sort: priority asc
sort: priority desc
Content publication date¶
String published
enables sorting by the Content publication/creation date:
sort: published
sort: published asc
sort: published desc