+
+
+
+ {/* Vrstica rubrik kot na ONE — brez horoskopa, ta ima na folx.tv svojo stran */}
+
+
+
+
+
+
+ {rubrik || "Aktuelles"}
+
+
+ {isLoading ? (
+
+ {Array.from({ length: 6 }).map((_, i) => (
+
+ ))}
+
+ ) : items.length === 0 ? (
+ In dieser Rubrik gibt es derzeit keine Beiträge.
+ ) : (
+
+ {items.map((a, idx) => (
+
+ {idx > 0 && idx % 6 === 0 && (
+
+ )}
+
+
+ {a.coverImage && (
+
+

+
+ )}
+
+
+ {a.category}
+
+ {format(new Date(a.publishedAt), "d. MMM yyyy", { locale: de })}
+
+
+
+ {a.title}
+
+
+ {a.excerpt}
+
+
+
+ {a.views.toLocaleString()}
+
+
+
+
+
+ ))}
+
+ )}
+
+ {data && data.totalPages > 1 && (
+
+
+
+ Seite {page} von {data.totalPages}
+
+
+
+ )}
+
+
+
+
+
+ );
+}
diff --git a/client/src/pages/home.tsx b/client/src/pages/home.tsx
index 76a1560..424243d 100644
--- a/client/src/pages/home.tsx
+++ b/client/src/pages/home.tsx
@@ -718,7 +718,10 @@ export default function Home() {
// Splosne novice imajo svojo rubriko /aktuelles in ne sodijo na naslovnico,
// ki ostaja Volksmusik in Schlager.
const articles = useMemo(
- () => (allArticles || []).filter((a) => a.category !== "Aktuelles"),
+ () =>
+ (allArticles || []).filter(
+ (a) => !["Aktuelles", "Politik", "Promis", "Sport", "Musik & Film"].includes(a.category)
+ ),
[allArticles]
);
diff --git a/server/routes.ts b/server/routes.ts
index d810bb4..1827675 100644
--- a/server/routes.ts
+++ b/server/routes.ts
@@ -180,6 +180,32 @@ export async function registerRoutes(
res.json(articles);
});
+ // Rubrike, ki skupaj sestavljajo /aktuelles. Horoskop, recepti in vreme so
+ // na folx.tv svoje strani, zato jih tu ni.
+ const AKTUELLES_RUBRIKEN = ["Politik", "Promis", "Sport", "Musik & Film"];
+
+ app.get("/api/articles/aktuelles", async (req, res) => {
+ try {
+ const page = Math.max(1, parseInt(req.query.page as string) || 1);
+ const limit = Math.min(48, parseInt(req.query.limit as string) || 12);
+ const rubrik = (req.query.rubrik as string) || "";
+ const wanted = rubrik && AKTUELLES_RUBRIKEN.includes(rubrik) ? [rubrik] : AKTUELLES_RUBRIKEN;
+ const all = (await storage.getArticles()).filter((a) => wanted.includes(a.category));
+ const total = all.length;
+ const start = (page - 1) * limit;
+ res.json({
+ articles: all.slice(start, start + limit),
+ total,
+ page,
+ totalPages: Math.ceil(total / limit),
+ hasMore: start + limit < total,
+ rubriken: AKTUELLES_RUBRIKEN,
+ });
+ } catch (e: any) {
+ res.status(500).json({ message: e?.message || "error" });
+ }
+ });
+
app.get("/api/articles/category/:category", async (req, res) => {
const page = parseInt(req.query.page as string);
const limit = parseInt(req.query.limit as string) || 12;