-
-
Notifications
You must be signed in to change notification settings - Fork 35
/
AlternateLanguageLinks.fusion
35 lines (30 loc) · 1.72 KB
/
AlternateLanguageLinks.fusion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
prototype(Neos.Seo:AlternateLanguageLinks) < prototype(Neos.Fusion:Component) {
@if.onlyRenderWhenInLiveWorkspace = ${!renderingMode.isEdit}
@if.languageDimensionExists = ${this.dimension}
@if.hasNoForeignCanonical = ${String.isBlank(q(this.node).property('canonicalLink'))}
node = ${documentNode}
dimension = 'language'
excludedPresets = ${Configuration.setting('Neos.Seo.alternateLanguageLinks.excludedDimensionsPresets')}
# The hreflang value needs to have a format like 'en-US', therefore internally used values
# like 'en_US' will be modified to match.
dimensionValueSeparator = '_'
renderer = Neos.Fusion:Loop {
items = ${Neos.Dimension.allDimensionValues(site, props.dimension)}
itemName = 'dimensionValue'
# First root value is used as default language
iterationName = 'iteration'
itemRenderer = Neos.Fusion:Component {
@if.variantExists = ${this.node}
@if.indexingAllowed = ${q(this.node).property('metaRobotsNoindex') != true}
@if.notExcluded = ${!props.excludedPresets || Array.indexOf(props.excludedPresets, dimensionValue.value) == -1}
node = ${Neos.Dimension.findVariantInDimension(props.node, props.dimension, dimensionValue)}
dimensionValueSeparator = ${props.dimensionValueSeparator}
renderer = afx`
<Neos.Seo:AlternateLanguageLink @key="defaultLink" node={props.node} hreflang="x-default"
@if.isFirst={iteration.isFirst}/>
<Neos.Seo:AlternateLanguageLink node={props.node}
hreflang={String.replace(dimensionValue.value, props.dimensionValueSeparator, '-')}/>
`
}
}
}