 
 
 
 
 
 , (*1)
, (*1)
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, (*2)
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., (*3)
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:, (*4)
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., (*5)
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., (*6)
You can also mix the conditions:, (*7)
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., (*8)
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 alwaysfalse | 
|
| 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 returntruein backend context | 
| context.live | If set to true, the value is always returntruein live context | 
Carbon.Condition:Properties
Link to the fusion file
Helper for checking if the element should get rendered or not. Example usage:, (*9)
@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., (*10)
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 returntruein backend context | 
| context.live | false | If set to true, the value is always returntruein live context |