Publicador de contenidos

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 128, column 37]
----
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: dMTJsonObject = FrontendService.media... [in template "252001#252047#252845" at line 128, column 21]
----
1<#-- used @ Veranstaltung-Detailseite Intro 
2 used @ Publikation-Detailseite Intro 
3--> 
4 
5<#-- 
6Web content templates to display teaser on thema detail page 
7 
8Generic template for detail pages Intro / Teaser element 
9--> 
10<#-- 
11Display the current page title 
12--> 
13<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
14<#include "${fullTemplatesPath}/macros/debugging.ftl" /> 
15 
16<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" /> 
17<#include "${fullTemplatesPath}/macros/atomic-modules/AMPublicationCarousel.ftl" /> 
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" /> 
19<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" /> 
20 
21 
22<#-- 
23 renders the Intro for nearly all Pages 
24 TODO: remove Share? (was in the designs, but not anymore?) 
25 TODO: check if languageSelect/filter are working (js) 
26 
27 - portletId 
28 - data = { 
29 "media": string (src from image), 
30 "category": string, 
31 "title": string, 
32 "author": string, 
33 "subheadline": string, 
34 "copy": string, 
35 "filter": { 
36 "id": string, 
37 "name": string, 
38 "entries": Array<Object> ({key:value}), 
39 }, 
40 "languageSelect": { 
41 "id": string, 
42 "name": string, 
43 "entries": Array<Object> ({key:value}), 
44 }, 
45 "meta": { 
46 "pos"; string (top/bottom) 
47 "date": string, 
48 "hash": string, 
49 "info": string, (url) 
50 }, 
51 "share" : { 
52 "login": string, 
53 "print": string, 
54 "mail": string, 
55 "multishare": string?? (tbd) 
56
57 - AMMetadata: macro 
58 - position: String ("top") -> defines wether the meta-data should be rendered above or below the intro-content 
59
60--> 
61 
62<#assign 
63 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
64 
65 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() 
66 DLAPP = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService") 
67 
68 themeDisplay = ServiceContext.getThemeDisplay() 
69 editmode = FrontendService.user.isPrivilegedUser(themeDisplay) 
70 
71 languageId = themeDisplay.getLocale() 
72 groupId = themeDisplay.getScopeGroupId() 
73 currentUrl = themeDisplay.getURLCurrent() 
74 
75 layout = themeDisplay.getLayout() 
76 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id") 
77/> 
78 
79<#setting locale="${languageId}"> 
80 
81<#-- get article from url --> 
82 
83<#assign entry = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! > 
84 
85 
86<#if entry?has_content> 
87 
88 <#if entry.resourcePrimKey??> 
89 <#assign primaryKey = entry.resourcePrimKey?number > 
90 <#elseif entry.classPK??> 
91 <#assign primaryKey = entry.classPK?number > 
92 </#if> 
93 
94 <#assign 
95 jsonString = FrontendService.article.getWebcontent(primaryKey) 
96 json = FrontendService.json.parseAsJson(jsonString) 
97 availablelanguages = FrontendService.article.getAssetEntryToUrl(primaryKey).getAvailableLanguageIds() 
98 
99 title = entry.getTitle(languageId) 
100 data = { 
101 "title": title 
102
103 /> 
104 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" /> 
105 
106 <#if hasContent('untertitel', languageId, json)> 
107 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } > 
108 </#if> 
109 
110 <#if hasContent('beschreibung', languageId, json)> 
111 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } > 
112 </#if> 
113 
114 <#-- fill meta data --> 
115 <#assign meta = {} /> 
116 
117 <#-- PUBLIKATIONEN DETAIL --> 
118 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
119 
120 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)> 
121 <#assign 
122 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first") 
123 /> 
124 
125 <#if coverBildString?has_content> 
126 <#assign 
127 coverBild = FrontendService.json.parseAsJson(coverBildString) 
128 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) 
129 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid ) 
130 data = data + { "media": linkToDMT, "meta" : dMTJsonObject } 
131 /> 
132 <#if dMTJsonObject.altText?? > 
133 <#assign data = data + {"alt" : dMTJsonObject.altText} /> 
134 </#if> 
135 <#if dMTJsonObject.quelle??> 
136 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } /> 
137 </#if> 
138 </#if> 
139 <#-- uncomment to display pdf cover as Intro Image 
140 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)> 
141 <#assign 
142 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first") 
143 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/> 
144 <#if fileEntry?has_content> 
145 <#assign 
146 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay) 
147 data = data + { "media": linkToThumbnail } 
148 /> 
149 </#if> 
150 --> 
151 </#if> 
152 
153 <#assign 
154 meta = meta + { "orderInfo": "true" } 
155 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!"" 
156 /> 
157 
158 
159 
160 <#if hasContent('erscheinungsdatum', languageId, json)> 
161 <#assign 
162 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
163 /> 
164 <#if erscheinungsdatum?has_content > 
165 <#assign 
166 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId ) 
167 meta = meta + { "date": erscheinungsdatumFormatted } 
168 /> 
169 </#if> 
170 </#if> 
171 
172 <#if verbundJournalArticle?has_content> 
173 <#assign 
174 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey) 
175 verbundJson = FrontendService.json.parseAsJson(verbundJsonString) 
176 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first") 
177 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first") 
178 /> 
179 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" /> 
180 <#assign meta = meta + { "laufendenummer": laufendenummer } > 
181 
182 <#if coverImg?has_content && coverImg.url?has_content > 
183 <#assign meta = meta + { "coverImg": coverImg.url } > 
184 </#if> 
185 </#if> 
186 
187 
188 <#if meta?has_content> 
189 <#assign data = data + {"meta": meta } > 
190 </#if> 
191 
192 </#if> 
193 <#-- PUBLIKATIONEN DETAIL END --> 
194 
195 
196 <#-- VERANSTALTUNGEN DETAIL --> 
197 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
198 <#assign 
199 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!"" 
200 links = [] 
201 /> 
202 <#if availablelanguages?has_content && friendlyUrl?has_content> 
203 <#if (availablelanguages?size > 1) > 
204 <#list availablelanguages as language> 
205 <#assign 
206 defaultLanguage = "de_DE" 
207 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage) 
208 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale 
209 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId) 
210 
211 link = { 
212 "key": language!defaultLanguage, 
213 "value": linkLocale.getDisplayLanguage(languageId), 
214 "url": "/c/portal/update_language?p_l_id=" + 
215 layout.plid + "&redirect=" + langFriendlyUrl + 
216 "&languageId=" + language 
217
218 /> 
219 <#if language == languageId> 
220 <#assign link = link + { "selected": "true" } > 
221 </#if> 
222 <#assign links = links + [link]> 
223 </#list> 
224 <#assign 
225 data = data + { 
226 "languageSelect": { 
227 "id": "languageSelectRedirect", 
228 "name": "languageselectRedirect", 
229 "entries": links, 
230 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar") 
231
232
233 /> 
234 </#if> 
235 </#if> 
236 </#if> 
237 
238 <#if hasContent('erscheinungsdatum', languageId, json)> 
239 <#assign 
240 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
241 meta = meta + { "start": startdate?date.iso, "end": "" } 
242 /> 
243 </#if> 
244 
245 <#if hasContent('startdatum', languageId, json)> 
246 <#assign 
247 startdate = getValueForLanguage('startdatum', languageId, json, "first") 
248 meta = meta + { "start": startdate?date.iso, "end": "" } 
249 /> 
250 </#if> 
251 
252 <#if hasValue('einfuehrungText', locale, json)> 
253 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } > 
254 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")> 
255 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } > 
256 </#if> 
257 
258 <#if hasContent('endedatum', languageId, json)> 
259 <#assign 
260 enddate = getValueForLanguage('endedatum', languageId, json, "first") 
261 meta = meta + { "end": enddate?date.iso } 
262 /> 
263 </#if> 
264 
265 <#if hasContent('startzeit', languageId, json)> 
266 <#assign 
267 startzeit = getValueForLanguage('startzeit', languageId, json, "first") 
268 /> 
269 <#if startzeit?has_content > 
270 <#assign meta = meta + { "startzeit": startzeit } /> 
271 </#if> 
272 </#if> 
273 
274 <#if hasContent('endezeit', languageId, json)> 
275 <#assign 
276 endezeit = getValueForLanguage('endezeit', languageId, json, "first") 
277 meta = meta + { "endezeit": endezeit } 
278 /> 
279 </#if> 
280 
281 <#if hasContent('ortWCSKASDEORT', languageId, json)> 
282 <#assign 
283 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first")) 
284 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number 
285 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!"" 
286 /> 
287 <#if ortWCSKASDEORTWebContent?has_content > 
288 <#assign 
289 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!"" 
290 /> 
291 <#if ortWCSKASDEORTTitle?has_content > 
292 <#assign 
293 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle } 
294 /> 
295 </#if> 
296 </#if> 
297 </#if> 
298 
299 
300 <#if hasContent('veranstaltungsnummer', languageId, json)> 
301 <#assign 
302 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first") 
303 meta = meta + { "verauuid": verauuid } 
304 /> 
305 </#if> 
306 
307 
308 <#if (data.meta)?has_content > 
309 <#assign meta = data.meta /> 
310 </#if> 
311 
312 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)> 
313 <#assign 
314 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first") 
315 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution") 
316 /> 
317 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} > 
318 
319 
320 <#if mediaData.meta?? && mediaData.meta.quelle??> 
321 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } /> 
322 </#if> 
323 </#if> 
324 
325 
326 <#if meta?has_content> 
327 <#assign data = data + {"meta": meta } > 
328 </#if> 
329 
330 <#-- END fill meta data --> 
331 
332 <#if hasContentForSequence('autorenWCSKASDEPERSON', languageId, json)> 
333 <#assign 
334 journalArticles = getValueForLanguageAnsprechpartner('autorenWCSKASDEPERSON', languageId, json) 
335 authors = [] 
336 /> 
337 <#list journalArticles as articleString> 
338 <#assign article = FrontendService.json.parseAsJson(articleString) /> 
339 <#if article?has_content && article?is_hash && article.classPK??> 
340 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" /> 
341 <#if articleDereferenced?has_content > 
342 <#assign 
343 author = "" 
344 articlePrimaryKey = articleDereferenced.classPK?number 
345 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey) 
346 articleJson = FrontendService.json.parseAsJson(articleJsonString) 
347 /> 
348 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" /> 
349 <#if hasValue('anredetitel', languageId, articleJson)> 
350 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " "> 
351 </#if> 
352 <#if hasValue('vorname', languageId, articleJson)> 
353 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " "> 
354 </#if> 
355 <#if hasValue('nachname', languageId, articleJson)> 
356 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " "> 
357 </#if> 
358 
359 <#attempt> 
360 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" > 
361 <#recover> 
362 <#assign href = "#" > 
363 </#attempt> 
364 <#if href?has_content && href != "#" && href != "/_404"> 
365 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'> 
366 </#if> 
367 
368 <#assign authors = authors + [author?trim]> 
369 </#if> 
370 </#if> 
371 </#list> 
372 <#if authors?has_content> 
373 <#assign data = data + { "author": authors?join(", ") } > 
374 </#if> 
375 </#if> 
376 
377 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") > 
378 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! > 
379 <#if categories?has_content && categories[0]?has_content > 
380 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
381 </#if> 
382 
383 <#if hasContent('ausgebucht', languageId, json)> 
384 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }> 
385 </#if> 
386 
387 <#if hasContent('storniert', languageId, json)> 
388 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }> 
389 </#if> 
390 
391 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") > 
392 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! > 
393 <#if categories?has_content && categories[0]?has_content > 
394 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
395 </#if> 
396 <#else> 
397 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! > 
398 <#if categories?has_content && categories[0]?has_content > 
399 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
400 </#if> 
401 </#if> 
402 
403 
404 <#assign 
405 languages = [] 
406 /> 
407 
408 <#attempt> 
409 <#if json["document_pdfDMTBASICDOCUMENT"]?? > 
410 <#if availablelanguages?has_content> 
411 <#list availablelanguages as pdf_language> 
412 <#assign 
413 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first") 
414 docRef = FrontendService.json.parseAsJson(docRefJson) 
415 /> 
416 <#if docRef?is_hash && pdf_language != languageId > 
417 <#assign 
418 lang = FrontendService.language.getLocaleByKey(pdf_language)!"" 
419 docGroupId = docRef["groupId"]?number 
420 docUuid = docRef["uuid"] 
421 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale ) 
422 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject ) 
423 /> 
424 <#if lang?has_content> 
425 <#assign 
426 languages = languages + [ 
427
428 "key": pdf_language, 
429 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(), 
430 "url": dMTLink 
431 }] 
432 /> 
433 </#if> 
434 </#if> 
435 </#list> 
436 </#if> 
437 </#if> 
438 <#recover> 
439 </#attempt> 
440 
441 <#if (languages?size > 0)> 
442 <#attempt> 
443 <#assign 
444 data = data + { "languageSelect": { 
445 "id": "languageSelect", 
446 "name": "languageselect", 
447 "entries": languages, 
448 "documents": "", 
449 "button": "true" 
450 }} 
451 /> 
452 <#recover> 
453 </#attempt> 
454 </#if> 
455 
456 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" /> 
457 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)} 
458 
459 <#if data.meta?has_content> 
460 <#if data.meta.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()> 
461 <div>  
462 <div id="publicationVerbundPagination"> 
463 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg /> 
464 </div> 
465 </div> 
466 </#if> 
467 </#if> 
468 
469<#elseif (editmode?? && editmode)> 
470 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl /> 
471</#if> 

Publicador de contenidos

Compartir

Wahlergebnis und Analyse

Nach Auszählung von 99,99 Prozent der Wahllokale gaben die Wahlbehörden folgendes vorläufige Ergebnis bekannt:
 

Kandidat Ergebnis % Wählerstimmen
Gustavo Petro 40,32 %  8.527.183
Rodolfo Hernández 28.15 % 5.953.160
Federico Gutiérrez 23, 91 % 5.057.981
Sergio Fajardo 4,20 % 888.537
John Milton Rodríguez 1,29 % 274.235
Enrique Gómez Martínez 0,23 % 50.533
Ingrid Betancourt 0,07 % 14.877
Luis Pérez 0,05 % 12.425

 

Trotz der landesweiten Sozialproteste im vergangenen Jahr, der Unzufriedenheit mit der sozialen Lage und der enormen politischen Polarisierung im Wahlkampf nahmen nur knapp 22 Millionen Wählerinnen und Wählern an den Wahlen teil. Die Wahlbeteiligung lag bei rund 55 Prozent und verharrte damit auf ähnlichem Niveau wie in der Vergangenheit. Gustavo Petro, Senator und ehemaliger Bürgermeister von Bogotá, verfehlte zwar sein erklärtes Ziel eines Wahlsieges mit absoluter Mehrheit im ersten Wahlgang, erzielte für die Linke aber ein historisches Wahlergebnis. Mit über 8,5 Mio. Stimmen übertraf er bereits im ersten Wahlgang sein Ergebnis in der Stichwahl gegen Präsident Duque 2018 (8.04 Mio. Stimmen) deutlich. Noch nie ist es einem linken Präsidentschaftskandidaten in Kolumbien gelungen, so viele Wähler hinter sich zu versammeln.

Heimlicher Wahlgewinner ist jedoch der 77jährige Unternehmer und ehemalige Bürgermeister von Bucaramanga, Rodolfo Hernández, der in den letzten Umfragen zehn Tage vor den Wahlen noch fünf Prozentpunkte hinter Federico Gutiérrez lag. Mitte Mai hatte Hernández noch abgeschlagen unter 15 Prozent gelegen. Die letzten Umfragen bescheinigten ihm zwar einen deutlichen Aufwärtstrend, doch die Mehrheit der Analysten und politischen Beobachter hatte mit einem Einzug von Federico Gutierrez in die Stichwahl gerechnet. Der Überraschungscoup von Hernández und der Wahlerfolg von Petro sind Ausdruck einer gnadenlosen Abrechnung des Wählers mit dem traditionellen politischen Establishment und der Regierung Duque, die historisch schlechte Zustimmungswerte verzeichnet.

Die Regierungspartei Centro Democrático (Demokratisches Zentrum) von Expräsident Uribe und Präsident Duque hatte zwar ihren eigenen chancenlosen Präsidentschaftskandidaten, den ehemaligen Uribe-Minister Ivan Zuluaga, frühzeitig aus dem Rennen genommen und stillschweigend die Kandidatur von Gutiérrez unterstützt. Dem ehemaligen Bürgermeister von Medellín gelang es aber nicht, ein eigenes starkes Profil und Strahlkraft über seine Heimatregion Antioquia hinaus zu entwickeln. Seine Bemühungen, sich als unabhängigen Kandidaten der Mitte zu präsentieren, verfingen beim Wähler nicht. Stattdessen stand er in den Augen der zahlreichen Regierungskritiker als Repräsentant der traditionellen politischen Elite für Kontinuität und ein „Weiter so“.

Petro und Hernández verkörperten dagegen in ihrem Wahlkampf die Wechselstimmung in der Bevölkerung. Hernández sprach dabei vor allem die Wähler an, die dem traditionellen Mitte-Rechts-Lager kritisch gegenüberstanden, die sich aber auch von der linken Rhetorik Petros und seiner Vizepräsidentschaftskandidatin Francia Márquez abgeschreckt fühlten. Im Zuge der zunehmenden Polarisierung zwischen dem linken und rechten politischen Lager entfaltete seine Kandidatur immer stärkere Zugkraft, angetrieben durch ein geschicktes politisches Marketing und eine Low-Budget-Kampagne, die stark auf soziale Netzwerke, insbesondere Tictoc, setzte. Bemerkenswert ist der Erfolg von Hernández auch deshalb, weil er bis zum Wahltag nur 70 Prozent der Kolumbianer überhaupt bekannt war. Als ehemaliger Bürgermeister von Bucaramanga, der Hauptstadt der Region Santander, hatte er in der nationalen Politik bis zu seiner Kandidatur keine Rolle gespielt und gehörte auch keiner Partei an, die seine Kampgange hätte unterstützen können. Überregionale Bekanntheit erlangte der Unternehmer, als er als Bürgermeister vor laufenden Kameras einen Stadtrat in seinem Büro ohrfeigte und dafür von seinem Amt suspendiert wurde. Mit volksnaher Sprache und oft polemischen Äußerungen wetterte Hernández gegen die Korruption und die gesamte politische Klasse des Landes und traf damit offenbar bei vielen Wählern den richtigen Nerv. Dass er wegen fragwürdiger Vergabe öffentlicher Aufträge als Bürgermeister selbst in einen Korruptionsprozess verwickelt ist, konnte den Hype um Hernández nicht bremsen. Im Endspurt des Wahlkampfes entzog sich der Unternehmer den Kandidatendebatten und verbreitete stattdessen über die sozialen Netzwerke kostspielige Wahlkampfversprechen. Finanziert würden diese durch den Stopp von Korruption und öffentlicher Geldverschwendung unter seiner Regierung, so Hernández.

Mit populistischen Heilsversprechen gelang es Petro und Hernández, den stark ausgeprägten Wechselwillen in der Bevölkerung und die Wut auf die traditionellen politischen Eliten aufzufangen und in Wählerstimmen umzumünzen. Neben Fico Gutiérrez, dem vermeintlichen Vertreter des politischen Establishments, erlitt auch Sergio Fajardo, ehemaliger Bürgermeister von Medellín, ehemaliger Gouverneur von Antioquia und Präsidentschaftskandidat 2021 ein verheerendes Wahldebakel. Nachdem Fajardo 2018 als aussichtsreicher Kandidat noch knapp die Stichwahl verpasst hatte, erzielte er diesmal nur 4,2 Prozent der Wählerstimmen und lag damit nur geringfügig über der wichtigen 4-Prozent-Hürde, die zur staatlichen Rückerstattung der Wahlkampfkosten berechtigt. Die anderen Kandidaten spielten keine Rolle. Ingrid Betancourt, die internationale Bekanntheit erlangte, als sie als Präsidentschaftskandidatin 2002 von den FARC entführt und bis zu ihrer Befreiung 2008 im Dschungel als Geisel gehalten wurde, stand zwar noch auf dem Wahlzettel. Doch sie hatte ihre Kandidatur wenige Tage vor dem Wahltag zurückgezogen und ihre Unterstützung für Hernández erklärt.

Kolumbien hat für einen radikalen Politikwechsel und gegen das politische Establishment gestimmt und folgt damit einer Tendenz in der Region. Ein gradueller Wandel, wie ihn Federico Gutiérrez oder Sergio Fajardo vorgeschlagen hatten, überzeugte die Wähler nicht. Kurioserweise liegt für Gustavo Petro in der Stunde seines größten Triumpfes bereits der bittere Beigeschmack einer möglichen Niederlage. Denn der heimliche Gewinner des Abends, Rodolfo Hernández, geht aufgrund der wahrscheinlichen Wahlallianzen nun als Favorit in die Stichwahl.

 

Reaktionen und Ausblick auf die Stichwahl

Nachdem die Auszählungen so weit fortgeschrittenen waren, dass die von der Wahlbehörde veröffentlichten Ergebnisse als gesichert gelten konnten, wandte sich Rodolfo Hernández als erster an die Öffentlichkeit und blieb auch dabei seinem Kommunikationsstil treu. Im charakteristischen gelben Hemd verlas er per Facebookübertragung aus der Küche seines Hauses eine Erklärung vom Blatt, in der er seinen Unterstützern dankte und ein Ende der Korruption unter seiner Regierung ankündigte. Heute hätten die verloren, die glaubten, ewig regieren zu können, so Hernández. Die nüchterne Videobotschaft stand im krassen Gegensatz zu den spontanen Straßenfesten und Auto- und Motorradkorsos in Bucaramanga, die den Wahlerfolg des „Ingenieurs“ – wie seine Anhänger Hernández nennen – bejubelten. Wenig später trat Frederico Gutiérrez in Bogotá vor die Kameras, gestand seine Wahlniederlage ein und erklärte seinen Unterstützern, dass er zwar noch nicht mit Hernández gesprochen habe, dass er aber, um Freiheit und Demokratie in Kolumbien zu schützen, diesen unterstützen werde. Der Wahlsieger des ersten Wahlgangs, Gustavo Petro, trat erst am späten Abend vor seine Anhänger und die Medien. Denn der überraschende Wahlerfolg von Hernández stellte seine bisherige Wahlkampstrategie auf den Kopf. Die eigene Inszenierung als Kandidat des Wandels gegen einen Kandidaten des verkrusteten, politischen Establishments und der Kontinuität, die auf Gutiérrez gemünzt war, läuft gegen das Phänomen Hernández ins Leere. In seiner Ansprache dankte Petro seinen Unterstützern, verwies auf den historischen Wahlerfolg seines Wahlbündnisses und setzte erste Attacken auf den unerwarteten Konkurrenten. Korruption bekämpfe man nicht mit Phrasen auf Tictoc, so Petro. Er und seine politischen Wegbegleiter hätten ihr Leben riskiert, um Korruption aufzudecken und zu bekämpfen. Petro verwies zudem auf das laufende Korruptionsverfahren gegen Hernández. Doch so richtig überzeugend wirkte der bisherige Wahlfavorit nicht. Die Bilder vom verhaltenen Jubel bei Petros Anhängern im Saal einerseits sowie die spontanen Straßenpartys und Jubelszenen in Bucaramanga andererseits standen sinnbildlich für die neuen Kräfteverhältnisse auf der Zielgeraden der Präsidentschaftswahlen.

Petro und seine Wahlkampfstrategen wissen, dass die Chancen in einer Stichwahl mit Hernández schlechter stehen als in dem ursprünglich erwarteten Duell mit Gutiérrez. Nun ist es plötzlich Petro, der sich als seriöser Gegenentwurf zu einem Populisten präsentieren muss, der politisch-ideologisch kaum greifbar ist und der dem lange eingeübten Wahlkampfnarrativ Petros wenig Angriffsfläche bietet. Ein Strategiewechsel könnte darin bestehen, sich künftig als Garanten eines realen und verantwortungsvollen Wandels zu präsentieren, und Hernández Vorschläge als unverantwortlich und nicht umsetzbar zu kritisieren, um damit wieder die alleinige Deutungshoheit über das Zauberwort dieses Wahlkampfes „cambio“ (Wechsel) zu gewinnen. Angesichts der erklärten Unterstützung von Fico Gutierrez für Hernández dürfte Petro zudem versuchen, diesen als Kandidaten von Uribe und der politischen Rechten zu brandmarken. Ob diese Rechnung aufgeht, ist fraglich. Denn der ehemalige Bürgermeister von Bucaramanga gilt als echter Self-made-Politiker ohne Verbindungen in die traditionelle politische Klasse des Landes. Seine Berater werden ihm ohnehin von einem offenen Schulterschluss mit dem Mitte-Rechts-Lager abraten, um seine Unabhängigkeit nicht zu gefährden.

Jenseits offener Wahlallianzen dürfte die überwältigende Mehrheit des Mitte-Rechts-Lagers im zweiten Wahlgang den Unternehmer aus Bucaramanga unterstützen, um Petro zu verhindern. Hernández und Gutiérrez vereinigten im ersten Wahlgang 52 Prozent und 11 Millionen Stimmen auf sich. Experten halten Petros Potential für Zugewinne in der Stichwahl in dieser Konstellation für sehr beschränkt. Selbst wenn Petro die 4 Prozent und 888.000 Stimmen von Fajardo für sich gewinnen könnte, bliebe er weit von einer Mehrheit entfernt. Er müsste zusätzliche Stimmen aus dem Lager der Nichtwähler sowie von Gutiérrez und Hernández anziehen. Derzeit erscheint es wahrscheinlicher, dass sich nicht nur die Petrokritiker aus dem rechten Lager hinter Hernández versammeln, sondern dass auch wichtige Figuren aus der Mitte-Links-Allianz von Sergio Fajardo ins Lager des Unternehmers wandern. Einflussreiche Politiker wie die Senatorin Angélica Lonzano oder der ehemalige Gouverneur von Boyacá, Carlos Amaya, haben sich bereits entsprechend geäußert.

Auch wenn das Momentum und die Wahlarithmetik in der Stichwahl am 19. Juni für Hernández zu sprechen scheinen, bleibt das Rennen offen. Hinter den Kulissen wird in den künftigen Tagen eifrig verhandelt, um offene oder heimliche Allianzen und Unterstützung zu sichern. Spannend bleibt die Frage, ob es Petro gelingen kann, Hernández in einer offenen Debatte zu stellen und dessen Unkenntnis in vielen Politikfeldern und fehlende programmatische Tiefe vorzuführen, oder ob Hernández sich einer öffentlichen Debatte weiter entzieht. Jetzt, wo der einstige Außenseiter im Rampenlicht steht, könnten ihm seine fehlende Sachkenntnis und sein impulsives Naturell zum Nachteil werden.

 

Fazit

Der Linkspopulist Petro erzielt im ersten Wahlgang ein historisches Stimmergebnis und droht dennoch in der Stichwahl an Überraschungsgegner Hernández zu scheitern. Die überwältigende Mehrheit der Kolumbianer wählt den radikalen Wechsel und beendet die Ära Uribe. Traditionelle politische Parteien und Eliten sowie die Regierung Duque werden abgestraft und bringen keinen eigenen Kandidaten in die Stichwahl. Die im Nachgang zu den Kongresswahlen wegen zahlreicher Fehler stark kritisierten Wahlbehörden haben für einen transparenten Wahlprozess und die zügige Veröffentlichung der Wahlergebnisse gesorgt und damit wichtiges Vertrauenskapital wiederhergestellt. Die Wahlergebnisse wurden noch am Wahlabend von den Hauptakteuren akzeptiert und nicht in Frage gestellt. Der Wahltag verlief weitgehend ohne Zwischenfälle. Angriffe auf Repräsentanten der Wahlkampagnen oder Mitglieder von Polizei und Sicherheitskräften wurden am Wahltag nicht gemeldet. Mit dem Wahldebakel für die traditionelle politische Elite und der Stichwahl zwischen zwei erklärten Gegnern des politischen Establishments folgt Kolumbien einem regionalen Trend. In der Stichwahl am 19. Juni könnte mit Rodolfo Hernández erstmals ein politischer Außenseiter ohne Parteizugehörigkeit ins Präsidentenamt gewählt werden.

Publicador de contenidos

Personas de contacto

Stefan Reith

Portrait von Stefan Reith

Representante de la KAS en Colombia

stefan.reith@kas.de +57 601 7430947

comment-portlet

Publicador de contenidos