Tipps und Ideen für das richtige Format

An error occurred while processing the template.
The following has evaluated to null or missing:
==> httpServletRequest.getCookies()  [in template "20098#20124#ARTIKEL-HEADER" at line 17, column 24]

----
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 cookies = httpServletRequest...  [in template "20098#20124#ARTIKEL-HEADER" at line 17, column 5]
----
1<#import "/um-lr73-base-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common> 
2<#import "/um-lr73-base-portal.web-resources_SERVLET_CONTEXT_/export.ftl" as export> 
3 
4<@export.includeExportStyles /> 
5 
6<#assign domainHost = export.getDomainHost() /> 
7 
8<#assign youtubeEnabled = false /> 
9 
10<#if viewMode == "view"> 
11    <#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
12    <#assign httpServletRequest = serviceContext.getRequest()> 
13    <#assign VOID = httpServletRequest.setAttribute("LIFERAY_SHARED_ARTICLE_HEADER_ID", .vars['reserved-article-id'].data) /> 
14    <#assign VOID = httpServletRequest.setAttribute("LIFERAY_SHARED_ARTICLE_HEADER_TITLE", .vars['reserved-article-title'].data) /> 
15    <#assign VOID = httpServletRequest.setAttribute("LIFERAY_SHARED_ARTICLE_HEADER_NAMESPACE", renderResponse.getNamespace()) /> 
16 
17    <#assign cookies = httpServletRequest.getCookies() /> 
18    <#if validator.isNotNull(cookies)> 
19        <#list cookies as cookie> 
20            <#if (cookie.name == "ACCEPTED_COOKIE_YOUTUBE_ENABLED")> 
21                <#if cookie.getValue() == "true"> 
22                    <#assign youtubeEnabled = true /> 
23                    <#break /> 
24                </#if> 
25            </#if> 
26        </#list> 
27    </#if> 
28</#if> 
29 
30<#assign title = .vars['reserved-article-title'].data /> 
31 
32<div class="article"> 
33    <div class="main-content"> 
34        <#if Spitzmarke?? && Spitzmarke.data?has_content> 
35            <#if viewMode == "view" || viewMode == "print"> 
36                <p class="spitzmarke"> 
37                    ${Spitzmarke.data} 
38                    <#if show_modified_date?? && getterUtil.getBoolean(show_modified_date.data)> 
39                        <span class="info pull-right">${getLatestModifiedDate()}</span> 
40                    </#if> 
41                </p> 
42            <#elseif viewMode == "export"> 
43                <div class="spitzmarke"> 
44                    <br/> 
45                    <table border="0" cellspacing="0" cellpadding="0" width="100%"> 
46                        <tr> 
47                            <td align="left" style="text-transform: uppercase"> 
48                                <b>${Spitzmarke.data}</b> 
49                            </td> 
50                            <#if show_modified_date?? && getterUtil.getBoolean(show_modified_date.data)> 
51                                <td align="right"> 
52                                    <b>${getLatestModifiedDate()}</b> 
53                                </td> 
54                            </#if> 
55                        </tr> 
56                    </table> 
57 
58                    <hr color="#b2b2b0" size="1"/> 
59                </div> 
60            </#if> 
61        </#if> 
62 
63        <h1 class="title">${title}</h1> 
64 
65        <#if Medientyp.getData()=="2" && Video.Vorschaubild.getData()!=""> 
66 
67            <#assign videoId=Video.YoutubeCode.getData()/> 
68 
69            <#if videoId?starts_with("http")> 
70                <#assign videoId = videoId?split("/")[3]> 
71            </#if> 
72 
73            <#if Video.Vorschaubild??> 
74 
75                <#if Video.Vorschaubild?has_content> 
76                    <#if viewMode == "view" || viewMode == "print"> 
77                        <div class="article-video"> 
78                            <#if viewMode == "view"> 
79                                <div class="video-box"> 
80                                <div class="video" style="background-image: url(${Video.Vorschaubild.getData()});background-size: cover;padding-bottom:50%; "> 
81                                    <#if youtubeEnabled> 
82                                        <div class="video-trigger-icon" data-source="${videoId}" 
83                                             title="Video abspielen"> 
84                                            <button style="border:none;" class="no-icon item-icon"> 
85                                                <span class="icon-um icon-um--play" 
86                                                      style="position:absolute; top:0; left:0;"></span> 
87                                            </button> 
88                                        </div> 
89                                    </#if> 
90                                </div> 
91                                <#if youtubeEnabled> 
92                                    <div class="video-trigger"> 
93                                        <p class="text-center video-trigger-overlay-text"> 
94                                            Um das Video zu sehen, müssen Sie es durch einen Klick aktivieren. 
95                                            Dadurch werden Informationen an Youtube übermittelt und unter Umständen dort 
96                                            verarbeitet. Bitte beachten Sie unsere Hinweise und Informationen zum <a 
97                                                    title="Zum Datenschutz" class="arrow-link" 
98                                                    href="<#if Video.Datenschutz.data?has_content>${Video.Datenschutz.getFriendlyUrl()}<#else>/datenschutz</#if>"><span 
99                                                        class="icon-um icon-um--chevron-right"></span><span 
100                                                        class="link-title">Datenschutz</span></a>. 
101                                        </p> 
102                                    </div> 
103                                    <div class="video-layer" style="display: none"> 
104                                        <iframe src="" frameborder="0" allowfullscreen="" width="960" 
105                                                height="480"></iframe> 
106                                    </div> 
107                                    </div> 
108                                </#if> 
109                            <#elseif viewMode == "print"> 
110                                <img src="${Video.Vorschaubild.getData()}" class="img-responsive"/> 
111                            </#if> 
112 
113                            <#if Video.Vorschaubild.BildunterschriftVideo.getData()!=""> 
114                                <div class="summary">${Video.Vorschaubild.BildunterschriftVideo.getData()}</div> 
115                            </#if> 
116                        </div> 
117                    <#elseif viewMode == "export"> 
118                        <@export.createExportImageTag jsonContent="${Video.Vorschaubild.data}" /> 
119                    </#if> 
120                </#if> 
121            </#if> 
122 
123 
124        <#else> 
125        <#--Foto--> 
126            <#if BildMitBildunterschrift??> 
127 
128                <#if BildMitBildunterschrift.getSiblings()?has_content> 
129 
130                    <#if viewMode == "view" || viewMode == "print"> 
131                        <#if (BildMitBildunterschrift.getSiblings()?size>1 && viewMode == "view") > 
132                            <@imageTextSlider/> 
133                        <#else> 
134                            <#list BildMitBildunterschrift.getSiblings() as cur_Bild> 
135                                <#if cur_Bild.Bild.getData()?has_content> 
136                                    <div class="teaser-image no-carousel title-image"> 
137                                        <@common.createImageTag jsonContent="${cur_Bild.Bild.data}"/> 
138 
139                                        <#if cur_Bild.Bild.Bildunterschrift.getData()!=""> 
140                                            <div class="summary">${cur_Bild.Bild.Bildunterschrift.getData()}</div> 
141                                        </#if> 
142                                    </div> 
143                                    <#if viewMode == "print"> 
144                                        <#break /> 
145                                    </#if> 
146                                </#if> 
147                            </#list> 
148                        </#if> 
149                    <#elseif viewMode == "export"> 
150                        <#assign FirstImage = BildMitBildunterschrift.siblings?first /> 
151 
152                        <#if FirstImage.Bild.data?has_content> 
153                            <@export.createExportImageTag jsonContent=FirstImage.Bild.data bildunterschrift=FirstImage.Bild.Bildunterschrift.data /> 
154                        </#if> 
155                    </#if> 
156 
157                </#if> 
158 
159            </#if> 
160 
161        </#if> 
162    </div> 
163</div> 
164 
165<#if viewMode == "print" || viewMode == "export"> 
166    <@includeArticleParts /> 
167</#if> 
168<#if viewMode == "print"> 
169    <style> 
170        @media print { 
171            @page { 
172                margin-bottom: 0; 
173
174
175    </style> 
176 
177    <div class="print-footer"> 
178        ${portal.getCanonicalURL(themeDisplay.getPortalURL() + themeDisplay.getURLCurrent(), themeDisplay, layout, true, false)} 
179    </div> 
180</#if> 
181<#if viewMode == "export"> 
182    <#assign url = portal.getCanonicalURL(themeDisplay.getPortalURL() + themeDisplay.getURLCurrent(), themeDisplay, layout, true, false) /> 
183    <div class="print-footer"> 
184        <hr color="#b2b2b0" size="1"/> 
185 
186        <p> 
187        <center>Originalseite: <a href="${url}">${url}</a></center> 
188        </p> 
189    </div> 
190</#if> 
191 
192<script> 
193    var updateVideoWrapper = function () { 
194        AUI().use('aui-base', function (A) { 
195            A.all('.video-box').each(function (elem) { 
196                elem.all('.video-trigger-icon').each(function (triggerElem) { 
197                    triggerElem.on( 
198                        'click', 
199                        function (event) { 
200                            if (event && event.target && event.target.get('nodeName') === 'A') { 
201                                return; 
202
203 
204                            var youtubeId = triggerElem.getData('source'); 
205                            var videoLayer = elem.one('.video-layer'); 
206                            var iframe = videoLayer.one('iframe'); 
207                            iframe.attr('src', 'https://www.youtube.com/embed/' + youtubeId); 
208                            triggerElem.hide(); 
209                            videoLayer.show(); 
210
211                    ); 
212                }); 
213            }); 
214        }); 
215    }; 
216 
217    Liferay.on('endNavigate', updateVideoWrapper); 
218    $(document).ready(updateVideoWrapper); 
219</script> 
220 
221<#macro imageTextSlider> 
222 
223    <section class="image-slider" id="slider_artikel"> 
224 
225        <div class="slides-list" aria-roledescription="Karusell"> 
226 
227            <#list BildMitBildunterschrift.getSiblings() as cur_images> 
228                <div class="slide" role="group" aria-roledescription="Folie" 
229                     aria-label="Folie ${cur_images?index + 1} von ${ BildMitBildunterschrift.getSiblings()?size}"> 
230                    <div class="image"> 
231                        <@common.createImageTag jsonContent="${cur_images.Bild.data}"/> 
232                    </div> 
233                    <#if cur_images.Bild.Bildunterschrift.getData()!=""> 
234                        <div class="summary"> 
235                            ${cur_images.Bild.Bildunterschrift.getData()} 
236                        </div> 
237                    </#if> 
238                </div> 
239            </#list> 
240 
241 
242        </div> 
243 
244    </section> 
245 
246</#macro> 
247 
248<@common.initializeSlider wrapper="#slider_artikel" container="#slider_artikel .slides-list" loop=false/> 
249 
250<#macro includeArticleParts> 
251    <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
252 
253    <#if article_parts?? && article_parts.article_part??> 
254        <#list article_parts.article_part.siblings as part> 
255            <#if part.data?has_content> 
256                <#assign 
257                contentInfo = part.data?eval 
258                contentArticle = journalArticleLocalService.fetchLatestArticle(getterUtil.getLong(contentInfo.classPK)) 
259                /> 
260 
261                ${journalContent.getContent(contentArticle.groupId, contentArticle.articleId, contentArticle.getDDMTemplateKey(), viewMode, locale.toString(), themeDisplay)} 
262            </#if> 
263        </#list> 
264    </#if> 
265</#macro> 
266 
267<#function getLatestModifiedDate> 
268    <#assign 
269    journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
270    journalArticle = journalArticleLocalService.getLatestArticle(groupId, .vars['reserved-article-id'].data) 
271    modifiedDate = journalArticle.modifiedDate 
272    /> 
273    <#if article_parts?? && article_parts.article_part??> 
274        <#list article_parts.article_part.siblings as part> 
275            <#if part.data?has_content> 
276                <#assign 
277                contentInfo = part.data?eval 
278                contentArticle = journalArticleLocalService.fetchLatestArticle(getterUtil.getLong(contentInfo.classPK)) 
279                /> 
280                <#if contentArticle.modifiedDate?long gt modifiedDate?long> 
281                    <#assign modifiedDate = contentArticle.modifiedDate /> 
282                </#if> 
283            </#if> 
284        </#list> 
285    </#if> 
286 
287    <#return modifiedDate?datetime?string('dd.MM.yyyy') /> 
288</#function> 

Gestalten Sie mit uns gemeinsam die Energiewendetage und werden Sie mit Ihren Aktivitäten ein bedeutender Teil der landesweiten Aktionstage. Von der Ideenfindung für Ihre Aktionen bis zur Realisierung Ihrer Projekte und Veranstaltungen haben wir für Sie einige Anregungen und Tipps zusammengestellt, die sich bei den bisherigen Energiewendetagen bewährt haben.

Ob Stadtwerke, Energieversorger, regionale Energieagentur, Handwerk oder Wirtschaft – jeder Energie-Akteur kann Besucherinnen und Besuchern hilfreiche Praxis-Tipps und wichtige Impulse zu energie- und klimarelevanten Themen mit auf den Weg geben.

Infostände, Beratungen und Vorträge sind ebenso geeignet wie Besichtigungen, Führungen oder Mitmachangebote. Die Energiewendetage können sowohl drinnen als auch draußen durchgeführt werden. Entweder als eigenständige Veranstaltung oder integriert in bestehende Veranstaltungen wie beispielsweise Messen, Wochenmärkte, Gewerbeschauen oder verkaufsoffene Sonntage.

Im Rahmen der Energiewendetage können Sie den Schwerpunkt auf ein aktuelles Thema legen – zum Beispiel Elektromobilität. Geben Sie Besucherinnen und Besuchern die Möglichkeit, die verschiedenen Facetten der Elektromobilität live zu erleben.

Vorträge und Beratungen zum Thema Elektromobilität können um Ausstellungen mit Elektrofahrzeugen ergänzt werden. In einem E-Parcours können Ihre Besucherinnen und Besucher in die Welt der E-Mobilität eintauchen und auf zwei oder mehreren Rädern erfahren, was in den verschiedenen Modellen steckt.

Vom Heizkraftwerk bis zur Wassermühle, vom Bürgerwindpark bis zum Flusskraftwerk – öffnen Sie an den Energiewendetagen Ihre Pforten und machen Sie die vielfältigen Arten der Energieerzeugung vor Ort konkret erlebbar. Bei geführten Rundgängen oder der Möglichkeit zur Erkundung auf eigene Faust bieten Sie den Besucherinnen und Besuchern spannende Einblicke hinter die Kulissen der Energieanlagen.

Ob Spaziergang, „Watt”-Wanderung, Radtour oder sogar Schnitzeljagd (Geo-Caching): Bringen Sie Interessierte in Bewegung und nutzen Sie lokale Gegebenheiten wie zum Beispiel Energie-Häuser oder PV-Anlagen, um über den aktuellen Stand von Energieeffizienz oder anderen Themen rund um Erneuerbare Energien und Klimaschutz zu informieren.

Gemeinsam kann man viel erreichen: Vernetzen Sie sich mit anderen Städten, Gemeinden, Firmen oder Gruppen. Mit vereinten Kräften lassen sich zahlreiche Aktionen wie Fachvorträge, Beratungen, Info-Stände/Info-Märkte, Ausstellungen, Workshops, Gottesdienste oder Tage der offenen Tür an vielen Orten realisieren. Nutzen Sie die Möglichkeit, lokale Kooperationen zu entwickeln, zu stärken und das attraktive, zukunftsfähige Profil Ihres Standorts zu zeigen.

Dass Energiewende und Klimaschutz wichtige Themen unserer Zeit sind, kann Kindern und Jugendlichen bei vielfältigen Bastel-, Unterhaltungs- oder Bildungsangeboten spielend näher gebracht werden.

Solarpopcorn herstellen, Knobeln beim Energiequiz, Basteln in der Solarwerkstatt, interaktives Kindertheater oder bei Expeditionen, Experimenten, Workshops und Kinderunis einem Thema gezielt auf die Spur kommen – den Mitmach-Aktionen für Kinder und Jugendliche sind kaum Grenzen gesetzt.

In Pandemiezeiten wird nicht alles wie gewohnt planbar sein und vielleicht muss die eine oder andere Veranstaltung sogar wieder abgesagt werden. Andererseits bietet sich durch Corona auch die Chance, Eingespieltes neu zu überdenken.

Ihre positive Kreativität ist in diesen Zeiten gefragt. Denken Sie zum Beispiel auch an die vielen virtuellen Möglichkeiten, die Ihnen online zur Verfügung stehen:

  • eine virtuelle anstatt einer realen Führung durch Ihre Ausstellung, Ihre Firma, Ihre Institution, Ihr Gebäude – live oder als Aufzeichnung

  • ein Vortrag zu Ihrem Energiewende-Thema

  • ein Webinar

  • eine Videopräsentation auf Ihrer Webseite