{"id":993,"date":"2025-05-08T09:27:44","date_gmt":"2025-05-08T07:27:44","guid":{"rendered":"https:\/\/agripedia.ch\/klima\/?p=993"},"modified":"2026-04-23T17:47:27","modified_gmt":"2026-04-23T15:47:27","slug":"aktivitaeten-der-kantone","status":"publish","type":"post","link":"https:\/\/agripedia.ch\/klima\/aktivitaeten-der-kantone\/","title":{"rendered":"Kantonale Projekte und F\u00f6rderungen"},"content":{"rendered":"\n<p>In der Schweiz werden die meisten Projekte zum Klimaschutz und zur Anpassung der Landwirtschaft an die Auswirkungen des Klimawandels auf kantonaler Ebene koordiniert und umgesetzt. Die Kantone setzen sich dabei, je nach den Begebenheiten vor Ort, in unterschiedlichen Bereichen ein.<\/p>\n\n\n\n<p>Mit folgendem Tool k\u00f6nnen die verschiedenen Aktivit\u00e4ten der Kantone \u2013 wie etwa Projekte, Beitr\u00e4ge oder F\u00f6rderungen \u2013 abgerufen und themenspezifisch gefiltert werden.<\/p>\n\n\n\n<p>Die Ergebnisse enthalten Angaben zum Kanton, Thema, Zeitraum, Status, zur Zielsetzung, zu beteiligten Partnern sowie zur Wirkung bez\u00fcglich Klima (Klimaschutz und\/oder Klimaanpassung).<\/p>\n\n\n\n<div style=\"height:61px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"de\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <title>Verfeinerte Suche<\/title>\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/xlsx@0.18.5\/dist\/xlsx.full.min.js\"><\/script>\n  <style>\n    \n    body {\n      font-family: Arial, sans-serif;\n      background-color: #ffffff;\n      padding: 20px;\n    }\n    .filter-section {\n      background: #dff2fa;\n      border-radius: 8px;\n      margin-bottom: 20px;\n    }\n    .filter-header {\n      background-color: #008bcc;\n      color: white;\n      padding: 10px;\n      border-radius: 6px 6px 0 0;\n      font-weight: bold;\n      font-size: 1.2em;\n    }\n    .filter-content {\n      display: flex;\n      justify-content: space-between;\n      flex-wrap: wrap;\n      padding: 15px;\n      gap: 40px;\n    }\n    .filter-group {\n      flex: 1 1 45%;\n      min-width: 300px;\n    }\n    .checkbox-list {\n      max-height: 100px;\n      overflow-y: auto;\n      border: 1px solid #ccc;\n      padding: 5px;\n      background: #fff;\n      border-radius: 4px;\n      margin-bottom: 15px;\n    }\n    .toggle-label {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      margin: 12px 0;\n    }\n    .toggle-switch {\n      position: relative;\n      display: inline-block;\n      width: 50px;\n      height: 24px;\n    }\n    .toggle-switch input {\n      opacity: 0;\n      width: 0;\n      height: 0;\n    }\n    .slider {\n      position: absolute;\n      cursor: pointer;\n      top: 0;\n      left: 0;\n      right: 0;\n      bottom: 0;\n      background-color: #ccc;\n      transition: 0.4s;\n      border-radius: 24px;\n    }\n    .slider:before {\n      position: absolute;\n      content: \"\";\n      height: 18px;\n      width: 18px;\n      left: 3px;\n      bottom: 3px;\n      background-color: white;\n      transition: 0.4s;\n      border-radius: 50%;\n    }\n    .toggle-switch input:checked + .slider {\n      background-color: #008bcc;\n    }\n    .toggle-switch input:checked + .slider:before {\n      transform: translateX(26px);\n    }\n    .project {\n      background: #e9f6fb;\n      border-radius: 6px;\n      margin-bottom: 20px;\n    }\n.project-header {\n  background-color: #008bcc;\n  color: white;\n  padding: 10px;\n  border-radius: 6px 6px 0 0;\n  display: flex;\n  justify-content: center;  \/* centers horizontally *\/\n  align-items: center;      \/* centers vertically *\/\n  text-align: center;\n}\n    .project-title-label {\n      font-weight: bold;\n      margin-right: 10px;\n    }\n.project-title-content {\n  font-size: 1.2em;\n  font-weight: bold;\n}\n    .project-body {\n      padding: 20px;\n      line-height: 1.6em;\n      position: relative;\n    }\n    .project-tags-inside {\n      position: absolute;\n      top: 20px;\n      right: 20px;\n    }\n    .badge {\n      display: inline-block;\n      background-color: #87d68d;\n      color: white;\n      padding: 4px 10px;\n      border-radius: 5px;\n      margin-left: 5px;\n      font-weight: bold;\n    }\n    .badge.adaptation {\n      background-color: #d1821b;\n    }\n    .project-body-row {\n      display: flex;\n      align-items: flex-start;\n      margin-bottom: 10px;\n    }\n    .project-body-row strong {\n      width: 150px;\n      flex-shrink: 0;\n    }\n    .project-body .status-Aktiv {\n      color: #00B050;\n      font-weight: bold;\n    }\n    .project-body .status-Abgeschlossen {\n      color: #A6A6A6;\n      font-weight: bold;\n    }\n    .no-results {\n      padding: 20px;\n      text-align: center;\n      color: #555;\n      background: #fff6f6;\n      border: 1px solid #ffc7c7;\n      border-radius: 6px;\n      font-size: 1.1em;\n      animation: fadeIn 0.4s ease-in-out;\n    }\n    @keyframes fadeIn {\n      from { opacity: 0; transform: translateY(10px); }\n      to { opacity: 1; transform: translateY(0); }\n    }\n  <\/style>\n<\/head>\n<body>\n  <div class=\"filter-section\">\n    <div class=\"filter-header\">Verfeinerte Suche<\/div>\n    <div class=\"filter-content\">\n      <div class=\"filter-group\">\n        <label>Kanton:<\/label>\n        <div id=\"kantonCheckboxes\" class=\"checkbox-list\"><\/div>\n        <label>Themenbereich:<\/label>\n        <div id=\"themenbereichCheckboxes\" class=\"checkbox-list\"><\/div>\n      <\/div>\n      <div class=\"filter-group\" style=\"margin-top: 40px;\">\n        <label class=\"toggle-label\">\n          <span>Nur aktive Projekte anzeigen<\/span>\n          <label class=\"toggle-switch\">\n            <input type=\"checkbox\" id=\"statusCheck\">\n            <span class=\"slider\"><\/span>\n          <\/label>\n        <\/label>\n        <label class=\"toggle-label\">\n          <span>Projekte Klimaschutz<\/span>\n          <label class=\"toggle-switch\">\n            <input type=\"checkbox\" id=\"klimaschutzCheck\" checked>\n            <span class=\"slider\"><\/span>\n          <\/label>\n        <\/label>\n        <label class=\"toggle-label\">\n          <span>Projekte Klimaanpassung<\/span>\n          <label class=\"toggle-switch\">\n            <input type=\"checkbox\" id=\"anpassungCheck\" checked>\n            <span class=\"slider\"><\/span>\n          <\/label>\n        <\/label>\n\n        <p id=\"resultCount\" style=\"font-weight: bold; margin-top: 20px; text-align: right;\">0 Projekte gefunden<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div id=\"results\"><\/div>\n\n  <script>\n    let data = [];\n\n    function isValidUrl(string) {\n      try {\n        new URL(string);\n        return true;\n      } catch (_) {\n        return false;\n      }\n    }\n\n    function cleanData(rawData) {\n      return rawData.map(row => {\n        const cleaned = {};\n        for (const key in row) {\n          const trimmedKey = key.trim();\n          const value = typeof row[key] === 'string' ? row[key].trim() : row[key];\n          cleaned[trimmedKey] = value;\n        }\n        return cleaned;\n      });\n    }\n\n    function createCheckboxList(container, values, name) {\n      const selectAllLabel = document.createElement(\"label\");\n      const selectAllCheckbox = document.createElement(\"input\");\n      selectAllCheckbox.type = \"checkbox\";\n      selectAllCheckbox.checked = true;\n      selectAllCheckbox.style.marginBottom = \"5px\";\n\n      selectAllCheckbox.addEventListener(\"change\", () => {\n        const checkboxes = container.querySelectorAll(`input[name='${name}']`);\n        checkboxes.forEach(cb => cb.checked = selectAllCheckbox.checked);\n        filterData();\n      });\n\n      selectAllLabel.appendChild(selectAllCheckbox);\n      selectAllLabel.append(` Alle ${name === \"kanton\" ? \"Kantone\" : \"Themenbereiche\"} ausw\u00e4hlen`);\n      container.appendChild(selectAllLabel);\n\n      values.forEach(value => {\n        const label = document.createElement(\"label\");\n        const checkbox = document.createElement(\"input\");\n        checkbox.type = \"checkbox\";\n        checkbox.value = value;\n        checkbox.name = name;\n        checkbox.checked = true;\n\n        checkbox.addEventListener(\"change\", () => {\n          const allCheckboxes = container.querySelectorAll(`input[name='${name}']`);\n          const checkedCount = Array.from(allCheckboxes).filter(cb => cb.checked).length;\n          selectAllCheckbox.checked = checkedCount === allCheckboxes.length;\n          filterData();\n        });\n\n        label.appendChild(checkbox);\n        label.append(\" \", value);\n        container.appendChild(label);\n      });\n    }\n\n    function getCheckedValues(name) {\n      return Array.from(document.querySelectorAll(`input[name='${name}']:checked`)).map(el => el.value);\n    }\n\n    function filterData() {\n      const selectedKantone = getCheckedValues(\"kanton\");\n      const selectedThemen = getCheckedValues(\"thema\");\n      const onlyAktiv = document.getElementById(\"statusCheck\").checked;\n      const showKlimaschutz = document.getElementById(\"klimaschutzCheck\").checked;\n      const showAnpassung = document.getElementById(\"anpassungCheck\").checked;\n\n      if (selectedKantone.length === 0 || selectedThemen.length === 0) {\n        renderResults([]);\n        return;\n      }\n\n      const filtered = data.filter(row => {\n        const klim = String(row.Klimaschutz || \"\").toUpperCase();\n        const anp = String(row.Anpassung || \"\").toUpperCase();\n        const hatKlimaschutz = klim === \"JA\";\n        const hatAnpassung = anp === \"JA\";\n\n        if (!selectedKantone.includes(row.Kanton)) return false;\n        if (!selectedThemen.includes(row.Themenbereich)) return false;\n        if (onlyAktiv && row.Status !== \"Aktiv\") return false;\n        if (!showKlimaschutz && !showAnpassung) return false;\n        if (showKlimaschutz && showAnpassung) {\n          if (!hatKlimaschutz && !hatAnpassung) return false;\n        } else if (showKlimaschutz) {\n          if (!hatKlimaschutz) return false;\n        } else if (showAnpassung) {\n          if (!hatAnpassung) return false;\n        }\n        return true;\n      });\n\n      renderResults(filtered);\n    }\n\n    function formatBeschreibung(text) {\n      if (!text) return \"<i>Keine Beschreibung<\/i>\";\n      const lines = text.split(\/\\r?\\n\/).filter(line => line.trim() !== \"\");\n      let formatted = \"\";\n      let inList = false;\n\n      lines.forEach((line, idx) => {\n        const trimmed = line.trim();\n        const isBullet = \/^[-\u2013\u2022*]\\s+\/.test(trimmed);\n        const isNumbered = \/^\\d+\\.\\s+\/.test(trimmed);\n\n        if (isBullet) {\n          if (!inList) {\n            formatted += \"<ul>\";\n            inList = true;\n          }\n          formatted += `<li>${trimmed.replace(\/^[-\u2013\u2022*]\\s+\/, \"\")}<\/li>`;\n        } else if (isNumbered) {\n          if (!inList) {\n            formatted += \"<ol>\";\n            inList = true;\n          }\n          formatted += `<li>${trimmed.replace(\/^\\d+\\.\\s+\/, \"\")}<\/li>`;\n        } else {\n          if (inList) {\n            formatted += formatted.includes(\"<ol>\") ? \"<\/ol>\" : \"<\/ul>\";\n            inList = false;\n          }\n          formatted += `<p>${trimmed}<\/p>`;\n        }\n      });\n\n      if (inList) {\n        formatted += formatted.includes(\"<ol>\") ? \"<\/ol>\" : \"<\/ul>\";\n      }\n\n      return formatted;\n    }\n\n    function renderResults(results) {\n  const container = document.getElementById(\"results\");\n  container.innerHTML = \"\";\n\n  if (results.length === 0) {\n    container.innerHTML = `\n      <div class=\"no-results\">\n        \ud83d\udd0d Keine Projekte gefunden<br>\n        Bitte passe deine Filter an.\n      <\/div>\n    `;\n    document.getElementById(\"resultCount\").textContent = `0 Projekte gefunden`;\n    return;\n  }\n\n  results.forEach(row => {\n    const div = document.createElement(\"div\");\n    div.className = \"project\";\n    const statusClass = row.Status === \"Aktiv\" ? \"status-Aktiv\" : \"status-Abgeschlossen\";\n\n    const safe = (val) =>\n      val && val !== \"undefined\" && val !== \"Keine Quelle\" && val !== \"null\" && val.toString().trim() !== \"\";\n\n    let html = `\n      <div class=\"project-header\">\n  <div class=\"project-title-content\">${row.Titel}<\/div>\n<\/div>\n\n      <\/div>\n      <div class=\"project-body\">\n        <div class=\"project-tags-inside\">\n          ${String(row.Klimaschutz).toUpperCase() === \"JA\" ? '<span class=\"badge\">Klimaschutz<\/span>' : ''}\n          ${String(row.Anpassung).toUpperCase() === \"JA\" ? '<span class=\"badge adaptation\">Anpassung<\/span>' : ''}\n        <\/div>\n    `;\n\n    if (safe(row.Themenbereich)) html += `<div class=\"project-body-row\"><strong>Themenbereich:<\/strong> <span>${row.Themenbereich}<\/span><\/div>`;\n    if (safe(row.Kanton)) html += `<div class=\"project-body-row\"><strong>Kanton:<\/strong> <span>${row.Kanton}<\/span><\/div>`;\n    if (safe(row.Zeitraum)) html += `<div class=\"project-body-row\"><strong>Zeitraum:<\/strong> <span>${row.Zeitraum}<\/span><\/div>`;\n    if (safe(row.Status)) html += `<div class=\"project-body-row\"><strong>Status:<\/strong> <span class=\"${statusClass}\">${row.Status}<\/span><\/div>`;\n    \n    const beschreibung = formatBeschreibung(row.Beschreibung);\n    if (safe(beschreibung)) html += `<div class=\"project-body-row\"><strong>Beschreibung:<\/strong> <div style=\"flex:1\">${beschreibung}<\/div><\/div>`;\n    \n    if (safe(row[\"Ansprechorganisation\"])) html += `<div class=\"project-body-row\"><strong>Verantwortlich:<\/strong> <span>${row[\"Ansprechorganisation\"]}<\/span><\/div>`;\n    if (safe(row.Partner)) html += `<div class=\"project-body-row\"><strong>Partner:<\/strong> <span>${row.Partner}<\/span><\/div>`;\n\n    const quelle = row[\"Informationen \/ Quelle\"];\n    if (safe(quelle)) {\n      html += `\n        <div class=\"project-body-row\">\n          <strong>Links \/ Quelle:<\/strong>\n          <span>\n            ${isValidUrl(quelle) ? `<a href=\"${quelle}\" target=\"_blank\">${row.Titel}<\/a>` : quelle}\n          <\/span>\n        <\/div>\n      `;\n    }\n\n    html += `<\/div>`;\n    div.innerHTML = html;\n    container.appendChild(div);\n  });\n\n  document.getElementById(\"resultCount\").textContent = `${results.length} Projekt${results.length !== 1 ? 'e' : ''} gefunden`;\n}\n\n\n    fetch(\"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2025\/04\/2026_Liste-Aktivitaeten-Kantone_Klima_DE-1.xlsx\")\n      .then(res => res.arrayBuffer())\n      .then(buffer => {\n        const workbook = XLSX.read(buffer, { type: \"array\" });\n        const sheet = workbook.Sheets[workbook.SheetNames[0]];\n        data = cleanData(XLSX.utils.sheet_to_json(sheet));\n\n        const kantonSet = [...new Set(data.map(d => d.Kanton))].sort();\n        const themaSet = [...new Set(data.map(d => d.Themenbereich))].sort();\n        createCheckboxList(document.getElementById(\"kantonCheckboxes\"), kantonSet, \"kanton\");\n        createCheckboxList(document.getElementById(\"themenbereichCheckboxes\"), themaSet, \"thema\");\n\n        document.getElementById(\"statusCheck\").onchange = filterData;\n        document.getElementById(\"klimaschutzCheck\").onchange = filterData;\n        document.getElementById(\"anpassungCheck\").onchange = filterData;\n\n        filterData();\n      });\n  <\/script>\n<\/body>\n<\/html>\n\n\n","protected":false},"excerpt":{"rendered":"<p>In der Schweiz werden die meisten Projekte zum Klimaschutz und zur Anpassung der Landwirtschaft an die Auswirkungen des Klimawandels auf kantonaler Ebene koordiniert und umgesetzt. Die Kantone setzen sich dabei, je nach den Begebenheiten vor Ort, in unterschiedlichen Bereichen ein. Mit folgendem Tool k\u00f6nnen die verschiedenen Aktivit\u00e4ten der Kantone \u2013 wie etwa Projekte, Beitr\u00e4ge oder [&hellip;]<\/p>\n","protected":false},"author":927,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_sb_is_suggestion_mode":false,"_sb_show_suggestion_boards":false,"_sb_show_comment_boards":false,"_sb_suggestion_history":"","_sb_update_block_changes":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-993","post","type-post","status-publish","format-standard","hentry","category-unkategorisiert"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/agripedia.ch\/klima\/wp-json\/wp\/v2\/posts\/993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agripedia.ch\/klima\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/agripedia.ch\/klima\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/agripedia.ch\/klima\/wp-json\/wp\/v2\/users\/927"}],"replies":[{"embeddable":true,"href":"https:\/\/agripedia.ch\/klima\/wp-json\/wp\/v2\/comments?post=993"}],"version-history":[{"count":71,"href":"https:\/\/agripedia.ch\/klima\/wp-json\/wp\/v2\/posts\/993\/revisions"}],"predecessor-version":[{"id":2163,"href":"https:\/\/agripedia.ch\/klima\/wp-json\/wp\/v2\/posts\/993\/revisions\/2163"}],"wp:attachment":[{"href":"https:\/\/agripedia.ch\/klima\/wp-json\/wp\/v2\/media?parent=993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agripedia.ch\/klima\/wp-json\/wp\/v2\/categories?post=993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agripedia.ch\/klima\/wp-json\/wp\/v2\/tags?post=993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}