{categories.map((category, idx) => (
-##
### Materialien und ihre Wiederverwertung
Kabeltrommeln bestehen aus unterschiedlichen Materialien, die jeweils verschiedene Recyclingmöglichkeiten bieten. Eine gezielte Rückführung hängt davon ab, ob das Material wiederverwertet oder weiterverarbeitet werden kann.
diff --git a/data/blog/de/zukunft-sichern-mit-h1z2z2-k-unser-solarkabel-zur-intersolar-2025.mdx b/data/blog/de/zukunft-sichern-mit-h1z2z2-k-unser-solarkabel-zur-intersolar-2025.mdx
index c1e7f696..5849c900 100644
--- a/data/blog/de/zukunft-sichern-mit-h1z2z2-k-unser-solarkabel-zur-intersolar-2025.mdx
+++ b/data/blog/de/zukunft-sichern-mit-h1z2z2-k-unser-solarkabel-zur-intersolar-2025.mdx
@@ -94,7 +94,6 @@ Ein Pluspunkt des H1Z2Z2-K ist seine Eignung zur direkten Erdverlegung – ohne
**Wichtig:** Für Projekte ab mehreren hundert Metern lohnt sich eine Spannungsfallberechnung – 6mm² ist nicht immer automatisch die optimale Wahl.
-##
## FAQ: Die häufigsten Fragen rund um H1Z2Z2-K Solarkabel
**Was bedeutet H1Z2Z2-K?** Die Bezeichnung steht für einen Kabeltyp mit bestimmten Isoliermaterialien und Eigenschaften laut EN 50618, geeignet für DC-Strom bis 1500 V.
**Ist das Kabel für Erdverlegung zugelassen?** Ja, inklusive direkter Erdverlegung ohne zusätzliche Schutzrohre.
diff --git a/data/blog/en/securing-the-future-with-h1z2z2-k-our-solar-cable-for-intersolar-2025.mdx b/data/blog/en/securing-the-future-with-h1z2z2-k-our-solar-cable-for-intersolar-2025.mdx
index 97458d39..861cd01b 100644
--- a/data/blog/en/securing-the-future-with-h1z2z2-k-our-solar-cable-for-intersolar-2025.mdx
+++ b/data/blog/en/securing-the-future-with-h1z2z2-k-our-solar-cable-for-intersolar-2025.mdx
@@ -94,7 +94,6 @@ One major advantage of the H1Z2Z2-K is its suitability for direct burial – wit
**Important:** For projects spanning several hundred meters, a voltage drop calculation is worthwhile – 6mm² isn’t always the best fit by default.
-##
## FAQ: The most frequently asked questions about H1Z2Z2-K solar cables
**What does H1Z2Z2-K mean?** This designation refers to a cable type with specific insulation materials and properties according to EN 50618, suitable for DC voltage up to 1500 V.
**Is the cable approved for underground installation?** Yes, including direct burial without additional protective conduits.
diff --git a/data/products/de/n2xfk2y.mdx b/data/products/de/hochspannungskabel/n2xfk2y.mdx
similarity index 100%
rename from data/products/de/n2xfk2y.mdx
rename to data/products/de/hochspannungskabel/n2xfk2y.mdx
diff --git a/data/products/de/n2xfkld2y.mdx b/data/products/de/hochspannungskabel/n2xfkld2y.mdx
similarity index 100%
rename from data/products/de/n2xfkld2y.mdx
rename to data/products/de/hochspannungskabel/n2xfkld2y.mdx
diff --git a/data/products/de/n2xsfl2y-hv.mdx b/data/products/de/hochspannungskabel/n2xsfl2y-hv.mdx
similarity index 100%
rename from data/products/de/n2xsfl2y-hv.mdx
rename to data/products/de/hochspannungskabel/n2xsfl2y-hv.mdx
diff --git a/data/products/de/na2xfk2y.mdx b/data/products/de/hochspannungskabel/na2xfk2y.mdx
similarity index 100%
rename from data/products/de/na2xfk2y.mdx
rename to data/products/de/hochspannungskabel/na2xfk2y.mdx
diff --git a/data/products/de/na2xfkld2y.mdx b/data/products/de/hochspannungskabel/na2xfkld2y.mdx
similarity index 100%
rename from data/products/de/na2xfkld2y.mdx
rename to data/products/de/hochspannungskabel/na2xfkld2y.mdx
diff --git a/data/products/de/na2xsfl2y-hv.mdx b/data/products/de/hochspannungskabel/na2xsfl2y-hv.mdx
similarity index 100%
rename from data/products/de/na2xsfl2y-hv.mdx
rename to data/products/de/hochspannungskabel/na2xsfl2y-hv.mdx
diff --git a/data/products/de/n2xs2y.mdx b/data/products/de/mittelspannungskabel/n2xs2y.mdx
similarity index 100%
rename from data/products/de/n2xs2y.mdx
rename to data/products/de/mittelspannungskabel/n2xs2y.mdx
diff --git a/data/products/de/n2xsf2y.mdx b/data/products/de/mittelspannungskabel/n2xsf2y.mdx
similarity index 100%
rename from data/products/de/n2xsf2y.mdx
rename to data/products/de/mittelspannungskabel/n2xsf2y.mdx
diff --git a/data/products/de/n2xsfl2y-mv.mdx b/data/products/de/mittelspannungskabel/n2xsfl2y-mv.mdx
similarity index 100%
rename from data/products/de/n2xsfl2y-mv.mdx
rename to data/products/de/mittelspannungskabel/n2xsfl2y-mv.mdx
diff --git a/data/products/de/n2xsy.mdx b/data/products/de/mittelspannungskabel/n2xsy.mdx
similarity index 100%
rename from data/products/de/n2xsy.mdx
rename to data/products/de/mittelspannungskabel/n2xsy.mdx
diff --git a/data/products/de/na2xs2y.mdx b/data/products/de/mittelspannungskabel/na2xs2y.mdx
similarity index 100%
rename from data/products/de/na2xs2y.mdx
rename to data/products/de/mittelspannungskabel/na2xs2y.mdx
diff --git a/data/products/de/na2xsf2y.mdx b/data/products/de/mittelspannungskabel/na2xsf2y.mdx
similarity index 100%
rename from data/products/de/na2xsf2y.mdx
rename to data/products/de/mittelspannungskabel/na2xsf2y.mdx
diff --git a/data/products/de/na2xsfl2y-mv.mdx b/data/products/de/mittelspannungskabel/na2xsfl2y-mv.mdx
similarity index 100%
rename from data/products/de/na2xsfl2y-mv.mdx
rename to data/products/de/mittelspannungskabel/na2xsfl2y-mv.mdx
diff --git a/data/products/de/na2xsy.mdx b/data/products/de/mittelspannungskabel/na2xsy.mdx
similarity index 100%
rename from data/products/de/na2xsy.mdx
rename to data/products/de/mittelspannungskabel/na2xsy.mdx
diff --git a/data/products/de/n2x2y.mdx b/data/products/de/niederspannungskabel/n2x2y.mdx
similarity index 100%
rename from data/products/de/n2x2y.mdx
rename to data/products/de/niederspannungskabel/n2x2y.mdx
diff --git a/data/products/de/n2xy.mdx b/data/products/de/niederspannungskabel/n2xy.mdx
similarity index 100%
rename from data/products/de/n2xy.mdx
rename to data/products/de/niederspannungskabel/n2xy.mdx
diff --git a/data/products/de/na2x2y.mdx b/data/products/de/niederspannungskabel/na2x2y.mdx
similarity index 100%
rename from data/products/de/na2x2y.mdx
rename to data/products/de/niederspannungskabel/na2x2y.mdx
diff --git a/data/products/de/na2xy.mdx b/data/products/de/niederspannungskabel/na2xy.mdx
similarity index 100%
rename from data/products/de/na2xy.mdx
rename to data/products/de/niederspannungskabel/na2xy.mdx
diff --git a/data/products/de/nay2y.mdx b/data/products/de/niederspannungskabel/nay2y.mdx
similarity index 100%
rename from data/products/de/nay2y.mdx
rename to data/products/de/niederspannungskabel/nay2y.mdx
diff --git a/data/products/de/naycwy.mdx b/data/products/de/niederspannungskabel/naycwy.mdx
similarity index 100%
rename from data/products/de/naycwy.mdx
rename to data/products/de/niederspannungskabel/naycwy.mdx
diff --git a/data/products/de/nayy.mdx b/data/products/de/niederspannungskabel/nayy.mdx
similarity index 100%
rename from data/products/de/nayy.mdx
rename to data/products/de/niederspannungskabel/nayy.mdx
diff --git a/data/products/de/ny2y.mdx b/data/products/de/niederspannungskabel/ny2y.mdx
similarity index 100%
rename from data/products/de/ny2y.mdx
rename to data/products/de/niederspannungskabel/ny2y.mdx
diff --git a/data/products/de/nycwy.mdx b/data/products/de/niederspannungskabel/nycwy.mdx
similarity index 100%
rename from data/products/de/nycwy.mdx
rename to data/products/de/niederspannungskabel/nycwy.mdx
diff --git a/data/products/de/nyy.mdx b/data/products/de/niederspannungskabel/nyy.mdx
similarity index 100%
rename from data/products/de/nyy.mdx
rename to data/products/de/niederspannungskabel/nyy.mdx
diff --git a/data/products/de/h1z2z2-k.mdx b/data/products/de/solarkabel/h1z2z2-k.mdx
similarity index 100%
rename from data/products/de/h1z2z2-k.mdx
rename to data/products/de/solarkabel/h1z2z2-k.mdx
diff --git a/data/products/en/n2xfk2y.mdx b/data/products/en/high-voltage-cables/n2xfk2y.mdx
similarity index 100%
rename from data/products/en/n2xfk2y.mdx
rename to data/products/en/high-voltage-cables/n2xfk2y.mdx
diff --git a/data/products/en/n2xfkld2y.mdx b/data/products/en/high-voltage-cables/n2xfkld2y.mdx
similarity index 100%
rename from data/products/en/n2xfkld2y.mdx
rename to data/products/en/high-voltage-cables/n2xfkld2y.mdx
diff --git a/data/products/en/n2xsfl2y-hv.mdx b/data/products/en/high-voltage-cables/n2xsfl2y-hv.mdx
similarity index 100%
rename from data/products/en/n2xsfl2y-hv.mdx
rename to data/products/en/high-voltage-cables/n2xsfl2y-hv.mdx
diff --git a/data/products/en/na2xfk2y.mdx b/data/products/en/high-voltage-cables/na2xfk2y.mdx
similarity index 100%
rename from data/products/en/na2xfk2y.mdx
rename to data/products/en/high-voltage-cables/na2xfk2y.mdx
diff --git a/data/products/en/na2xfkld2y.mdx b/data/products/en/high-voltage-cables/na2xfkld2y.mdx
similarity index 100%
rename from data/products/en/na2xfkld2y.mdx
rename to data/products/en/high-voltage-cables/na2xfkld2y.mdx
diff --git a/data/products/en/na2xsfl2y-hv.mdx b/data/products/en/high-voltage-cables/na2xsfl2y-hv.mdx
similarity index 100%
rename from data/products/en/na2xsfl2y-hv.mdx
rename to data/products/en/high-voltage-cables/na2xsfl2y-hv.mdx
diff --git a/data/products/en/n2x2y.mdx b/data/products/en/low-voltage-cables/n2x2y.mdx
similarity index 100%
rename from data/products/en/n2x2y.mdx
rename to data/products/en/low-voltage-cables/n2x2y.mdx
diff --git a/data/products/en/n2xy.mdx b/data/products/en/low-voltage-cables/n2xy.mdx
similarity index 100%
rename from data/products/en/n2xy.mdx
rename to data/products/en/low-voltage-cables/n2xy.mdx
diff --git a/data/products/en/na2x2y.mdx b/data/products/en/low-voltage-cables/na2x2y.mdx
similarity index 100%
rename from data/products/en/na2x2y.mdx
rename to data/products/en/low-voltage-cables/na2x2y.mdx
diff --git a/data/products/en/na2xy.mdx b/data/products/en/low-voltage-cables/na2xy.mdx
similarity index 100%
rename from data/products/en/na2xy.mdx
rename to data/products/en/low-voltage-cables/na2xy.mdx
diff --git a/data/products/en/nay2y.mdx b/data/products/en/low-voltage-cables/nay2y.mdx
similarity index 100%
rename from data/products/en/nay2y.mdx
rename to data/products/en/low-voltage-cables/nay2y.mdx
diff --git a/data/products/en/naycwy.mdx b/data/products/en/low-voltage-cables/naycwy.mdx
similarity index 100%
rename from data/products/en/naycwy.mdx
rename to data/products/en/low-voltage-cables/naycwy.mdx
diff --git a/data/products/en/nayy.mdx b/data/products/en/low-voltage-cables/nayy.mdx
similarity index 100%
rename from data/products/en/nayy.mdx
rename to data/products/en/low-voltage-cables/nayy.mdx
diff --git a/data/products/en/ny2y.mdx b/data/products/en/low-voltage-cables/ny2y.mdx
similarity index 100%
rename from data/products/en/ny2y.mdx
rename to data/products/en/low-voltage-cables/ny2y.mdx
diff --git a/data/products/en/nycwy.mdx b/data/products/en/low-voltage-cables/nycwy.mdx
similarity index 100%
rename from data/products/en/nycwy.mdx
rename to data/products/en/low-voltage-cables/nycwy.mdx
diff --git a/data/products/en/nyy.mdx b/data/products/en/low-voltage-cables/nyy.mdx
similarity index 100%
rename from data/products/en/nyy.mdx
rename to data/products/en/low-voltage-cables/nyy.mdx
diff --git a/data/products/en/n2xs2y.mdx b/data/products/en/medium-voltage-cables/n2xs2y.mdx
similarity index 100%
rename from data/products/en/n2xs2y.mdx
rename to data/products/en/medium-voltage-cables/n2xs2y.mdx
diff --git a/data/products/en/n2xsf2y.mdx b/data/products/en/medium-voltage-cables/n2xsf2y.mdx
similarity index 100%
rename from data/products/en/n2xsf2y.mdx
rename to data/products/en/medium-voltage-cables/n2xsf2y.mdx
diff --git a/data/products/en/n2xsfl2y-mv.mdx b/data/products/en/medium-voltage-cables/n2xsfl2y-mv.mdx
similarity index 100%
rename from data/products/en/n2xsfl2y-mv.mdx
rename to data/products/en/medium-voltage-cables/n2xsfl2y-mv.mdx
diff --git a/data/products/en/n2xsy.mdx b/data/products/en/medium-voltage-cables/n2xsy.mdx
similarity index 100%
rename from data/products/en/n2xsy.mdx
rename to data/products/en/medium-voltage-cables/n2xsy.mdx
diff --git a/data/products/en/na2xs2y.mdx b/data/products/en/medium-voltage-cables/na2xs2y.mdx
similarity index 100%
rename from data/products/en/na2xs2y.mdx
rename to data/products/en/medium-voltage-cables/na2xs2y.mdx
diff --git a/data/products/en/na2xsf2y.mdx b/data/products/en/medium-voltage-cables/na2xsf2y.mdx
similarity index 100%
rename from data/products/en/na2xsf2y.mdx
rename to data/products/en/medium-voltage-cables/na2xsf2y.mdx
diff --git a/data/products/en/na2xsfl2y-mv.mdx b/data/products/en/medium-voltage-cables/na2xsfl2y-mv.mdx
similarity index 100%
rename from data/products/en/na2xsfl2y-mv.mdx
rename to data/products/en/medium-voltage-cables/na2xsfl2y-mv.mdx
diff --git a/data/products/en/na2xsy.mdx b/data/products/en/medium-voltage-cables/na2xsy.mdx
similarity index 100%
rename from data/products/en/na2xsy.mdx
rename to data/products/en/medium-voltage-cables/na2xsy.mdx
diff --git a/data/products/en/h1z2z2-k.mdx b/data/products/en/solar-cables/h1z2z2-k.mdx
similarity index 100%
rename from data/products/en/h1z2z2-k.mdx
rename to data/products/en/solar-cables/h1z2z2-k.mdx
diff --git a/next.config.mjs b/next.config.mjs
index f0b00fc3..95ba8e14 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -348,6 +348,10 @@ const nextConfig = {
}
return [
+ {
+ source: '/de/produkte',
+ destination: '/de/products',
+ },
{
source: '/cms/:path*',
destination: `${directusUrl}/:path*`,
diff --git a/organize-products.js b/organize-products.js
new file mode 100644
index 00000000..9391573d
--- /dev/null
+++ b/organize-products.js
@@ -0,0 +1,35 @@
+const fs = require('fs');
+const path = require('path');
+const matter = require('gray-matter');
+
+const locales = ['de', 'en'];
+
+function slugify(text) {
+ return text.toLowerCase().replace(/\s+/g, '-');
+}
+
+for (const locale of locales) {
+ const dir = path.join('data', 'products', locale);
+ const files = fs.readdirSync(dir).filter((f) => f.endsWith('.mdx'));
+
+ for (const file of files) {
+ const filePath = path.join(dir, file);
+ const content = fs.readFileSync(filePath, 'utf8');
+ const { data } = matter(content);
+
+ if (data.categories && data.categories.length > 0) {
+ const category = slugify(data.categories[0]);
+ const targetDir = path.join(dir, category);
+
+ if (!fs.existsSync(targetDir)) {
+ fs.mkdirSync(targetDir, { recursive: true });
+ }
+
+ const targetPath = path.join(targetDir, file);
+ fs.renameSync(filePath, targetPath);
+ console.log(`Moved ${file} -> ${category}/`);
+ } else {
+ console.warn(`Warning: No category found for ${file}`);
+ }
+ }
+}
diff --git a/scripts/check-html.ts b/scripts/check-html.ts
index edad8959..8529b664 100644
--- a/scripts/check-html.ts
+++ b/scripts/check-html.ts
@@ -5,12 +5,12 @@ import * as path from 'path';
import { execSync } from 'child_process';
const targetUrl = process.argv[2] || process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3000';
-const limit = process.env.PAGESPEED_LIMIT ? parseInt(process.env.PAGESPEED_LIMIT) : 20;
+const limit = process.env.PAGESPEED_LIMIT ? parseInt(process.env.PAGESPEED_LIMIT) : 0; // 0 means no limit
const gatekeeperPassword = process.env.GATEKEEPER_PASSWORD || 'klz2026';
async function main() {
console.log(`\n🚀 Starting HTML Validation for: ${targetUrl}`);
- console.log(`📊 Limit: ${limit} pages\n`);
+ console.log(`📊 Limit: ${limit ? limit : 'None (Full Sitemap)'} pages\n`);
try {
const sitemapUrl = `${targetUrl.replace(/\/$/, '')}/sitemap.xml`;
@@ -39,7 +39,7 @@ async function main() {
process.exit(1);
}
- if (urls.length > limit) {
+ if (limit && urls.length > limit) {
console.log(
`⚠️ Too many pages (${urls.length}). Limiting to ${limit} representative pages.`,
);
@@ -55,11 +55,16 @@ async function main() {
console.log(`📥 Fetching HTML for ${urls.length} pages...`);
for (let i = 0; i < urls.length; i++) {
const u = urls[i];
- const res = await axios.get(u, {
- headers: { Cookie: `klz_gatekeeper_session=${gatekeeperPassword}` },
- });
- const filename = `page-${i}.html`;
- fs.writeFileSync(path.join(outputDir, filename), res.data);
+ try {
+ const res = await axios.get(u, {
+ headers: { Cookie: `klz_gatekeeper_session=${gatekeeperPassword}` },
+ });
+ const filename = `page-${i}.html`;
+ fs.writeFileSync(path.join(outputDir, filename), res.data);
+ } catch (err: any) {
+ console.error(`❌ HTTP Error fetching ${u}: ${err.message}`);
+ throw err;
+ }
}
console.log(`\n💻 Executing html-validate...`);