An error has occurred when reading existing sub-variable "iterator"; see cause exception! The type of the containing value was: extended_hash+string (org.json.JSONObject wrapped into f.e.b.StringModel) ---- FTL stack trace ("~" means nesting-related): - Failed at: #list images.iterator() as imgObj [in template "227222" in macro "imageZoom" at line 359, column 9] - Reached through: @imageZoom id=variant.id cssClasses="... [in template "20116#20152#253374" at line 94, column 25] ----
1<#if cmsEntity?has_content>
2<#include "${templatesPath}/227222" /> <@sectionHeader title="${title}" menuTitle="${menuTitle}" cssClasses="bg-white" id="discontinued-section-main"/>
3<#assign ns = themeDisplay.portletDisplay.getId() >
4
5<#assign iconSetPath ="/o/genelec-site-theme/images/icons/symbol-defs.svg">
6<#if cmsEntity.getField(profile, "/entity/relationships/variants")?has_content>
7 <#assign variants = cmsEntity.getField(profile, "/entity/relationships/variants") >
8</#if>
9<#if cmsEntity.getField(profile, "/entity/fields")?has_content>
10 <#assign fields = cmsEntity.getField(profile, "/entity/fields") >
11</#if>
12<#if cmsEntity.getLocalizedField(profile, "/entity/fields/title")?has_content>
13 <#assign productTitle = cmsEntity.getLocalizedField(profile, "/entity/fields/title")>
14</#if>
15<#if cmsEntity.getField(profile, "/entity/relationships/awards")?has_content>
16 <#assign awards = cmsEntity.getField(profile, "/entity/relationships/awards") >
17</#if>
18
19
20<#if cmsEntity.getLocalizedField(profile, "/entity/fields/content")?has_content >
21 <#assign content = cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/content"))>
22</#if>
23<#if cmsEntity.getField(profile, "/entity/fields/summary")?has_content >
24 <#assign summary = cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/summary"))>
25</#if>
26
27<#assign portalUrl = themeDisplay.getPortalURL() >
28<#assign currentURL = portalUrl + themeDisplay.getURLCurrent() >
29<@appendHTMLMetas currentURL cmsEntity "product" />
30
31 <div class="row">
32 <div class="col-lg-6">
33 <div class="product-page-heading">
34 <h1>${productTitle}</h1>
35 <#if cmsEntity.getLocalizedField(profile, "/entity/fields/subtitle")?has_content>
36 <h1 class="subtitle">${cmsEntity.getLocalizedField(profile, "/entity/fields/subtitle")}</h1>
37 </#if>
38 </div>
39 <div class="row justify-content-between">
40 <div class="col-lg-12 article-content">
41 <div class="product-page-intro">
42 <#if cmsEntity.getField(profile, "/entity/relationships/discontinuedProductReplacedBy")?has_content>
43 <#assign replacedBys = cmsEntity.getField(profile, "/entity/relationships/discontinuedProductReplacedBy")>
44 <#list replacedBys.iterator() as replacedBy>
45 <#assign replacedByName = localizeField(replacedBy.properties.title, profile.getCMSLangCode())>
46 <#if replacedBy?index == 0 && replacedBy?is_last>
47 <@liferay.language key="replaced-by"/> ${replacedByName}
48 <#elseif replacedBy?index == 0 && replacedBy?is_first>
49 <@liferay.language key="replaced-byMulti"/> ${replacedByName}<#sep>,
50 <#else>
51 ${replacedByName}<#sep>,
52 </#if>
53 </#list>
54 </#if>
55 </div>
56 </div>
57 </div>
58 <div class="row">
59 <div class="col-lg-12">
60 <p>
61 <#if awards?has_content>
62 <#list awards.iterator() as award>
63 <#assign awardIndex = award?index>
64 <#if !award.assets.isNull("image")>
65 <#assign awardImage = award.assets.image.url >
66 <a href="#/" onClick="openPopup(9)">
67 <@imageThumbnail src="${awardImage}" id="" cssClasses="award-img" thumbnail="awardImg" alt="${localizeField(award.properties.title, profile.getCMSLangCode())}"/>
68 </a>
69 </#if>
70 </#list>
71 <#if awardIndex gt -1>
72 <i class="award-icon default-icon icon-plus-sign" onClick="openPopup(9)" title="<@liferay.language key="more-info"/>"></i>
73 </#if>
74 </#if>
75 <p>
76 <hr>
77 </div>
78 </div>
79 <div class="row">
80 <div class="col-lg-12">
81 <#if summary?has_content>
82 <div class="product-page-intro">${summary}</div>
83 </#if>
84 <#if content?has_content>
85 <p>${content}</p>
86 </#if>
87 </div>
88 </div>
89 </div>
90 <#if variants?has_content>
91 <div class="col-lg-6">
92 <#list variants.iterator() as variant>
93 <#if variant?index = 0>
94 <@imageZoom
95 id=variant.id
96 cssClasses="zoom-gallery-slide active"
97 images=variant.relationships.images
98 carouselCss="discontinued-carousel owl-carousel owl-theme image-carousel-container"
99 zoomCss="MagicZoom discontinued-page-product-image"
100 videoCss="discontinued-section-video"
101 />
102 <#else>
103 <@imageZoom
104 id=variant.id
105 variantCss="variant-gallery"
106 cssClasses="zoom-gallery-slide active"
107 images=variant.relationships.images
108 carouselCss="discontinued-carousel owl-carousel owl-theme image-carousel-container"
109 zoomCss="MagicZoom discontinued-page-product-image"
110 videoCss="discontinued-section-video"
111 />
112 </#if>
113 </#list>
114 <#list variants.iterator() as variant>
115 <#if !variant.properties.isNull("colorCode")>
116 <#if variant?index == 0>
117 <div class="text-bold"><@liferay.language key="color-options"/></div>
118 </#if>
119 <#assign color = "${variant.properties.colorCode}">
120 <#if !variant.properties.isNull("sku")>
121 <#assign sku = variant.properties.sku>
122 <#else>
123 <#assign sku = "">
124 </#if>
125 <#if variant?index = 0>
126 <@variantChange id=variant.id checked="checked" color=color sku=sku/>
127 <#else>
128 <@variantChange id=variant.id color=color sku=sku/>
129 </#if>
130 </#if>
131 </#list>
132 </div>
133 </#if>
134 </div>
135 <@sectionFooter/>
136
137<#-- Popup -->
138<div id="theme-popup9" class="popup product-page-media">
139 <div class="close-button-container">
140 <span class="close" onClick="closePopup(9)"></span>
141 </div>
142 <div class="panel popup-content" id="popupContentAwards">
143 <div class="panel-body">
144
145 <h3 class="section-heading text-bolder">
146 ${productTitle}<br>
147 Awards
148 </h3>
149
150 <#if awards?has_content>
151 <div class="row">
152 <#list awards.iterator() as award>
153 <div class="col-12 col-md-6 col-xl-3 award-card">
154 <#if !award.assets.isNull("image")>
155 <#assign awardImage = award.assets.image.url >
156 <div class="aspect-ratio aspect-ratio-4-to-3">
157 <@imageThumbnail data="${awardImage}" id="" cssClasses="aspect-ratio-item-fluid aspect-ratio-item-center-middle lazy" thumbnail="awardImgPopup" alt="${localizeField(award.properties.title, profile.getCMSLangCode())}"/>
158 </div>
159 <#else>
160 <div class="aspect-ratio aspect-ratio-4-to-3">
161 </div>
162 </#if>
163 <p>
164 <span class="text-medium text-bolder">${localizeField(award.properties.title, profile.getCMSLangCode())}</span><br>
165 </p>
166 <p>
167 <span class="small">
168 <#if !award.properties.isNull("content")>
169 <#assign awardContent = cmsContentFormatterService.getMarkdown(localizeField(award.properties.content, profile.getCMSLangCode()))>
170 ${awardContent}
171 </#if>
172 </span>
173 </p>
174 </div>
175 </#list>
176 </div>
177 </#if>
178 </div>
179 </div>
180</div>
181
182<style>
183
184 .product-page-product-title {
185 font-weight: 600;
186 margin-bottom: 0;
187 }
188
189 .product-page-form {
190 margin-bottom: 15px;
191 }
192
193 .btn-product-page-buy {
194 width: 40%;
195 min-width: 250px;
196 }
197
198 .btn-bold {
199 border-width: 2px;
200 text-transform: uppercase;
201 font-weight: 800;
202 }
203
204 .buy-product-dropdown {
205 margin-left: -4px;
206 border-left: none;
207 padding: 0;
208 width: 11%;
209 height: 43px
210 }
211
212 .buy-product-dropdown h3 {
213 display: inline;
214 vertical-align: middle;
215 }
216
217 .buy-product-dropdown svg {
218 width: 20px;
219 line-height: .2;
220 vertical-align: middle;
221 }
222
223
224 .product-page-form input {
225 position: absolute;
226 opacity: 0;
227 cursor: pointer;
228 }
229
230 .container-first-section {
231 padding-bottom: 0px;
232 }
233
234 .container-last-section {
235 padding-top: 0px;
236 }
237
238
239i.award-icon {
240 color: #CCC;
241}
242i.award-icon:hover {
243 cursor: pointer;
244 color: #6daa41;
245}
246.discontinued-carousel .owl-prev {
247 width: 17px;
248 height: 100px;
249 position: absolute;
250 left: -20px;
251 top: 47%;
252 transform: translateY(-50%);
253 display: block !important;
254 border:0px solid black;
255 font-size: 2em !important;
256}
257
258.discontinued-carousel .owl-next {
259 width: 17px;
260 height: 100px;
261 position: absolute;
262 right: -20px;
263 top: 47%;
264 transform: translateY(-50%);
265 display: block !important;
266 border:0px solid black;
267 font-size: 2em !important;
268}
269.award-img{
270max-width: 180px;
271}
272
273</style>
274
275<script>
276 $('.discontinued-carousel').owlCarousel({
277 loop:false,
278 nav:true,
279 dots:false,
280 margin:5,
281 lazyLoad:true,
282 navText : ['<i class="icon-angle-left">','<i class="icon-angle-right">'],
283 responsive:{
284 0:{items:3, slideBy:3},
285 600:{items:5, slideBy:5},
286 1000:{items:7, slideBy:7}
287 },
288});
289
290$(document).mouseup(function (e) {
291 if(!$('#popupContent'+"Awards").is(e.target) &&
292 $('#popupContent'+"Awards").has(e.target).length == 0 &&
293 $(e.target).attr('class') != 'close' &&
294 $('#theme-popup'+"9").css("display") == "block"){
295 closePopup(9);
296 }
297})
298
299</script>
300</#if>
Documentación
Documentos
GLM 5.0 Operating Manual (pdf) GLM 4 System Operating Manual Operating Manual GLM 3 System SAM™ Series Full Line Catalogue Immersive Solutions Brochure Brochure Immersive Solutions (DE)Reseñas
Production Expert: Genelec 8331 SAM & 8341 SAM "The Ones" Studio Monitors & GLM™ 3 - Do They Re-Write The Rule Book?, August 2018 (UK) proaudio.de: Genelec Aktiv-Lautsprecher 8331A mit Loudspeaker Manager User Kit, August 2018 (DE)Preguntas frecuentes
The Genelec Loudspeaker Manager (GLM™) Package provides all necessary components to establish connectivity to SAM™ monitors. Complete network system setup and control of up to 30 monitors and subwoofer is possible via a standard CAT5 or CAT6 cabling.
The GLM™ includes simple to use step-by-step setup wizards to ensure a pain-free and thorough installation, access to extensive Acoustical Settings in each monitor, and System Setup files for saving and recalling of all settings.
As an essential part of the GLM software, GLM™ AutoCal is a fully automated acoustical calibration tool for a single room multi-monitor system which combines decades of acoustic research along with our proprietary DSP and network control. The AutoCal system produces monitor-generated test signals recorded by a calibration microphone to determine correct acoustical alignments for every monitor and subwoofer on the GLM control network.
The differences are in the steepness of the crossover filters and the slightly tighter on-axis response. When using the GLM™ control network and AutoCal, the monitor can be integrated into the room with greater precision and the differences may be significant.
Software updates and upgrades will be clearly announced on the Genelec web site.
"These studio monitors pack a serious amount of technology into a very compact package. Can all this tech combat the issues associated with powerful rear ported designs and can the GLM™ 3 system cope with a truly dreadful set of listening circumstances?"
The Production Expert's comprehensive review "Genelec 8331 SAM & 8341 SAM "The Ones" Studio Monitors & GLM™ 3 - Do They Re-Write The Rule Book?" does not only list the pros and cons, but also describes the user experience of the products.
The review was published in August 2018.
Proaudio.de website's online review of Genelec 8331A studio monitor and GLM kit. The review is written in German and it was published in August 2018.
Proaudio.de website's online review of Genelec 8331A studio monitor and GLM kit. The review is written in German by Erol Ergyn, and it was published on 7th August, 2018.