diff --git a/prerender/seo/feeds.cjs b/prerender/seo/feeds.cjs
index b13c537..e193cc1 100644
--- a/prerender/seo/feeds.cjs
+++ b/prerender/seo/feeds.cjs
@@ -11,20 +11,29 @@ Crawl-delay: 0
return robotsTxt;
};
-// Helper function to determine unit pricing measure based on product data
-const determineUnitPricingMeasure = (product) => {
- // Use the actual unit data from the product structure
+// Helper function to determine unit pricing data based on product data
+const determineUnitPricingData = (product) => {
+ const result = {
+ unit_pricing_measure: null,
+ unit_pricing_base_measure: null
+ };
+
+ // unit_pricing_measure: The quantity unit of the product as it's sold
if (product.fEinheitMenge && product.cEinheit) {
const amount = parseFloat(product.fEinheitMenge);
const unit = product.cEinheit.trim();
if (amount > 0 && unit) {
- return `${amount} ${unit}`;
+ result.unit_pricing_measure = `${amount}${unit}`;
}
}
- // Return null if no unit data available - don't corrupt data with fallbacks
- return null;
+ // unit_pricing_base_measure: The base quantity unit for unit pricing
+ if (product.cGrundEinheit && product.cGrundEinheit.trim()) {
+ result.unit_pricing_base_measure = product.cGrundEinheit.trim();
+ }
+
+ return result;
};
const generateProductsXml = (allProductsData = [], baseUrl, config) => {
@@ -341,11 +350,15 @@ const generateProductsXml = (allProductsData = [], baseUrl, config) => {
${parseFloat(product.weight).toFixed(2)} g`;
}
- // Add unit pricing measure (required by German law for many products)
- const unitPricingMeasure = determineUnitPricingMeasure(product);
- if (unitPricingMeasure) {
+ // Add unit pricing data (required by German law for many products)
+ const unitPricingData = determineUnitPricingData(product);
+ if (unitPricingData.unit_pricing_measure) {
productsXml += `
- ${unitPricingMeasure}`;
+ ${unitPricingData.unit_pricing_measure}`;
+ }
+ if (unitPricingData.unit_pricing_base_measure) {
+ productsXml += `
+ ${unitPricingData.unit_pricing_base_measure}`;
}
productsXml += `