资产发布器

Erfahrungsaustausch: Fokus Service und Kundendienst

处理模板时发生错误。
Syntax error in template "20101#20128#18566172" in line 672, column 31:
Encountered "...", but was expecting one of these patterns:
    <STRING_LITERAL>
    <RAW_STRING>
    "false"
    "true"
    <INTEGER>
    <DECIMAL>
    "."
    "+"
    "-"
    "!"
    "["
    "("
    "{"
    <ID>
1https://www.vdma.eu/lbs_recherchemodul_nl 
2</iframe> 
3<#noparse> 
4<!-- ===== Newsletter-Recherche – Komplettmodul (FTL-sicher) ===== --> 
5<style> 
6/* Barrierefreiheit */ 
7.sr-only { position:absolute; left:-9999px; top:auto; width:1px; height:1px; overflow:hidden; } 
8 
9/* Design-Variablen */ 
10.nl-module { 
11  --vdma-blue:#222F5C; 
12  --chip-bg:#ECEAE5; 
13  --chip-bg-active:#d8d6d0; 
14  --border:#D8D6D0; 
15  --text:#222; 
16  --muted:#555; 
17
18 
19/* Suchleiste mit Lupen-Icon */ 
20.nl-searchbar { 
21  position: relative; 
22  margin-bottom: 1.5rem; 
23
24 
25.nl-input { 
26  width: 100%; 
27  padding: 0.85rem 2.5rem 0.85rem 2.5rem; 
28  border: 1px solid var(--border); 
29  border-radius: 8px; 
30  font-size: 1rem; 
31  outline: none; 
32  background: #fff; 
33  background-image: url('https://cdn.jsdelivr.net/npm/[email protected]/icons/search.svg'); 
34  background-repeat: no-repeat; 
35  background-position: 0.75rem center; 
36  background-size: 1rem; 
37
38 
39.nl-input:focus { 
40  border-color: var(--vdma-blue); 
41  box-shadow: 0 0 0 3px rgba(34,47,92,.15); 
42
43 
44.nl-clear { 
45  position: absolute; 
46  right: .25rem; 
47  top: 50%; 
48  transform: translateY(-50%); 
49  border: 0; 
50  background: transparent; 
51  width: 2rem; 
52  height: 2rem; 
53  font-size: 1.25rem; 
54  color: var(--muted); 
55  cursor: pointer; 
56
57 
58/* Vorschläge (Typeahead) */ 
59.nl-suggestions { 
60  display: none; 
61  position: absolute; 
62  left: 0; 
63  right: 0; 
64  top: calc(100% + 4px); 
65  background: #fff; 
66  border: 1px solid var(--border); 
67  border-radius: 8px; 
68  max-height: 320px; 
69  overflow: auto; 
70  z-index: 10; 
71  box-shadow: 0 8px 20px rgba(0,0,0,.08); 
72
73.nl-suggestions.show { display: block; } 
74.nl-suggestions .group { padding: .5rem .5rem 0; } 
75.nl-suggestions .group h5 { 
76  margin: .25rem .5rem; 
77  font-size: .8rem; 
78  color: var(--muted); 
79  text-transform: uppercase; 
80  letter-spacing: .02em; 
81
82.nl-suggestions button { 
83  width: 100%; 
84  text-align: left; 
85  background: #fff; 
86  border: 0; 
87  padding: .5rem .75rem; 
88  cursor: pointer; 
89  font-size: .95rem; 
90
91.nl-suggestions button[aria-selected="true"], 
92.nl-suggestions button:hover { 
93  background: #f5f5f5; 
94
95 
96/* Horizontale Filterleiste */ 
97.nl-filters { 
98  display: flex; 
99  flex-wrap: wrap; 
100  gap: 2rem; 
101  margin-bottom: 1rem; 
102  border-bottom: 1px solid var(--border); 
103  padding-bottom: 1rem; 
104
105 
106.nl-facet { 
107  flex: 1 1 200px; 
108
109 
110.nl-facet h4 { 
111  margin-bottom: 0.5rem; 
112  font-size: 0.95rem; 
113  color: var(--vdma-blue); 
114
115 
116.nl-chips { 
117  display: flex; 
118  flex-wrap: wrap; 
119  gap: 0.5rem; 
120
121 
122.nl-chip { 
123  appearance: none; 
124  border: 1px solid var(--border); 
125  border-radius: 999px; 
126  padding: 0.4rem 0.75rem; 
127  background: var(--chip-bg); 
128  cursor: pointer; 
129  font-size: 0.92rem; 
130  color: var(--text); 
131
132 
133.nl-chip[aria-pressed="true"] { 
134  background: var(--chip-bg-active); 
135  border-color: var(--vdma-blue); 
136  color: var(--vdma-blue); 
137
138</style> 
139 
140<section id="nl-module" class="nl-module" aria-label="Newsletter-Suche"> 
141  <!-- Suchleiste --> 
142  <div class="nl-searchbar" role="search"> 
143    <label class="sr-only" for="nl-q">Suche</label> 
144    <input id="nl-q" class="nl-input" type="search" 
145           placeholder="Suche nach Thema, Branche, Region …" 
146           autocomplete="off" aria-autocomplete="list" aria-expanded="false" aria-controls="nl-suggestions" /> 
147    <button type="button" class="nl-clear" aria-label="Suche löschen">×</button> 
148    <div id="nl-suggestions" class="nl-suggestions" role="listbox" aria-label="Vorschläge"></div> 
149  </div> 
150 
151  <!-- Filter / Facetten --> 
152  <details class="nl-filters" open> 
153    <summary>Filter ein-/ausklappen</summary> 
154 
155    <div class="nl-facet" data-facet="topics"> 
156      <h4>Themen</h4> 
157      <div id="facet-topics" class="nl-chips" aria-label="Themen"></div> 
158    </div> 
159 
160    <div class="nl-facet" data-facet="branches"> 
161      <h4>Branchen</h4> 
162      <div id="facet-branches" class="nl-chips" aria-label="Branchen"></div> 
163    </div> 
164 
165    <div class="nl-facet" data-facet="regions"> 
166      <h4>Regionen</h4> 
167      <div id="facet-regions" class="nl-chips" aria-label="Regionen"></div> 
168    </div> 
169 
170    <div class="nl-facet" data-facet="lang"> 
171      <h4>Sprache</h4> 
172      <div id="facet-lang" class="nl-chips" aria-label="Sprache"></div> 
173    </div> 
174 
175    <div class="nl-activefilters" aria-live="polite"></div> 
176    <div class="nl-controls"> 
177      <button type="button" class="nl-reset">Filter zurücksetzen</button> 
178    </div> 
179  </details> 
180</section> 
181</#noparse> 
182 
183  <!-- Treffer-Infos --> 
184  <div class="nl-meta" aria-live="polite"> 
185    <strong id="nl-count">0</strong> Treffer 
186  </div> 
187 
188  <!-- Keine-Treffer-Hinweis --> 
189  <p id="nl-empty" class="nl-empty" aria-live="polite">Keine Treffer. Bitte Suchbegriff oder Filter anpassen.</p> 
190 
191  <!-- ===== Ergebnisliste: Einträge als Cards ===== --> 
192  <div id="nl-results" class="nl-results"> 
193    <!-- === BRANCHEN (Auszug) === --> 
194    <article class="nl-card" 
195      data-branches="Antriebstechnik" 
196      data-regions="" 
197      data-lang="DE" 
198      data-topics="Technische Standards & Normung|Forschungsergebnisse & Marktanalysen|Branchenmessen & Fachveranstaltungen|Entwicklungen & Innovationen im Maschinenbau"> 
199      <h3 class="nl-title">Branchenblick – Antriebstechnik</h3> 
200      <p class="nl-teaser">Aktuelles aus der Antriebstechnik und dem Maschinenbau.</p> 
201      <ul class="nl-info"> 
202        <li><strong>Kontakt:</strong> Solveig Adler</li> 
203        <li><strong>Frequenz:</strong> vierteljährlich</li> 
204        <li><strong>Bereitstellung:</strong> Newsletter (mit Opt‑in)</li> 
205        <li><strong>Sprache:</strong> DE</li> 
206      </ul> 
207      <aetzt abonnieren</a> 
208    </article> 
209 
210    <article class="nl-card" 
211      data-branches="Productronic" 
212      data-regions="" 
213      data-lang="DE" 
214      data-topics="Technische Standards & Normung|Forschungsergebnisse & Marktanalysen|Branchenmessen & Fachveranstaltungen|Entwicklungen & Innovationen im Maschinenbau"> 
215      <h3 class="nl-title">Branchenblick – Productronic</h3> 
216      <p class="nl-teaser">Aktuelles aus der Productronic und dem Maschinenbau.</p> 
217      <ul class="nl-info"> 
218        <li><strong>Kontakt:</strong> Dr. Sandra Engel und Angela Bönicke</li> 
219        <li><strong>Frequenz:</strong> ad‑hoc</li> 
220        <li><strong>Bereitstellung:</strong> Newsletter (mit Opt‑in)</li> 
221        <li><strong>Sprache:</strong> DE</li> 
222      </ul> 
223      <a classbonnieren</a> 
224    </article> 
225 
226    <article class="nl-card" 
227      data-branches="Fluidtechnik" 
228      data-regions="" 
229      data-lang="DE" 
230      data-topics="Technische Standards & Normung|Forschungsergebnisse & Marktanalysen|Branchenmessen & Fachveranstaltungen|Entwicklungen & Innovationen im Maschinenbau"> 
231      <h3 class="nl-title">Branchenblick – Fluidtechnik</h3> 
232      <p class="nl-teaser">Aktuelles aus der Fluidtechnik und dem Maschinenbau.</p> 
233      <ul class="nl-info"> 
234        <li><strong>Kontakt:</strong> Ann‑Catrin Rehermann</li> 
235        <li><strong>Frequenz:</strong> vierteljährlich</li> 
236        <li><strong>Bereitstellung:</strong> Newsletter (mit Opt‑in)</li> 
237        <li><strong>Sprache:</strong> DE</li> 
238      </ul> 
239      <a classbonnieren</a> 
240    </article> 
241 
242    <article class="nl-card" 
243      data-branches="Forum Glastechnik" 
244      data-regions="" 
245      data-lang="DE|EN" 
246      data-topics="Arbeitskreise|Branchenmessen & Fachveranstaltungen|Leistungen aus dem VDMA"> 
247      <h3 class="nl-title">Branchenblick – Forum Glastechnik</h3> 
248      <p class="nl-teaser">Aktuelles aus dem Forum Glastechnik.</p> 
249      <ul class="nl-info"> 
250        <li><strong>Kontakt:</strong> Susanne Biernat</li> 
251        <li><strong>Frequenz:</strong> monatlich</li> 
252        <li><strong>Bereitstellung:</strong> Newsletter (mit Opt‑in)</li> 
253        <li><strong>Sprache:</strong> DE/EN</li> 
254      </ul> 
255      <Jetzt abonnieren</a> 
256    </article> 
257 
258    <article class="nl-card" 
259      data-branches="HealthTech" 
260      data-regions="" 
261      data-lang="DE" 
262      data-topics="Gesundheitstechnik|Branchennews|Veranstaltungen"> 
263      <h3 class="nl-title">AG HealthTech</h3> 
264      <p class="nl-teaser">AG HealthTech.</p> 
265      <ul class="nl-info"> 
266        <li><strong>Kontakt:</strong> Niklas Kuczaty</li> 
267        <li><strong>Frequenz:</strong> zweimonatlich</li> 
268        <li><strong>Sprache:</strong> DE</li> 
269      </ul> 
270      #Jetzt abonnieren</a> 
271    </article> 
272 
273    <article class="nl-card" 
274      data-branches="Materials Handling and Intralogistics" 
275      data-regions="" 
276      data-lang="DE|EN" 
277      data-topics="Fachverbandsnews|Veranstaltungen|Mitglieder|Märkte"> 
278      <h3 class="nl-title">VDMA Materials Handling and Intralogistics</h3> 
279      <p class="nl-teaser">News und Events für Mitgliedsunternehmen (DE/EN).</p> 
280      <ul class="nl-info"> 
281        <li><strong>Kontakt:</strong> Juliane Kluge</li> 
282        <li><strong>Frequenz:</strong> unregelmäßig</li> 
283        <li><strong>Sprache:</strong> DE/EN</li> 
284      </ul> 
285      <aetzt abonnieren</a> 
286    </article> 
287 
288    <article class="nl-card" 
289      data-branches="Electronics, Solar and Battery Production" 
290      data-regions="" 
291      data-lang="DE" 
292      data-topics="Technische Standards & Normung|Forschungsergebnisse & Marktanalysen|Branchenmessen & Fachveranstaltungen|Entwicklungen & Innovationen im Maschinenbau"> 
293      <h3 class="nl-title">Branchenblick – Electronics, Solar and Battery Production</h3> 
294      <p class="nl-teaser">Aktuelles aus der ESBP und dem Maschinenbau.</p> 
295      <ul class="nl-info"> 
296        <li><strong>Kontakt:</strong> Alexandra Janik‑Hannen</li> 
297        <li><strong>Frequenz:</strong> ad‑hoc</li> 
298        <li><strong>Bereitstellung:</strong> Newsletter (mit Opt‑in)</li> 
299        <li><strong>Sprache:</strong> DE</li> 
300      </ul> 
301      #Jetzt abonnieren</a> 
302    </article> 
303 
304    <article class="nl-card" 
305      data-branches="Mining & Minerals" 
306      data-regions="" 
307      data-lang="DE|EN" 
308      data-topics="Marktentwicklung & Konjunktur|Delegationsreisen & Aktivitäten|Normung & OPC UA|Messen, Veranstaltungen & Seminare"> 
309      <h3 class="nl-title">Branchenblick – Mining & Minerals</h3> 
310      <p class="nl-teaser">Aktuelles aus Mining & Minerals und dem Maschinenbau.</p> 
311      <ul class="nl-info"> 
312        <li><strong>Kontakt:</strong> Alexandra Landgraf</li> 
313        <li><strong>Frequenz:</strong> monatlich</li> 
314        <li><strong>Sprache:</strong> DE/EN</li> 
315      </ul> 
316      <a class="nlieren</a> 
317    </article> 
318 
319    <article class="nl-card" 
320      data-branches="" 
321      data-regions="Afrika" 
322      data-lang="DE" 
323      data-topics="Marktentwicklung & Konjunktur|Nahrungsmittelverarbeitung|Afrika"> 
324      <h3 class="nl-title">Afrika Aktuell</h3> 
325      <p class="nl-teaser">Konjunktur & Marktgeschehen in der nahrungsmittelverarbeitenden Industrie Afrikas.</p> 
326      <ul class="nl-info"> 
327        <li><strong>Kontakt:</strong> VDMA Services</li> 
328        <li><strong>Frequenz:</strong> keine Angabe</li> 
329        <li><strong>Sprache:</strong> DE</li> 
330      </ul> 
331      <a class="nl-btnn</a> 
332    </article> 
333 
334    <article class="nl-card" 
335      data-branches="Photovoltaik" 
336      data-regions="" 
337      data-lang="DE" 
338      data-topics="Technische Standards & Normung|Forschungsergebnisse & Marktanalysen|Branchenmessen & Fachveranstaltungen|Entwicklungen & Innovationen im Maschinenbau"> 
339      <h3 class="nl-title">Branchenblick – Photovoltaik</h3> 
340      <p class="nl-teaser">Aktuelles aus der Photovoltaik und dem Maschinenbau.</p> 
341      <ul class="nl-info"> 
342        <li><strong>Kontakt:</strong> Alexandra Janik‑Hannen</li> 
343        <li><strong>Frequenz:</strong> ad‑hoc</li> 
344        <li><strong>Bereitstellung:</strong> Newsletter (mit Opt‑in)</li> 
345        <li><strong>Sprache:</strong> DE</li> 
346      </ul> 
347      <Jetzt abonnieren</a> 
348    </article> 
349 
350    <article class="nl-card" 
351      data-branches="Additive Manufacturing" 
352      data-regions="" 
353      data-lang="DE" 
354      data-topics="Additive Fertigung|Anwendungen|Veranstaltungen"> 
355      <h3 class="nl-title">VDMA Additive Manufacturing</h3> 
356      <p class="nl-teaser">Entwicklungen, Anwendungen und Veranstaltungen im Bereich Additive Fertigung.</p> 
357      <ul class="nl-info"> 
358        <li><strong>Kontakt:</strong> Dr. Markus Heering</li> 
359        <li><strong>Frequenz:</strong> monatlich</li> 
360        <li><strong>Sprache:</strong> DE</li> 
361      </ul> 
362      #Jetzt abonnieren</a> 
363    </article> 
364 
365    <article class="nl-card" 
366      data-branches="Industrial IT" 
367      data-regions="" 
368      data-lang="DE" 
369      data-topics="IT‑Sicherheit|Industrielle IT|Digitalisierung"> 
370      <h3 class="nl-title">VDMA Industrial IT</h3> 
371      <p class="nl-teaser">Informationen zu industrieller IT und IT‑Sicherheit.</p> 
372      <ul class="nl-info"> 
373        <li><strong>Kontakt:</strong> Dr. Christian Möller</li> 
374        <li><strong>Frequenz:</strong> monatlich</li> 
375        <li><strong>Sprache:</strong> DE</li> 
376      </ul> 
377      <a classbonnieren</a> 
378    </article> 
379 
380    <article class="nl-card" 
381      data-branches="Kunststoff- und Gummimaschinen" 
382      data-regions="" 
383      data-lang="DE" 
384      data-topics="Märkte|Technologien|Veranstaltungen"> 
385      <h3 class="nl-title">VDMA Kunststoff‑ und Gummimaschinen</h3> 
386      <p class="nl-teaser">Märkte, Technologien und Veranstaltungen rund um Kunststoff‑ und Gummimaschinen.</p> 
387      <ul class="nl-info"> 
388        <li><strong>Kontakt:</strong> [email protected]</li> 
389        <li><strong>Frequenz:</strong> monatlich</li> 
390        <li><strong>Sprache:</strong> DE</li> 
391      </ul> 
392      #Jetzt abonnieren</a> 
393    </article> 
394 
395    <article class="nl-card" 
396      data-branches="Aufzüge und Fahrtreppen" 
397      data-regions="" 
398      data-lang="DE|EN" 
399      data-topics="Märkte|Technologien|Veranstaltungen"> 
400      <h3 class="nl-title">VDMA Newsletter Aufzüge und Fahrtreppen</h3> 
401      <p class="nl-teaser">Informationen zu Märkten, Technologien und Veranstaltungen.</p> 
402      <ul class="nl-info"> 
403        <li><strong>Kontakt:</strong> Lisa Pfirrmann</li> 
404        <li><strong>Frequenz:</strong> vierteljährlich</li> 
405        <li><strong>Sprache:</strong> DE/EN</li> 
406      </ul> 
407      <Jetzt abonnieren</a> 
408    </article> 
409 
410    <article class="nl-card" 
411      data-branches="Micro Technologies" 
412      data-regions="" 
413      data-lang="DE" 
414      data-topics="Technische Standards & Normung|Forschungsergebnisse & Marktanalysen|Branchenmessen & Fachveranstaltungen|Entwicklungen & Innovationen im Maschinenbau"> 
415      <h3 class="nl-title">Branchenblick – Micro Technologies</h3> 
416      <p class="nl-teaser">Aktuelles aus der Micro‑Technologies‑Branche und dem Maschinenbau.</p> 
417      <ul class="nl-info"> 
418        <li><strong>Kontakt:</strong> Johanna Schreiner und Alice Persichetti</li> 
419        <li><strong>Frequenz:</strong> ad‑hoc</li> 
420        <li><strong>Bereitstellung:</strong> Newsletter (mit Opt‑in)</li> 
421        <li><strong>Sprache:</strong> DE</li> 
422      </ul> 
423      #Jetzt abonnieren</a> 
424    </article> 
425 
426    <article class="nl-card" 
427      data-branches="OPC UA" 
428      data-regions="" 
429      data-lang="DE" 
430      data-topics="OPC UA|Interoperabilität|Standardisierung"> 
431      <h3 class="nl-title">VDMA OPC UA</h3> 
432      <p class="nl-teaser">Updates zur OPC UA‑Technologie und deren Einsatz im Maschinenbau.</p> 
433      <ul class="nl-info"> 
434        <li><strong>Kontakt:</strong> Dr. Christian Möller</li> 
435        <li><strong>Frequenz:</strong> monatlich</li> 
436        <li><strong>Sprache:</strong> DE</li> 
437      </ul> 
438      <Jetzt abonnieren</a> 
439    </article> 
440 
441    <article class="nl-card" 
442      data-branches="Robotik + Automation" 
443      data-regions="" 
444      data-lang="DE" 
445      data-topics="Robotik|Industrielle Bildverarbeitung|Integrated Assembly Solutions"> 
446      <h3 class="nl-title">VDMA Robotik + Automation</h3> 
447      <p class="nl-teaser">Neuigkeiten aus Robotik, Industrieller Bildverarbeitung und Integrated Assembly Solutions.</p> 
448      <ul class="nl-info"> 
449        <li><strong>Kontakt:</strong> [email protected]</li> 
450        <li><strong>Frequenz:</strong> monatlich</li> 
451        <li><strong>Sprache:</strong> DE</li> 
452      </ul> 
453      #Jetzt abonnieren</a> 
454    </article> 
455 
456    <article class="nl-card" 
457      data-branches="Software und Digitalisierung" 
458      data-regions="" 
459      data-lang="DE" 
460      data-topics="Software|Digitalisierung|Maschinenbau"> 
461      <h3 class="nl-title">VDMA Software und Digitalisierung</h3> 
462      <p class="nl-teaser">Aktuelles aus dem Bereich Software und Digitalisierung im Maschinenbau.</p> 
463      <ul class="nl-info"> 
464        <li><strong>Kontakt:</strong> Dr. Josef Waltl</li> 
465        <li><strong>Frequenz:</strong> monatlich</li> 
466        <li><strong>Sprache:</strong> DE</li> 
467      </ul> 
468      <a classbonnieren</a> 
469    </article> 
470 
471    <article class="nl-card" 
472      data-branches="Textilmaschinen" 
473      data-regions="" 
474      data-lang="DE|EN" 
475      data-topics="Branchennews|Veranstaltungen|Trends"> 
476      <h3 class="nl-title">Rundschreiben: Blickpunkt (Textilmaschinen)</h3> 
477      <p class="nl-teaser">Branchennews, Veranstaltungen und Trends aus dem Bereich Textilmaschinen.</p> 
478      <ul class="nl-info"> 
479        <li><strong>Kontakt:</strong> Reingard Schwalbe</li> 
480        <li><strong>Frequenz:</strong> monatlich</li> 
481        <li><strong>Sprache:</strong> DE/EN</li> 
482      </ul> 
483      <a class="nl-btnn</a> 
484    </article> 
485 
486    <article class="nl-card" 
487      data-branches="Verfahrenstechnische Maschinen" 
488      data-regions="" 
489      data-lang="DE" 
490      data-topics="Marktentwicklung & Konjunktur|Delegationsreisen & Aktivitäten|Messen, Veranstaltungen & Seminare"> 
491      <h3 class="nl-title">Branchenblick – Verfahrenstechnische Maschinen</h3> 
492      <p class="nl-teaser">Aktuelles aus Verfahrenstechnische Maschinen & Apparate und dem Maschinenbau.</p> 
493      <ul class="nl-info"> 
494        <li><strong>Kontakt:</strong> Alexandra Prawitz</li> 
495        <li><strong>Frequenz:</strong> 14‑tägig</li> 
496        <li><strong>Bereitstellung:</strong> Newsletter (mit Opt‑in)</li> 
497        <li><strong>Sprache:</strong> DE</li> 
498      </ul> 
499      #Jetzt abonnieren</a> 
500    </article> 
501 
502    <article class="nl-card" 
503      data-branches="Verpackungsmaschinen" 
504      data-regions="" 
505      data-lang="DE" 
506      data-topics="Technik|Märkte|Politik"> 
507      <h3 class="nl-title">VDMA Verpackungsmaschinen</h3> 
508      <p class="nl-teaser">Aktuelles aus dem Bereich Verpackungsmaschinen – Technik, Märkte und Politik.</p> 
509      <ul class="nl-info"> 
510        <li><strong>Kontakt:</strong> Dr. Bernd Jablonowski</li> 
511        <li><strong>Frequenz:</strong> monatlich</li> 
512        <li><strong>Sprache:</strong> DE</li> 
513      </ul> 
514      #Jetzt abonnieren</a> 
515    </article> 
516 
517    <article class="nl-card" 
518      data-branches="Verfahrenstechnik" 
519      data-regions="" 
520      data-lang="DE" 
521      data-topics="Branchenrelevante Themen|Konjunktur|Verbandsaktivitäten"> 
522      <h3 class="nl-title">VDMA Verfahrenstechnik</h3> 
523      <p class="nl-teaser">Aktuelle branchenrelevante Themen, Konjunkturdaten und Aktivitäten im Fachverband.</p> 
524      <ul class="nl-info"> 
525        <li><strong>Kontakt:</strong> VDMA Services</li> 
526        <li><strong>Frequenz:</strong> monatlich</li> 
527        <li><strong>Sprache:</strong> DE</li> 
528      </ul> 
529      #Jetzt abonnieren</a> 
530    </article> 
531 
532    <!-- === REGIONEN === --> 
533    <article class="nl-card" 
534      data-branches="" 
535      data-regions="Bayern" 
536      data-lang="DE" 
537      data-topics="Regionale Informationen|Veranstaltungen|Mitglieder"> 
538      <h3 class="nl-title">VDMA Bayern</h3> 
539      <p class="nl-teaser">Regionale Informationen und Veranstaltungen für Mitglieder in Bayern.</p> 
540      <ul class="nl-info"> 
541        <li><strong>Kontakt:</strong> [email protected]</li> 
542        <li><strong>Frequenz:</strong> monatlich</li> 
543        <li><strong>Sprache:</strong> DE</li> 
544      </ul> 
545      <a class="nl-btn"</a> 
546    </article> 
547 
548    <article class="nl-card" 
549      data-branches="" 
550      data-regions="Berlin" 
551      data-lang="DE" 
552      data-topics="Regionale Informationen|Veranstaltungen|Mitglieder"> 
553      <h3 class="nl-title">VDMA Berlin</h3> 
554      <p class="nl-teaser">Regionale Informationen und Veranstaltungen für Mitglieder in Berlin.</p> 
555      <ul class="nl-info"> 
556        <li><strong>Kontakt:</strong> [email protected]</li> 
557        <li><strong>Frequenz:</strong> monatlich</li> 
558        <li><strong>Sprache:</strong> DE</li> 
559      </ul> 
560      #Jetzt abonnieren</a> 
561    </article> 
562 
563    <article class="nl-card" 
564      data-branches="" 
565      data-regions="Mitte" 
566      data-lang="DE" 
567      data-topics="Regionale Informationen|Veranstaltungen|Mitglieder|Hessen|Rheinland-Pfalz|Saarland"> 
568      <h3 class="nl-title">VDMA Mitte</h3> 
569      <p class="nl-teaser">Regionale Informationen für Hessen, Rheinland‑Pfalz und Saarland.</p> 
570      <ul class="nl-info"> 
571        <li><strong>Kontakt:</strong> [email protected]</li> 
572        <li><strong>Frequenz:</strong> monatlich</li> 
573        <li><strong>Sprache:</strong> DE</li> 
574      </ul> 
575      #Jetzt abonnieren</a> 
576    </article> 
577 
578    <article class="nl-card" 
579      data-branches="" 
580      data-regions="Nord" 
581      data-lang="DE" 
582      data-topics="Regionale Informationen|Veranstaltungen|Mitglieder"> 
583      <h3 class="nl-title">VDMA Nord</h3> 
584      <p class="nl-teaser">Regionale Informationen und Veranstaltungen für Mitglieder in Norddeutschland.</p> 
585      <ul class="nl-info"> 
586        <li><strong>Kontakt:</strong> [email protected]</li> 
587        <li><strong>Frequenz:</strong> monatlich</li> 
588        <li><strong>Sprache:</strong> DE</li> 
589      </ul> 
590      #Jetzt abonnieren</a> 
591    </article> 
592 
593    <article class="nl-card" 
594      data-branches="" 
595      data-regions="NRW" 
596      data-lang="DE" 
597      data-topics="Regionale Informationen|Veranstaltungen|Mitglieder"> 
598      <h3 class="nl-title">VDMA NRW</h3> 
599      <p class="nl-teaser">Regionale Informationen und Veranstaltungen für Mitglieder in NRW.</p> 
600      <ul class="nl-info"> 
601        <li><strong>Kontakt:</strong> [email protected]</li> 
602        <li><strong>Frequenz:</strong> monatlich</li> 
603        <li><strong>Sprache:</strong> DE</li> 
604      </ul> 
605      <a class="nlieren</a> 
606    </article> 
607 
608    <article class="nl-card" 
609      data-branches="" 
610      data-regions="Ost" 
611      data-lang="DE" 
612      data-topics="Regionale Informationen|Veranstaltungen|Mitglieder|Sachsen|Sachsen-Anhalt|Mecklenburg-Vorpommern|Brandenburg|Berlin|Thüringen"> 
613      <h3 class="nl-title">VDMA Ost</h3> 
614      <p class="nl-teaser">Regionale Informationen für Ostdeutschland (Sachsen, Sachsen‑Anhalt, Mecklenburg‑Vorpommern, Brandenburg, Berlin, Thüringen).</p> 
615      <ul class="nl-info"> 
616        <li><strong>Kontakt:</strong> [email protected]</li> 
617        <li><strong>Frequenz:</strong> monatlich</li> 
618        <li><strong>Sprache:</strong> DE</li> 
619      </ul> 
620      #Jetzt abonnieren</a> 
621    </article> 
622 
623    <article class="nl-card" 
624      data-branches="" 
625      data-regions="Schweiz" 
626      data-lang="DE" 
627      data-topics="Regionale Informationen|Veranstaltungen|Mitglieder|Schweiz"> 
628      <h3 class="nl-title">VDMA Schweiz</h3> 
629      <p class="nl-teaser">Informationen für Schweizer Mitglieder und Interessenten.</p> 
630      <ul class="nl-info"> 
631        <li><strong>Kontakt:</strong> [email protected]</li> 
632        <li><strong>Frequenz:</strong> monatlich</li> 
633        <li><strong>Sprache:</strong> DE</li> 
634      </ul> 
635      #Jetzt abonnieren</a> 
636    </article> 
637 
638    <article class="nl-card" 
639      data-branches="" 
640      data-regions="Österreich" 
641      data-lang="DE" 
642      data-topics="Regionale Informationen|Veranstaltungen|Mitglieder|Österreich"> 
643      <h3 class="nl-title">VDMA Österreich</h3> 
644      <p class="nl-teaser">Informationen für österreichische Mitglieder und Interessenten.</p> 
645      <ul class="nl-info"> 
646        <li><strong>Kontakt:</strong> [email protected]</li> 
647        <li><strong>Frequenz:</strong> monatlich</li> 
648        <li><strong>Sprache:</strong> DE</li> 
649      </ul> 
650      #Jetzt abonnieren</a> 
651    </article> 
652 
653    <article class="nl-card" 
654      data-branches="" 
655      data-regions="Berlin" 
656      data-lang="DE" 
657      data-topics="Regionale Updates|Aktivitäten des VDMA|Berlin"> 
658      <h3 class="nl-title">VDMA Berlin – Updates</h3> 
659      <p class="nl-teaser">Updates für VDMA Mitglieder zu aktuellen Aktivitäten des VDMA in Berlin.</p> 
660      <ul class="nl-info"> 
661        <li><strong>Kontakt:</strong> Florian von Gierke</li> 
662        <li><strong>Frequenz:</strong> unregelmäßig</li> 
663        <li><strong>Sprache:</strong> DE</li> 
664      </ul> 
665      #Jetzt abonnieren</a> 
666    </article> 
667  </div> 
668</section> 
669 
670<script> 
671/* ===== Newsletter-Recherche – Logik (vanilla JS, FTL-sicher) ===== 
672   - Keine Backticks, keine ${...} in Strings 
673   - Volltextsuche (Titel, Teaser, Facetten) 
674   - Facettenfilter (AND zwischen Facetten, OR innerhalb einer Facette) 
675   - Typeahead ab 2 Zeichen 
676   - URL-Parameter q, topics, branches, regions, lang 
677   - Progressive Enhancement: ohne JS werden alle Cards angezeigt 
678*/ 
679(function(){ 
680  var el = { 
681    q: document.getElementById('nl-q'), 
682    clear: document.querySelector('.nl-clear'), 
683    suggestions: document.getElementById('nl-suggestions'), 
684    results: document.getElementById('nl-results'), 
685    count: document.getElementById('nl-count'), 
686    empty: document.getElementById('nl-empty'), 
687    facetTopics: document.getElementById('facet-topics'), 
688    facetBranches: document.getElementById('facet-branches'), 
689    facetRegions: document.getElementById('facet-regions'), 
690    facetLang: document.getElementById('facet-lang'), 
691    active: document.querySelector('.nl-activefilters'), 
692    reset: document.querySelector('.nl-reset') 
693  }; 
694 
695  // Cards einlesen 
696  var cardNodes = el.results.querySelectorAll('.nl-card'); 
697  var cards = Array.prototype.map.call(cardNodes, function(card){ 
698    var title = (card.querySelector('.nl-title') ? card.querySelector('.nl-title').textContent : '').trim(); 
699    var teaser = (card.querySelector('.nl-teaser') ? card.querySelector('.nl-teaser').textContent : '').trim(); 
700    var topics = (card.getAttribute('data-topics') || '').split('|').map(function(v){ return v.trim(); }).filter(Boolean); 
701    var branches = (card.getAttribute('data-branches') || '').split('|').map(function(v){ return v.trim(); }).filter(Boolean); 
702    var regions = (card.getAttribute('data-regions') || '').split('|').map(function(v){ return v.trim(); }).filter(Boolean); 
703    var lang = (card.getAttribute('data-lang') || '').split('|').map(function(v){ return v.trim(); }).filter(Boolean); 
704    return { el: card, title: title, teaser: teaser, topics: topics, branches: branches, regions: regions, lang: lang }; 
705  }); 
706 
707  // Helpers 
708  function norm(s){ 
709    // Diakritika entfernen ohne \p{...}, für maximale Kompatibilität 
710    return (s || '') 
711      .normalize('NFD') 
712      .replace(/[\u0300-\u036f]/g, '') 
713      .toLowerCase(); 
714
715  function unique(arr){ 
716    var set = Object.create(null); 
717    var out = []; 
718    arr.forEach(function(v){ 
719      if(v && !set[v]){ set[v]=true; out.push(v); } 
720    }); 
721    out.sort(function(a,b){ return a.localeCompare(b,'de'); }); 
722    return out; 
723
724  function escapeHtml(str){ 
725    return String(str) 
726      .replace(/&/g,'&amp;') 
727      .replace(/</g,'&lt;') 
728      .replace(/>/g,'&gt;') 
729      .replace(/"/g,'&quot;') 
730      .replace(/'/g,'&#39;'); 
731
732 
733  // Facetten automatisch sammeln 
734  var ALL = { 
735    topics: unique([].concat.apply([], cards.map(function(c){ return c.topics; }))), 
736    branches: unique([].concat.apply([], cards.map(function(c){ return c.branches; }))), 
737    regions: unique([].concat.apply([], cards.map(function(c){ return c.regions; }))), 
738    lang: unique([].concat.apply([], cards.map(function(c){ return c.lang; }))) 
739  }; 
740 
741  // State 
742  var state = { q:'', topics:new Set(), branches:new Set(), regions:new Set(), lang:new Set() }; 
743 
744  // Facetten-UI 
745  function renderFacet(container, facetKey, values){ 
746    container.innerHTML = ''; 
747    values.forEach(function(value){ 
748      var btn = document.createElement('button'); 
749      btn.type = 'button'; 
750      btn.className = 'nl-chip'; 
751      btn.setAttribute('aria-pressed','false'); 
752      btn.setAttribute('data-facet', facetKey); 
753      btn.setAttribute('data-value', value); 
754      btn.textContent = value; 
755      container.appendChild(btn); 
756    }); 
757
758  renderFacet(el.facetTopics, 'topics', ALL.topics); 
759  renderFacet(el.facetBranches, 'branches', ALL.branches); 
760  renderFacet(el.facetRegions, 'regions', ALL.regions); 
761  renderFacet(el.facetLang, 'lang', ALL.lang); 
762 
763  // Aktiv-Filter-Tags 
764  function renderActiveTags(){ 
765    var tags = []; 
766    ['topics','branches','regions','lang'].forEach(function(key){ 
767      state[key].forEach(function(value){ 
768        tags.push( 
769          '<span class="tag">' + escapeHtml(value) + 
770          '<button type="button" data-remove="' + key + '|' + value + '" aria-label="Filter ' + escapeHtml(value) + ' entfernen">×</button></span>' 
771        ); 
772      }); 
773    }); 
774    el.active.innerHTML = tags.join(''); 
775
776 
777  // Filtern 
778  function matchesFacet(set, values){ return set.size===0 || values.some(function(v){ return set.has(v); }); } 
779  function applyFilter(){ 
780    var nq = norm(state.q); 
781    var visible = 0; 
782    cards.forEach(function(c){ 
783      var hay = [c.title, c.teaser].concat(c.topics, c.branches, c.regions, c.lang); 
784      var inText = !nq || hay.some(function(s){ return norm(s).indexOf(nq) !== -1; }); 
785      var ok = inText 
786        && matchesFacet(state.topics, c.topics) 
787        && matchesFacet(state.branches, c.branches) 
788        && matchesFacet(state.regions, c.regions) 
789        && matchesFacet(state.lang, c.lang); 
790 
791      c.el.style.display = ok ? '' : 'none'; 
792      if(ok) visible++; 
793    }); 
794    el.count.textContent = visible; 
795    el.empty.style.display = visible ? 'none' : ''; 
796    renderActiveTags(); 
797 
798    // Chips Zustand syncen 
799    var chips = document.querySelectorAll('.nl-chip'); 
800    Array.prototype.forEach.call(chips, function(ch){ 
801      var k = ch.getAttribute('data-facet'); 
802      var v = ch.getAttribute('data-value'); 
803      var active = state[k].has(v); 
804      ch.setAttribute('aria-pressed', active ? 'true' : 'false'); 
805    }); 
806 
807    updateURL(); 
808
809 
810  // URL-Parameter 
811  function updateURL(){ 
812    var p = new URLSearchParams(); 
813    if(state.q) p.set('q', state.q); 
814    ['topics','branches','regions','lang'].forEach(function(k){ 
815      if(state[k].size) p.set(k, Array.from(state[k]).join('|')); 
816    }); 
817    var newUrl = location.pathname + (p.toString() ? ('?' + p.toString()) : '') + location.hash; 
818    history.replaceState(null, '', newUrl); 
819
820  function loadFromURL(){ 
821    var p = new URLSearchParams(location.search); 
822    state.q = p.get('q') || ''; 
823    ['topics','branches','regions','lang'].forEach(function(k){ 
824      var v = (p.get(k) || '').split('|').map(function(s){ return s.trim(); }).filter(Boolean); 
825      state[k] = new Set(v); 
826    }); 
827    el.q.value = state.q; 
828
829  loadFromURL(); 
830 
831  // Vorschläge (ab 2 Zeichen) 
832  function buildSuggestions(query){ 
833    if(query.length < 2) return []; 
834    var nq = norm(query); 
835    var titles = unique(cards.map(function(c){ return c.title; }).filter(function(t){ return norm(t).indexOf(nq) !== -1; })).slice(0,6); 
836    var topics = ALL.topics.filter(function(t){ return norm(t).indexOf(nq) !== -1; }).slice(0,6); 
837    var branches = ALL.branches.filter(function(t){ return norm(t).indexOf(nq) !== -1; }).slice(0,6); 
838    var regions = ALL.regions.filter(function(t){ return norm(t).indexOf(nq) !== -1; }).slice(0,6); 
839    var lang = ALL.lang.filter(function(t){ return norm(t).indexOf(nq) !== -1; }).slice(0,6); 
840 
841    var groups = []; 
842    if(titles.length) groups.push({label:'Titel', items:titles, type:'title'}); 
843    if(topics.length) groups.push({label:'Themen', items:topics, type:'topics'}); 
844    if(branches.length) groups.push({label:'Branchen', items:branches, type:'branches'}); 
845    if(regions.length) groups.push({label:'Regionen', items:regions, type:'regions'}); 
846    if(lang.length) groups.push({label:'Sprache', items:lang, type:'lang'}); 
847    return groups; 
848
849  function renderSuggestions(groups){ 
850    if(!groups.length){ 
851      el.suggestions.classList.remove('show'); 
852      el.q.setAttribute('aria-expanded','false'); 
853      el.suggestions.innerHTML = ''; 
854      return; 
855
856    var html = groups.map(function(g){ 
857      var items = g.items.map(function(item){ 
858        return '<button role="option" data-type="' + g.type + '" data-value="' + escapeHtml(item) + '">' + escapeHtml(item) + '</button>'; 
859      }).join(''); 
860      return '<div class="group"><h5>' + escapeHtml(g.label) + '</h5>' + items + '</div>'; 
861    }).join(''); 
862    el.suggestions.innerHTML = html; 
863    el.suggestions.classList.add('show'); 
864    el.q.setAttribute('aria-expanded','true'); 
865
866 
867  // Events 
868  el.q.addEventListener('input', function(){ 
869    state.q = el.q.value.trim(); 
870    applyFilter(); 
871    renderSuggestions(buildSuggestions(state.q)); // ab 2 Zeichen 
872  }); 
873  el.q.addEventListener('keydown', function(e){ 
874    if(e.key === 'Escape'){ 
875      el.suggestions.classList.remove('show'); 
876      el.q.setAttribute('aria-expanded','false'); 
877
878  }); 
879 
880  el.clear.addEventListener('click', function(){ 
881    state.q = ''; 
882    el.q.value = ''; 
883    applyFilter(); 
884    renderSuggestions([]); 
885  }); 
886 
887  document.addEventListener('click', function(e){ 
888    var t = e.target; 
889 
890    // Vorschlag ausgewählt 
891    if(t.closest && t.closest('#nl-suggestions') && t.getAttribute('data-value')){ 
892      var type = t.getAttribute('data-type'); 
893      var value = t.getAttribute('data-value'); 
894      if(type === 'title'){ 
895        state.q = value; el.q.value = value; 
896      } else { 
897        if(state[type].has(value)){ state[type].delete(value); } 
898        else { state[type].add(value); } 
899
900      applyFilter(); 
901      renderSuggestions([]); 
902      return; 
903
904 
905    // Facettenchip 
906    if(t.classList && t.classList.contains('nl-chip')){ 
907      var facet = t.getAttribute('data-facet'); 
908      var value = t.getAttribute('data-value'); 
909      if(state[facet].has(value)){ state[facet].delete(value); } 
910      else { state[facet].add(value); } 
911      applyFilter(); 
912      return; 
913
914 
915    // Aktiv-Tag entfernen 
916    if(t.closest && t.closest('.nl-activefilters') && t.getAttribute('data-remove')){ 
917      var rm = t.getAttribute('data-remove').split('|'); 
918      var k = rm[0]; var v = rm[1]; 
919      state[k].delete(v); 
920      applyFilter(); 
921      return; 
922
923 
924    // Reset 
925    if(t.classList && t.classList.contains('nl-reset')){ 
926      state.q=''; el.q.value=''; 
927      ['topics','branches','regions','lang'].forEach(function(k){ state[k].clear(); }); 
928      applyFilter(); renderSuggestions([]); 
929      return; 
930
931  }); 
932 
933  // Klick außerhalb -> Vorschläge schließen 
934  document.addEventListener('click', function(e){ 
935    if(!el.suggestions.contains(e.target) && e.target !== el.q){ 
936      el.suggestions.classList.remove('show'); 
937      el.q.setAttribute('aria-expanded','false'); 
938
939  }); 
940 
941  // Init 
942  applyFilter(); 
943})(); 
944</script> 
945<!-- ===== Ende Newsletter-Recherche ===== --> 
946</#noparse> 

VDMA Assistant

VDMA logo
Hallo,
ich bin der VDMA KI Assistent für den Leistungsbereich.
Wie kann ich Ihnen helfen?
Welche Leistungen bietet der VDMA?
Wer ist mein richtiger Ansprechpartner?
Leistungskategorien entdecken