carbon / condition
This package provides some fusion helper for making writing conditions (`@if`) easier.
Fund package maintenance!
jonnitto
www.paypal.me/Jonnitto/20eur
Installs: 53 988
Dependents: 5
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 0
Open Issues: 0
Type:neos-carbon
Requires
- neos/neos: ~5.3 || ~7.0 || ~8.0
README
Carbon.Condition Package for Neos CMS
This package provides some fusion helper for making writing conditions (@if
) easier.
You can look at a real world example here
Installation
Carbon.Condition
is available via packagist. Add "carbon/condition" : "^2.0"
to the require section of your composer.json or run composer require carbon/condition
.
Carbon.Condition:Case
Link to the fusion file
Return true if a content element or a node type definition is on a document.
Example usage:
value = 'FooBar' value.@if.render = Carbon.Condition:Case { content { nodeType = 'Foo.Bar:NodeType' propertyFilter = '[row != "one"]' } }
In the example above the value FooBar
gets only rendered if a content node type
Foo.Bar:NodeType
with the property row
set not to one
is on the current document.
value = 'FooBar' value.@if.render = Carbon.Condition:Case { document.nodeType = 'Foo.Bar:MixinNodeType' }
In the example above the value FooBar
gets only rendered if the document has
the mixin Foo.Bar:MixinNodeType
.
You can also mix the conditions:
value = 'FooBar' value.@if.render = Carbon.Condition:Case { content { nodeType = 'Foo.Bar:MixinLightbox' propertyFilter = '[lightbox=true]' } document { nodeType = 'Foo.Bar:MixinLightbox' propertyFilter = '[lightbox=true]' } }
In the example above the value FooBar
gets only rendered if the document or a
content element has the mixin Foo.Bar:MixinLightbox
and the property lightbox
set to true
.
Default values
node = ${documentNode} enabled = true content { collection = '[instanceof Neos.Neos:ContentCollection]' nodeType = null propertyFilter = '' filter = ${this.nodeType ? ('[instanceof ' + this.nodeType + ']' + this.propertyFilter) : null} } document { nodeType = null propertyFilter = '' filter = ${this.nodeType ? ('[instanceof ' + this.nodeType + ']' + this.propertyFilter) : null} } context { backend = true live = false }
Overview of properties:
Property | Description |
---|---|
node |
The node as starting point for the query |
enabled |
If set to false , it return always false |
content.nodeType |
Set the node type |
content.propertyFilter |
This string gets appended to the content.filter . Example usage see above |
content.collection |
The filter string for the content collection. Normally you don't need to change this property. |
content.filter |
The filter string for the content element. Normally you don't need to change this property. |
document.nodeType |
Set the node type |
document.propertyFilter |
This string gets appended to the document.filter . Example usage see above |
document.filter |
The filter string for the document element. Normally you don't need to change this property. |
context.backend |
If set to true , the value is always return true in backend context |
context.live |
If set to true , the value is always return true in live context |
Carbon.Condition:Properties
Link to the fusion file
Helper for checking if the element should get rendered or not. Example usage:
@if.render = Carbon.Condition:Properties { properties = 'title,image' }
In the example above the condition is only get true
if the node
has title
and image
set.
Default values
node = ${node} properties = null operator = 'AND' context { backend = true live = false }
Overview of properties:
Property | Default value | Description |
---|---|---|
node |
${node} |
The node as starting point for the query |
properties |
false |
Set the needed properties as comma seperated string. You can mix string and object based properties. |
operator |
'AND' |
If set to 'AND' or '&&' , all properties have to be set. If it set to 'OR' or '||' only one property is needed |
context.backend |
true |
If set to true , the value is always return true in backend context |
context.live |
false |
If set to true , the value is always return true in live context |