NEWS
Rssfeed geordnet anzeigen lassen
-
Ich habe jetzt auf die Version 4.0.3 gewechselt, leider werden mir die Nachrichten nicht mehr nach und nach angezeigt, also das mir Artikel für Artikel angezeigt wird, so hatte ich das vorher leider funktoniert das skript im CSS nicht mehr.
Hat vieleicht einer eine Lösung dafür ?
-
Ich habe jetzt auf die Version 4.0.3 gewechselt, leider werden mir die Nachrichten nicht mehr nach und nach angezeigt, also das mir Artikel für Artikel angezeigt wird, so hatte ich das vorher leider funktoniert das skript im CSS nicht mehr.
Hat vieleicht einer eine Lösung dafür ?
welcher feed?
wie ist die link adresse?
im datenpunkt werden die daten abgespeichert wie sie kommen.
genau so werden diese auch durch das widget ausgegeben.intern verwendet das widget das folgende template, welches man so modifizieren kann,
das es nach datum sortiert wird
https://github.com/oweitman/ioBroker.rssfeed#base-template-rss-feed-widget-2 -
Vielen Dank für die schnelle Rückmeldung, füge ich die Skripte bei CSS ein ?
-
Vielen Dank für die schnelle Rückmeldung, füge ich die Skripte bei CSS ein ?
nein bei "template"
https://github.com/oweitman/ioBroker.rssfeed#base-template-rss-feed-widget-2es ist ja eine mischung aus skript/html/css
ist im detail in der doku beschrieben -
Ich füge das in das RSS Vorlage Feld, aber leider kommt ein fehler
-
Ich füge das in das RSS Vorlage Feld, aber leider kommt ein fehler
ok, da hat sich an 2 stellen ein leerzeichen eingeschlichen, wahrscheinlich durch den markdown formatter
<!-- available variables: widgetid -> id of the widget rss.meta -> all meta informations of an feed, details see Meta Helper widget rss.articles -> all articles as array, details see Article Helper widget style -> all style settings for the widget all variables are read only --> <style> #<%- widgetid %> img { width: calc(<%- style.width %> - 15px); height: auto; } #<%- widgetid %> img.rssfeed { width: auto; height: auto; } </style> <p><%- rss.meta.title %></p> <% rss.articles.forEach(function(item){ %> <div class="article"> <p><small><%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm") %></small></p> <h3><%- item.title %></h3> <p><%- item.description %></p> <div style="clear:both;"></div> </div> <% }); %> -
Das hat geklappt, hierbei gibt es keinen Fehler, ich glaube es gibt auch eine Vorlage die es wie eine Diashow anzeigt, hat sich in die Vorlage vieleicht auch ein Fehler eingeschlichen ?
-
code_text ```<!-- available variables: widgetid -> id of the widget rss.articles -> all articles as array, details see Article Helper widget style -> all style settings for the widget all variables are read only --> <style> #<%- widgetid % > img { width: calc(<%- style.width || '230px' %> - 15px); height: auto; } #<%- widgetid % > img.rssfeed { width: auto; height: auto; } .container { overflow: hidden; height: 100%; } .content { position: relative; border: 1px solid #ccc; overflow: scroll; height: 90%; } .slide { position: absolute; display: none; } .slide.active { display: contents; } .controls { margin-top: 10px; } </style> <div class="container"> <div class="content"> <% rss.articles.forEach(function(item){ %> <div class="article slide"> <p> <small><%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm") %></small> </p> <h3><%- item.title %></h3> <p><%- item.description %></p> <div style="clear:both;"></div> </div> <% }); %> </div> <div class="controls"> <button onclick="prevSlide()">Zurück</button> <button onclick="nextSlide()">Weiter</button> </div> </div> <script> currentSlide = 0; slides = document.querySelectorAll('.slide'); function showSlide(index) { slides.forEach((slide, i) => { if (i === index) { slide.classList.add('active'); } else { slide.classList.remove('active'); } }); } function prevSlide() { currentSlide = currentSlide > 0 ? currentSlide - 1 : slides.length - 1; showSlide(currentSlide); } function nextSlide() { currentSlide = currentSlide < slides.length - 1 ? currentSlide + 1 : 0; showSlide(currentSlide); } showSlide(currentSlide); </script> -
code_text ```<!-- available variables: widgetid -> id of the widget rss.articles -> all articles as array, details see Article Helper widget style -> all style settings for the widget all variables are read only --> <style> #<%- widgetid % > img { width: calc(<%- style.width || '230px' %> - 15px); height: auto; } #<%- widgetid % > img.rssfeed { width: auto; height: auto; } .container { overflow: hidden; height: 100%; } .content { position: relative; border: 1px solid #ccc; overflow: scroll; height: 90%; } .slide { position: absolute; display: none; } .slide.active { display: contents; } .controls { margin-top: 10px; } </style> <div class="container"> <div class="content"> <% rss.articles.forEach(function(item){ %> <div class="article slide"> <p> <small><%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm") %></small> </p> <h3><%- item.title %></h3> <p><%- item.description %></p> <div style="clear:both;"></div> </div> <% }); %> </div> <div class="controls"> <button onclick="prevSlide()">Zurück</button> <button onclick="nextSlide()">Weiter</button> </div> </div> <script> currentSlide = 0; slides = document.querySelectorAll('.slide'); function showSlide(index) { slides.forEach((slide, i) => { if (i === index) { slide.classList.add('active'); } else { slide.classList.remove('active'); } }); } function prevSlide() { currentSlide = currentSlide > 0 ? currentSlide - 1 : slides.length - 1; showSlide(currentSlide); } function nextSlide() { currentSlide = currentSlide < slides.length - 1 ? currentSlide + 1 : 0; showSlide(currentSlide); } showSlide(currentSlide); </script>ja, hol es dir nochmal von github.
da habe ich es soeben korrigiert.
ansonsten kannst du den fehler daran erkennendie folgende zeile
#<%- widgetid % > img.rssfeed {muss wie folgt sein
#<%- widgetid %> img.rssfeed {zwischen dem % und der schließenden klammer > darf kein leerzeichen sein.
das hat wie gedacht ein autoformatter von markdown in vscode verursacht. -
Blättert das skript alleine weiter ?
-
<style>
#w_id_<%- widgetid %> { height: 100%; display: flex; flex-direction: column; overflow: hidden; }
#w_id_<%- widgetid %> .content-area { flex: 1; border: 1px solid #444; position: relative; overflow: auto; padding: 10px; }
#w_id_<%- widgetid %> .slide { display: none; }
#w_id_<%- widgetid %> .slide.active { display: block; animation: vis-fade 0.5s ease-in; }
#w_id_<%- widgetid %> .controls { display: flex; justify-content: space-between; align-items: center; background: #222; padding: 5px; color: #fff; }
@keyframes vis-fade { from { opacity: 0; } to { opacity: 1; } }
</style><div id="w_id_<%- widgetid %>">
<div class="content-area">
<% if (rss && rss.articles && rss.articles.length > 0) { %>
<% rss.articles.forEach(function(item, index){ %>
<div class="article slide">
<p><small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small></p>
<h3><%- item.title %></h3>
<div><%- item.description %></div>
</div>
<% }); %>
<% } else { %>
<p>Keine Feeds gefunden. Prüfe die Instanz-Einstellungen.</p>
<% } %>
</div>
<div class="controls">
<button onclick="window'go_<%- widgetid %>'">◀</button>
<span class="pager"></span>
<button onclick="window'go_<%- widgetid %>'">▶</button>
</div>
</div><script>
// Sofort ausführen, um Variablen zu isolieren
(function() {
const id = 'w_id_<%- widgetid %>';
const speed = 5000; // 5 Sekunden
let cur = 0;
let timer;function refresh() { const el = document.getElementById(id); if (!el) return; const slides = el.querySelectorAll('.slide'); const pager = el.querySelector('.pager'); if (slides.length === 0) return; slides.forEach((s, i) => s.classList.toggle('active', i === cur)); if (pager) pager.innerText = (cur + 1) + " / " + slides.length; } function start() { stop(); timer = setInterval(() => window['go_<%- widgetid %>'](1), speed); } function stop() { if (timer) clearInterval(timer); } // Globaler Hook für Buttons window['go_<%- widgetid %>'] = function(n) { const slides = document.getElementById(id).querySelectorAll('.slide'); cur = (cur + n + slides.length) % slides.length; refresh(); start(); // Reset Timer }; // Warte kurz, bis VIS das HTML gerendert hat setTimeout(() => { refresh(); start(); }, 500); })();</script>
-
funkoniert leider nicht wenn man es in dem VIs modus versetzt
-
funkoniert leider nicht wenn man es in dem VIs modus versetzt
wo hast das her?
-
Warum fragst du ?
-
Ich habe noch eine version die Funkoniert allerdings, die kannst du gerne haben.
-
ich teste das Script gerade
-
ich teste das Script gerade
Warum fragst du ?
sowie du es eingefügt hast ist es schwer zum kopieren gewesen.
wenn du code einfügst musst du die immer in code tags setzen,
das ist der knopf über dem eingabefeld im forum mit </>
ansonsten wird die formatierung von code zerhauen
deswegen hat es jetzt länger gedauert<style> #w_id_<%- widgetid %> { height: 100%; display: flex; flex-direction: column; overflow: hidden; } #w_id_<%- widgetid %> .content-area { flex: 1; border: 1px solid #444; position: relative; overflow: auto; padding: 10px; } #w_id_<%- widgetid %> .slide { display: none; } #w_id_<%- widgetid %> .slide.active { display: block; animation: vis-fade 0.5s ease-in; } #w_id_<%- widgetid %> .controls { display: flex; justify-content: space-between; align-items: center; background: #222; padding: 5px; color: #fff; } @keyframes vis-fade { from { opacity: 0; } to { opacity: 1; } } </style> <div id="w_id_<%- widgetid %>"> <div class="content-area"> <% if (rss && rss.articles && rss.articles.length > 0) { rss.articles.forEach(function(item, index){ %> <div class="article slide"> <p><small><%- vis.formatDate(item.pubdate, "DD.MM.YYYY HH:mm") %></small></p> <h3><%- item.title %></h3> <div><%- item.description %></div> </div> <% }); } else { %> <p>Keine Feeds gefunden. Prüfe die Instanz-Einstellungen.</p> <% } %> </div> <div class="controls"> <button onclick="window'go_<%- widgetid %>'">◀</button> <span class="pager"></span> <button onclick="window'go_<%- widgetid %>'">▶</button> </div> </div> <script> // Sofort ausführen, um Variablen zu isolieren (function() { debugger; const id = 'w_id_<%- widgetid %>'; const speed = 5000; // 5 Sekunden let cur = 0; let timer; function refresh() { const el = document.getElementById(id); if (!el) return; const slides = el.querySelectorAll('.slide'); const pager = el.querySelector('.pager'); if (slides.length === 0) return; slides.forEach((s, i) => s.classList.toggle('active', i === cur)); if (pager) pager.innerText = (cur + 1) + " / " + slides.length; } function start() { stop(); timer = setInterval(() => window['go_<%- widgetid %>'](1), speed); } function stop() { if (timer) clearInterval(timer); } // Globaler Hook für Buttons window['go_<%- widgetid %>'] = function(n) { const slides = document.getElementById(id).querySelectorAll('.slide'); cur = (cur + n + slides.length) % slides.length; refresh(); start(); // Reset Timer }; // Warte kurz, bis VIS das HTML gerendert hat setTimeout(() => { refresh(); start(); }, 500); })(); </script>ich muss mal ein Hinweis in der Doku noch hinzufügen.
Problem ist hier die komprimierte css Darstellung. Da fummelt dann das Binding von vis rein. der Mechanismuss sucht immer nach dem Muster { .... }
Daher muss json und css im Template die Klammern immer auf separate Zeilen stellen. -
ah okay, ich habe den Code generieren lassen von KI, möchtest du dir den neuen Code mal ansehen, bzw. mal drüber fliegen ob der so okay ist ?
-
Du hast da schon gute viel arbeit reingesteckt, und vorallen mit den vorlagen finde ich das super.
-
ah okay, ich habe den Code generieren lassen von KI, möchtest du dir den neuen Code mal ansehen, bzw. mal drüber fliegen ob der so okay ist ?
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