ISO 16933:2007/Cor 1:2008
Glass in building — Explosion-resistant security glazing — Test and classification for arena air-blast loading — Technical Corrigendum 1
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> getProductCategories(channelId, product.productId) [in template "34352066712900#33336#null" at line 5, column 30]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign categoriesProduct = getProduc... [in template "34352066712900#33336#null" at line 5, column 1]
----
1<#assign channelResponse = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels?filter=name eq 'Aenor Tienda'")>
2<#assign channel = channelResponse.items[0]>
3<#assign channelId = channel.id>
4<#assign product = getProduct(channelId, CPDefinition_cProductId.getData())>
5<#assign categoriesProduct = getProductCategories(channelId, product.productId) />
6<#assign hasProductCategoriaTipoEntidadLibro = isVocabularyNameIntoCategories(categoriesProduct, 'entity type', 'libro') />
7<#assign hasProductCategoriaTipoEntidadNorma = isVocabularyNameIntoCategories(categoriesProduct, 'entity type', 'norma') />
8<#assign hasProductCategoriaTipoEntidadColeccionTematica = isVocabularyNameIntoCategories(categoriesProduct, 'entity type', 'coleccion tematica') />
9<#assign banner = getBanner(product.externalReferenceCode)>
10
11<#if banner?? && banner?has_content>
12<section class="hero-banner">
13 <div class="hero-content">
14 <#if banner.bannerTitle?? && banner.bannerTitle?has_content>
15 <h3>${banner.bannerTitle}</h3>
16 </#if>
17 <#if banner.bannerDescription?? && banner.bannerDescription?has_content>
18 <div class="hero-description">
19 ${banner.bannerDescription}
20 </div>
21 </#if>
22 <#if banner.showBannerButton>
23 <a href="${banner.bannerUrlButton}" class="btnae-- btnae--primary animated-button">${banner.bannerTextButton}</a>
24 </#if>
25 </div>
26
27 <div class="hero-image">
28 <#if banner.bannerUrlImage?? && banner.bannerUrlImage?has_content>
29 <img
30 src="${banner.bannerUrlImage}"
31 >
32 </#if>
33 </div>
34</section>
35
36<#-- Functions -->
37<#function getProductCategories channelId productId>
38 <#return restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/${channelId}/products/${productId}/categories?sort=vocabulary").items>
39</#function>
40
41<#function isVocabularyNameIntoCategories categories vocabulary name>
42 <#assign found = false />
43
44 <#if categories?has_content && vocabulary?has_content && name?has_content>
45
46 <#assign vocabNorm = normalize(vocabulary) />
47 <#assign nameNorm = normalize(name) />
48
49 <#list categories as category>
50 <#if !found>
51 <#assign catVocabNorm = normalize(category.vocabulary) />
52 <#assign catNameNorm = normalize(category.name) />
53
54 <#if catVocabNorm == vocabNorm && catNameNorm == nameNorm>
55 <#assign found = true />
56 </#if>
57 </#if>
58 </#list>
59
60 </#if>
61
62 <#return found>
63</#function>
64
65<#function normalize text onlyAccents = false>
66 <#-- proteger null -->
67 <#if !text?has_content>
68 <#return "">
69 </#if>
70
71 <#assign t = text />
72
73 <#-- quitar acentos -->
74 <#assign t = t
75 ?replace("á","a")?replace("é","e")?replace("í","i")
76 ?replace("ó","o")?replace("ú","u")?replace("ü","u")
77 ?replace("ñ","n")
78 ?replace("Á","A")?replace("É","E")?replace("Í","I")
79 ?replace("Ó","O")?replace("Ú","U")?replace("Ü","U")
80 ?replace("Ñ","N")
81 />
82
83 <#-- si NO es solo acentos, normalización completa -->
84 <#if !onlyAccents>
85 <#assign t = t?lower_case />
86 <#assign t = t?trim />
87 <#assign t = t?replace("\\s+", " ", "r") />
88 </#if>
89
90 <#return t>
91</#function>
92
93<#function getProduct channelId productId>
94 <#return restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/${channelId}/products/${productId}")>
95</#function>
96
97<#function getBanner erc>
98 <#if hasProductCategoriaTipoEntidadNorma>
99 <#return getStandardBanner(erc)>
100 </#if>
101 <#if hasProductCategoriaTipoEntidadLibro>
102 <#return getBookBanner(erc)>
103 </#if>
104 <#if hasProductCategoriaTipoEntidadColeccionTematica>
105 <#return getThematicCollectionBanner(erc)>
106 </#if>
107</#function>
108
109<#function getStandardBanner erc>
110 <#assign response = restClient.get("/c/standardbanners/?filter=standardId eq '${erc}'&fields=bannerTitle,bannerDescription,showBannerButton,bannerTextButton,bannerUrlButton,bannerUrlImage")!{} />
111 <#assign items = response.items![] />
112 <#return (items?size > 0)?then(items[0], {}) />
113</#function>
114
115<#function getBookBanner erc>
116 <#assign response = restClient.get("/c/bookbanners/?filter=bookId eq '${erc}'&fields=bannerTitle,bannerDescription,showBannerButton,bannerTextButton,bannerUrlButton,bannerUrlImage")!{} />
117 <#assign items = response.items![] />
118 <#return (items?size > 0)?then(items[0], {}) />
119</#function>
120
121<#function getThematicCollectionBanner erc>
122 <#assign response = restClient.get("/c/thematiccollectionbanners/?filter=thematicColectionId eq '${erc}'&fields=bannerTitle,bannerDescription,showBannerButton,bannerTextButton,bannerUrlButton,bannerUrlImage")!{} />
123 <#assign items = response.items![] />
124 <#return (items?size > 0)?then(items[0], {}) />
125</#function>
126
127<style>
128.hero-banner {
129 display: flex;
130 align-items: center;
131 justify-content: space-between;
132 gap: 48px;
133 background: #f5f7fb;
134 border-radius: 24px;
135 overflow: hidden;
136}
137
138.hero-content {
139 flex: 2;
140 max-width: 70%;
141 padding-left: 2rem;
142}
143
144.hero-content h3 {
145 font-size: 1.25rem;
146}
147
148.hero-content .hero-description {
149 margin: 0 0 12px;
150 font-size: 0.75rem;
151 line-height: 1.6;
152 color: #4b5563;
153}
154
155.hero-content a {
156 font-size: 0.75rem;
157}
158
159.hero-image {
160 flex: 1;
161 display: flex;
162 justify-content: center;
163}
164
165.hero-image img {
166 width: 100%;
167 aspect-ratio: 2 / 1;
168 object-fit: cover;
169 border-radius: 0 0 20px;;
170 display: block;
171}
172
173/* Responsive */
174@media (max-width: 768px) {
175 .hero-banner {
176 flex-direction: column;
177 padding: 32px 24px;
178 gap: 32px;
179 text-align: center;
180 }
181
182 .hero-content {
183 max-width: 100%;
184 margin: 0;
185 }
186
187 .hero-image img {
188 max-width: 100%;
189 aspect-ratio: 16 / 10;
190 border-radius:0;
191 }
192}
193</style>
194</#if>
| Fecha edición: |
2008-05-28
En Vigor
|
|---|---|
| Idiomas disponibles: | Inglés |
| ICS: | 81.040.20 - Vidrio para la construcción |
| CTN: | 53408 |
|
Anulaciones Normas |
|
|
Correcciones Normas |
Modifica/corrige a ISO 16933:2007 |










