Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> Image.getAttribute("alt")  [in template "10110#2640274#60526724" at line 203, column 53]

----
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: ${Image.getAttribute("alt")}  [in template "10110#2640274#60526724" at line 203, column 51]
----
1<style> 
2 
3	.banner-container-${randomNamespace} { 
4		position: relative; 
5   		overflow: hidden; 
6
7	 
8	.banner-carousel-image-${randomNamespace} { 
9		max-height: 450px; 
10		overflow: hidden; 
11
12	 
13	.banner-image-container-${randomNamespace} .container-fluid { 
14		position: absolute; 
15	    width: 100%; 
16	    top: 0; 
17
18	 
19	.banner-image-container-${randomNamespace} .container-fluid .row { 
20		margin-left: 0px; 
21	    margin-right: 0px; 
22
23	 
24	.banner-caption-${randomNamespace} { 
25		position: absolute; 
26	    bottom: 0; 
27	    left: 0; 
28	    color: #fff; 
29	    font-size: 200%; 
30	    padding: 40px 50px; 
31	    width: 100%; 
32	    z-index: 1; 
33
34	 
35	.banner-caption-${randomNamespace} .over { 
36	    background-color: #000; 
37	    opacity: 0.2; 
38	    position: absolute; 
39	    width: 100%; 
40	    height: 100%; 
41	    left: 0px; 
42	    top: 0; 
43	    z-index: -1; 
44
45	 
46	.banner-content-${randomNamespace} { 
47		z-index: 999; 
48
49	 
50	.banner-logo-container-${randomNamespace} { 
51		pointer-events: auto; 
52	    background-color: white; 
53	    position: absolute; 
54	    top: -1px; 
55	    left: 0px; 
56	    height: 55px; 
57	    width: 230px; 
58	    z-index: 7; 
59	    padding-left: 100px; 
60
61	 
62	.banner-main-${randomNamespace}, 
63	h1.banner-main-${randomNamespace}, 
64	h2.banner-main-${randomNamespace} { 
65	    font-size: 50px; 
66	    line-height: 55px; 
67	    font-weight: 500; 
68	    margin-bottom: 1rem; 
69
70	 
71	.banner-title-${randomNamespace}-white, 
72	.banner-caption-${randomNamespace}-white { 
73        color: #ffffff; 
74
75     
76    .banner-title-${randomNamespace}-gray, 
77    .banner-caption-${randomNamespace}-gray { 
78		color: #939598; 
79
80     
81    .banner-title-${randomNamespace}-blue, 
82    .banner-caption-${randomNamespace}-blue { 
83		color: #009ddd; 
84
85     
86    .banner-title-${randomNamespace}-green, 
87    .banner-caption-${randomNamespace}-green { 
88		color: #a7cd45; 
89
90     
91    .banner-title-${randomNamespace}-red, 
92    .banner-caption-${randomNamespace}-red { 
93		color: #f04e3e; 
94
95     
96    .banner-title-${randomNamespace}-yellow, 
97    .banner-caption-${randomNamespace}-yellow { 
98		color: #e6b00f; 
99
100     
101    .banner-carousel-image-responsive { 
102        display: none;         
103
104     
105	@media (max-width: 767px){ 
106		.banner-carousel-image-${randomNamespace} { 
107			max-height: unset; 
108
109		.banner-caption-${randomNamespace} { 
110		    position: relative; 
111		    color: #000; 
112		    padding: 20px 0px; 
113
114		.banner-caption-${randomNamespace} .over { 
115		    display: none; 
116
117		.banner-image-container-${randomNamespace} .container-fluid { 
118			position: relative; 
119
120		.banner-main-${randomNamespace}, 
121    	h1.banner-main-${randomNamespace}, 
122    	h2.banner-main-${randomNamespace} { 
123		    font-size: 40px; 
124		    line-height: 45px; 
125
126		.banner-title-${randomNamespace}-white, 
127		.banner-caption-${randomNamespace}-white { 
128	        color: #000; 
129
130
131	 
132	@media (min-width: 768px){ 
133		.banner-main-${randomNamespace}, 
134    	h1.banner-main-${randomNamespace}, 
135    	h2.banner-main-${randomNamespace} { 
136		    font-size: 40px; 
137		    line-height: 45px; 
138
139		.banner-caption-${randomNamespace} { 
140		    padding: 20px 0px; 
141
142
143	 
144	@media (min-width: 991px){ 
145		.banner-caption-${randomNamespace} { 
146		    padding: 20px 35px; 
147
148
149	 
150	 
151	@media (min-width: 1200px){ 
152		.banner-main-${randomNamespace}, 
153    	h1.banner-main-${randomNamespace}, 
154    	h2.banner-main-${randomNamespace} { 
155		    font-size: 50px; 
156		    line-height: 55px; 
157
158		.banner-caption-${randomNamespace} { 
159		    padding: 40px 35px; 
160
161
162	 
163	@media (min-width: 1600px){ 
164		.banner-main-${randomNamespace}, 
165    	h1.banner-main-${randomNamespace}, 
166    	h2.banner-main-${randomNamespace} { 
167		    font-size: 70px; 
168		    line-height: 75px; 
169
170
171 
172</style> 
173 
174<#if RidimensionaMobile?? && getterUtil.getBoolean(RidimensionaMobile.getData())>  
175    <style> 
176        @media (max-width: 767px){ 
177    		.banner-carousel-image-responsive { 
178                display: block; 
179                background-image: url('${Image.getData()}'); 
180                width: 100%; 
181                height: 200px; 
182                background-size: auto 200px; 
183
184
185    </style> 
186     
187    <#if MobileAlign?? && MobileAlign.getData()!="">  
188        <style> 
189            @media (max-width: 767px){ 
190        		.banner-carousel-image-responsive { 
191                    background-position: ${MobileAlign.getData()}; 
192
193
194        </style> 
195    </#if> 
196</#if> 
197 
198<div class="banner-root-${randomNamespace}"> 
199	<div class="d-block w-100"> 
200		<div class="banner-container-${randomNamespace}"> 
201			<div class="banner-image-container-${randomNamespace}"> 
202				<div class="banner-carousel-image-${randomNamespace}"> 
203					<img alt='${Image.getAttribute("alt")}' data-fileentryid='${Image.getAttribute("fileEntryId")}' src="${Image.getData()}" class="d-md-block d-none" /> 
204					<div class="banner-carousel-image-responsive"></div> 
205					<div class="container-fluid h-100"> 
206						<div class="row h-100"> 
207							<div class="col-md-4 h-100"> 
208								<div class="banner-caption-${randomNamespace} h-100"> 
209									<div class="over"></div> 
210									<table class="h-100 w-100 banner-content-${randomNamespace}"> 
211										<tbody> 
212											<tr> 
213												<td style="vertical-align: bottom;"> 
214													<p class="carousel-intro banner-title-${randomNamespace}-${Title.TitleColor.getData()}">${Title.getData()}</p> 
215													<#if Caption?? && Caption.getData()?has_content> 
216														<div class="banner-caption-${randomNamespace}-${(Caption.CaptionColor?? && Caption.CaptionColor.getData()?has_content)?then(Caption.CaptionColor.getData(),'')}"> 
217															<#if Caption.TipoTitolo?? && Caption.TipoTitolo.getData() != "" && Caption.TipoTitolo.getData() == "h1"> 
218																<h1 class="banner-main-${randomNamespace}">${Caption.getData()}</h1> 
219															<#elseif Caption.TipoTitolo?? && Caption.TipoTitolo.getData() != "" && Caption.TipoTitolo.getData() == "h2"> 
220																<h2 class="banner-main-${randomNamespace}">${Caption.getData()}</h2> 
221															<#else> 
222																<div class="banner-main-${randomNamespace}">${Caption.getData()}</div> 
223															</#if> 
224														</div> 
225													</#if> 
226												</td> 
227											</tr> 
228										</tbody> 
229									</table> 
230								</div> 
231							</div> 
232						</div> 
233					</div> 
234				</div> 
235			 
236			</div> 
237		</div> 
238	</div> 
239	<#if LogoSpecial?? && getterUtil.getBoolean(LogoSpecial.getData())>  
240	    <div class="d-none d-md-block banner-logo-container-${randomNamespace}">  
241    		<a href="/" class="logo-carousel-home"> 
242    			<img src="/o/clivet-liferay-home-theme/images/clivet/logo-home.png" width="370"> 
243    		</a> 
244    	</div> 
245	</#if> 
246</div> 

Hybrid heat pumps

Clivet’s hybrid systems integrate heat pump functions with the boiler.

They are ideal for replacing old systems while maintaining existing radiators and are suitable for replacing boilers in renovations, as they are designed with similar overall dimensions.

  • integrated heat pump and condensing boiler;
  • uncased installation or in full view;
  • wide range of capacities;
  • elegant ALTO design;
  • APP for full control around the clock, wherever you are.

When is it worth installing a hybrid heat pump? Click here for more details.

SPHERA EVO 2.0 EASYHybrid Box
SPHERA EVO 2.0 EASYHybrid T
SPHERA EVO 2.0 Invisible Hybrid
Sphera EVO 2.0 BOX Hybrid
SPHERA EVO 2.0 Hybrid
Edge EVO 2.0 EXC Hybrid
Edge F Hybrid
Gas Boiler FE
Gas Boiler UC
01
RISCALDAMENTO RAFFREDDAMENTO
01
ACQUA CALDA SANITARIA
01
INTEGRAZIONE AL SOLARE
01
CALDAIA