Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Rssfeed geordnet anzeigen lassen

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    10
    1
    230

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.8k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    768

Rssfeed geordnet anzeigen lassen

Geplant Angeheftet Gesperrt Verschoben Visualisierung
31 Beiträge 2 Kommentatoren 152 Aufrufe 2 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • holly200289H Offline
    holly200289H Offline
    holly200289
    schrieb am zuletzt editiert von
    #22

    jetzt müsste es richtig sein

    OliverIOO 1 Antwort Letzte Antwort
    0
    • holly200289H holly200289

      jetzt müsste es richtig sein

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #23

      @holly200289

      ich teste hier mit dem tagesschau rss.
      da ist ein bild drin, dessen größe korrigiert werden muss

       <style>
          #rss_container_<%- widgetid %> { 
              height: 100%; 
              width: 100%;
              display: flex; 
              flex-direction: column; 
          }
          #rss_container_<%- widgetid %> .slide { 
              display: none; 
              padding: 10px;
          }
          #rss_container_<%- widgetid %> .active { 
              display: block; 
              animation: fadeRss 0.5s;
          }
          #rss_container_<%- widgetid %> img {
              width: calc(<%- style.width %> - 15px);
              height: auto;
          }    
          @keyframes fadeRss { from { opacity: 0; } to { opacity: 1; } }
      </style>
       
      <div id="rss_container_<%- widgetid %>">
          <div class="rss_content" style="flex: 1; overflow: auto;">
              <% if (rss && rss.articles) { %>
                  <% rss.articles.forEach(function(item, index){ %>
                      <div class="slide <%- index === 0 ? 'active' : '' %>">
                          <small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small>
                          <h3 style="margin: 8px 0;"><%- item.title %></h3>
                          <div><%- item.description %></div>
                      </div>
                  <% }); %>
              <% } %>
          </div>
      </div>
       
      <script>
          (function() {
              // Wir suchen das Element direkt über die Widget-ID, die VIS übergibt
              var parentId = 'rss_container_<%- widgetid %>';
              var container = document.getElementById(parentId);
              if (!container) return;
       
              var slides = container.getElementsByClassName('slide');
              var currentIndex = 0;
              var intervalTime = 10000; // 5 Sekunden
       
              if (slides.length > 1) {
                  setInterval(function() {
                      // Aktuellen Slide ausblenden
                      slides[currentIndex].classList.remove('active');
                      
                      // Index erhöhen
                      currentIndex++;
                      if (currentIndex >= slides.length) {
                          currentIndex = 0;
                      }
                      
                      // Nächsten Slide einblenden
                      slides[currentIndex].classList.add('active');
                  }, intervalTime);
              }
          })();
      </script>
      
      

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      OliverIOO 1 Antwort Letzte Antwort
      0
      • holly200289H Offline
        holly200289H Offline
        holly200289
        schrieb am zuletzt editiert von
        #24

        aber sonst ist der ist das Skript brauchbar oder ?

        1 Antwort Letzte Antwort
        0
        • OliverIOO OliverIO

          @holly200289

          ich teste hier mit dem tagesschau rss.
          da ist ein bild drin, dessen größe korrigiert werden muss

           <style>
              #rss_container_<%- widgetid %> { 
                  height: 100%; 
                  width: 100%;
                  display: flex; 
                  flex-direction: column; 
              }
              #rss_container_<%- widgetid %> .slide { 
                  display: none; 
                  padding: 10px;
              }
              #rss_container_<%- widgetid %> .active { 
                  display: block; 
                  animation: fadeRss 0.5s;
              }
              #rss_container_<%- widgetid %> img {
                  width: calc(<%- style.width %> - 15px);
                  height: auto;
              }    
              @keyframes fadeRss { from { opacity: 0; } to { opacity: 1; } }
          </style>
           
          <div id="rss_container_<%- widgetid %>">
              <div class="rss_content" style="flex: 1; overflow: auto;">
                  <% if (rss && rss.articles) { %>
                      <% rss.articles.forEach(function(item, index){ %>
                          <div class="slide <%- index === 0 ? 'active' : '' %>">
                              <small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small>
                              <h3 style="margin: 8px 0;"><%- item.title %></h3>
                              <div><%- item.description %></div>
                          </div>
                      <% }); %>
                  <% } %>
              </div>
          </div>
           
          <script>
              (function() {
                  // Wir suchen das Element direkt über die Widget-ID, die VIS übergibt
                  var parentId = 'rss_container_<%- widgetid %>';
                  var container = document.getElementById(parentId);
                  if (!container) return;
           
                  var slides = container.getElementsByClassName('slide');
                  var currentIndex = 0;
                  var intervalTime = 10000; // 5 Sekunden
           
                  if (slides.length > 1) {
                      setInterval(function() {
                          // Aktuellen Slide ausblenden
                          slides[currentIndex].classList.remove('active');
                          
                          // Index erhöhen
                          currentIndex++;
                          if (currentIndex >= slides.length) {
                              currentIndex = 0;
                          }
                          
                          // Nächsten Slide einblenden
                          slides[currentIndex].classList.add('active');
                      }, intervalTime);
                  }
              })();
          </script>
          
          
          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von OliverIO
          #25

          evtl noch eine anmerkung zum setInterval.

          Es ist besser, insbesondere hier, den setInterval Teil in eine eigene Funktion zu setzen
          Die Funktion ruft dann die eigene Funktion wieder mit setTimeout wieder auf.

          So wie es jetzt ist, wird es irgendwann zu Speicherprobleme führen.
          Jedesmal wenn der RSS Datenpunkt aktualisiert wird, wird der widgetinhalt ersetzt.
          Allerdings wird dadurch der alte setInterval Aufruf nicht entfernt. Mit dem Austausch kommt dann aber ein neuer setInterval dazu.

          Jetzt kannst du dir evtl vorstellen was passiert, wenn 10 mal der datenpunkt aktualisiert wurde. Dann versuchen 10 parallele setInterval Aufrufe geichzeitig den Artikel zu wechseln.

          Sag der KI, sie soll den Code mit setTimeout formulieren um evtl Speicherprobleme zu verhindern.

          Anonsten ist der Code OK
          Es fehlen nun die Knöpfe, so ist man auf den automatismus angewiesen, auch wenn der angezeigte Artikel gerade nicht interessiert
          Wenn du aber eine möglichst cleane Darstellung haben willst ist das OK

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          1 Antwort Letzte Antwort
          0
          • holly200289H Offline
            holly200289H Offline
            holly200289
            schrieb am zuletzt editiert von
            #26

            Ich habe das jetzt nochmal mit setTimeout durch die KI überarbeiten lassen, schaue mal bitte drüber

            1 Antwort Letzte Antwort
            0
            • holly200289H Offline
              holly200289H Offline
              holly200289
              schrieb am zuletzt editiert von
              #27
              <style>
                  #rss_wrapper_<%- widgetid %> { 
                      height: 100%; 
                      width: 100%;
                      overflow: hidden;
                  }
                  #rss_wrapper_<%- widgetid %> .slide { 
                      display: none; 
                      padding: 10px;
                  }
                  #rss_wrapper_<%- widgetid %> .active { 
                      display: block; 
                      animation: fadeInRSS 0.6s ease-in-out;
                  }
                  @keyframes fadeInRSS { from { opacity: 0; } to { opacity: 1; } }
              </style>
              
              <div id="rss_wrapper_<%- widgetid %>">
                  <% if (rss && rss.articles && rss.articles.length > 0) { %>
                      <% rss.articles.forEach(function(item, index){ %>
                          <div class="slide <%- index === 0 ? 'active' : '' %>">
                              <small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small>
                              <h3 style="margin: 8px 0;"><%- item.title %></h3>
                              <div class="rss-desc"><%- item.description %></div>
                          </div>
                      <% }); %>
                  <% } else { %>
                      <p>Lade Feeds...</p>
                  <% } %>
              </div>
              
              <script>
                  (function() {
                      // Das setTimeout sorgt dafür, dass VIS Zeit zum Rendern hat
                      setTimeout(function() {
                          var containerId = 'rss_wrapper_<%- widgetid %>';
                          var root = document.getElementById(containerId);
                          if (!root) return;
              
                          var slides = root.getElementsByClassName('slide');
                          var current = 0;
                          var pause = 5000; // 5 Sekunden pro Artikel
              
                          if (slides.length > 1) {
                              setInterval(function() {
                                  // Alten Slide verstecken
                                  slides[current].classList.remove('active');
                                  
                                  // Index weiterzählen
                                  current = (current + 1) % slides.length;
                                  
                                  // Neuen Slide zeigen
                                  slides[current].classList.add('active');
                              }, pause);
                          }
                      }, 1500); // 1,5 Sekunden Verzögerung beim Start
                  })();
              </script>
              OliverIOO 1 Antwort Letzte Antwort
              0
              • holly200289H holly200289
                <style>
                    #rss_wrapper_<%- widgetid %> { 
                        height: 100%; 
                        width: 100%;
                        overflow: hidden;
                    }
                    #rss_wrapper_<%- widgetid %> .slide { 
                        display: none; 
                        padding: 10px;
                    }
                    #rss_wrapper_<%- widgetid %> .active { 
                        display: block; 
                        animation: fadeInRSS 0.6s ease-in-out;
                    }
                    @keyframes fadeInRSS { from { opacity: 0; } to { opacity: 1; } }
                </style>
                
                <div id="rss_wrapper_<%- widgetid %>">
                    <% if (rss && rss.articles && rss.articles.length > 0) { %>
                        <% rss.articles.forEach(function(item, index){ %>
                            <div class="slide <%- index === 0 ? 'active' : '' %>">
                                <small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small>
                                <h3 style="margin: 8px 0;"><%- item.title %></h3>
                                <div class="rss-desc"><%- item.description %></div>
                            </div>
                        <% }); %>
                    <% } else { %>
                        <p>Lade Feeds...</p>
                    <% } %>
                </div>
                
                <script>
                    (function() {
                        // Das setTimeout sorgt dafür, dass VIS Zeit zum Rendern hat
                        setTimeout(function() {
                            var containerId = 'rss_wrapper_<%- widgetid %>';
                            var root = document.getElementById(containerId);
                            if (!root) return;
                
                            var slides = root.getElementsByClassName('slide');
                            var current = 0;
                            var pause = 5000; // 5 Sekunden pro Artikel
                
                            if (slides.length > 1) {
                                setInterval(function() {
                                    // Alten Slide verstecken
                                    slides[current].classList.remove('active');
                                    
                                    // Index weiterzählen
                                    current = (current + 1) % slides.length;
                                    
                                    // Neuen Slide zeigen
                                    slides[current].classList.add('active');
                                }, pause);
                            }
                        }, 1500); // 1,5 Sekunden Verzögerung beim Start
                    })();
                </script>
                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von
                #28

                Leider nein.
                Das problematische setInterval ist noch drin

                <style>
                    #rss_wrapper_<%- widgetid %> { 
                        height: 100%; 
                        width: 100%;
                        overflow: hidden;
                    }
                
                    #rss_wrapper_<%- widgetid %> .slide { 
                        display: none; 
                        padding: 10px;
                    }
                
                    #rss_wrapper_<%- widgetid %> .active { 
                        display: block; 
                        animation: fadeInRSS 0.6s ease-in-out;
                    }
                
                    @keyframes fadeInRSS {
                        from { opacity: 0; }
                        to { opacity: 1; }
                    }
                </style>
                
                <div id="rss_wrapper_<%- widgetid %>">
                    <% if (rss && rss.articles && rss.articles.length > 0) { %>
                        <% rss.articles.forEach(function(item, index){ %>
                            <div class="slide <%- index === 0 ? 'active' : '' %>">
                                <small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small>
                                <h3 style="margin: 8px 0;"><%- item.title %></h3>
                                <div class="rss-desc"><%- item.description %></div>
                            </div>
                        <% }); %>
                    <% } else { %>
                        <p>Lade Feeds...</p>
                    <% } %>
                </div>
                
                <script>
                    (function() {
                        var containerId = 'rss_wrapper_<%- widgetid %>';
                        var timeoutKey = '__rssTimeout_' + containerId;
                
                        /*
                         * Falls das Template wegen geänderter RSS-Daten erneut gerendert wird,
                         * wird ein eventuell noch laufender Timeout dieses Widgets entfernt.
                         */
                        if (window[timeoutKey]) {
                            clearTimeout(window[timeoutKey]);
                            window[timeoutKey] = null;
                        }
                
                        function startSlider() {
                            var root = document.getElementById(containerId);
                            if (!root) return;
                
                            var slides = root.getElementsByClassName('slide');
                            var current = 0;
                            var pause = 5000;
                
                            if (slides.length <= 1) return;
                
                            function showNextSlide() {
                                /*
                                 * Bei jedem Durchlauf erneut prüfen, ob der Container noch existiert.
                                 * Falls VIS das Widget neu gerendert oder entfernt hat, endet die Kette.
                                 */
                                root = document.getElementById(containerId);
                                if (!root) {
                                    window[timeoutKey] = null;
                                    return;
                                }
                
                                slides = root.getElementsByClassName('slide');
                                if (slides.length <= 1) {
                                    window[timeoutKey] = null;
                                    return;
                                }
                
                                if (current >= slides.length) {
                                    current = 0;
                                }
                
                                slides[current].classList.remove('active');
                
                                current = (current + 1) % slides.length;
                
                                slides[current].classList.add('active');
                
                                window[timeoutKey] = setTimeout(showNextSlide, pause);
                            }
                
                            window[timeoutKey] = setTimeout(showNextSlide, pause);
                        }
                
                        /*
                         * Verzögerter Start, damit VIS Zeit zum Rendern hat.
                         * Auch dieser Start-Timeout wird beim erneuten Rendern oben abgeräumt.
                         */
                        window[timeoutKey] = setTimeout(startSlider, 1500);
                    })();
                </script>
                

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                1 Antwort Letzte Antwort
                0
                • holly200289H Offline
                  holly200289H Offline
                  holly200289
                  schrieb am zuletzt editiert von
                  #29

                  Du hast das Skript überarbeitet richtig ?

                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • holly200289H holly200289

                    Du hast das Skript überarbeitet richtig ?

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #30

                    @holly200289
                    chatgpt hat es gemacht

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    1 Antwort Letzte Antwort
                    0
                    • holly200289H Offline
                      holly200289H Offline
                      holly200289
                      schrieb am zuletzt editiert von
                      #31

                      Sonst müllt der speicher voll richtig

                      1 Antwort Letzte Antwort
                      0

                      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                      Registrieren Anmelden
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      558

                      Online

                      32.9k

                      Benutzer

                      83.0k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe