From 5d953fda7b6a1366b301da3db188173c3883a6ac Mon Sep 17 00:00:00 2001 From: smueller Date: Wed, 27 May 2026 13:51:54 +0200 Subject: [PATCH] Enhance product configuration and ordering functionality: Updated products-config.php to include shop URLs for various packages, improving the central management of product information. Added new functions for generating order URLs based on product and package selections. Updated public pages for VPC, VPS, Mail Gateway, and Webhosting to utilize the new order URL functionality, enhancing user experience and streamlining the ordering process. --- backend/config/products-config.php | 56 +++++++++++++++++++++++++++--- public/mail-gateway.php | 4 +-- public/vpc.php | 4 +-- public/vps.php | 4 +-- public/webhosting.php | 6 ++-- 5 files changed, 61 insertions(+), 13 deletions(-) diff --git a/backend/config/products-config.php b/backend/config/products-config.php index 3f9db46..34e96f9 100644 --- a/backend/config/products-config.php +++ b/backend/config/products-config.php @@ -2,7 +2,8 @@ /** * HexaHost.de Produkt-Konfiguration * - * Hier können Sie alle Preise und Produktinformationen zentral verwalten. + * Hier können Sie alle Preise, Shop-Links und Produktinformationen zentral verwalten. + * Pro Paket: shop_url (WHMCS/Warenkorb-Link, z. B. https://shop.hexahost.de/cart.php?a=add&pid=123) * Nach Änderungen: npm run build && npm run deploy * * Verwendung in PHP-Seiten: @@ -30,6 +31,7 @@ $PRODUCTS['vpc'] = [ 'starter' => [ 'name' => 'VPC Starter', 'price' => '4,99', + 'shop_url' => '', 'featured' => false, 'specs' => [ ['label' => 'CPU Kerne', 'value' => '1 vCore'], @@ -49,6 +51,7 @@ $PRODUCTS['vpc'] = [ 'business' => [ 'name' => 'VPC Business', 'price' => '9,99', + 'shop_url' => '', 'featured' => true, 'specs' => [ ['label' => 'CPU Kerne', 'value' => '2 vCores'], @@ -69,6 +72,7 @@ $PRODUCTS['vpc'] = [ 'professional' => [ 'name' => 'VPC Professional', 'price' => '19,99', + 'shop_url' => '', 'featured' => false, 'specs' => [ ['label' => 'CPU Kerne', 'value' => '4 vCores'], @@ -90,6 +94,7 @@ $PRODUCTS['vpc'] = [ 'enterprise' => [ 'name' => 'VPC Enterprise', 'price' => '39,99', + 'shop_url' => '', 'featured' => false, 'specs' => [ ['label' => 'CPU Kerne', 'value' => '8 vCores'], @@ -132,6 +137,7 @@ $PRODUCTS['vps'] = [ 'starter' => [ 'name' => 'VPS Starter', 'price' => '9,99', + 'shop_url' => '', 'featured' => false, 'specs' => [ ['label' => 'CPU Kerne', 'value' => '1 vCore'], @@ -151,6 +157,7 @@ $PRODUCTS['vps'] = [ 'business' => [ 'name' => 'VPS Business', 'price' => '19,99', + 'shop_url' => '', 'featured' => true, 'specs' => [ ['label' => 'CPU Kerne', 'value' => '2 vCores'], @@ -171,6 +178,7 @@ $PRODUCTS['vps'] = [ 'professional' => [ 'name' => 'VPS Professional', 'price' => '39,99', + 'shop_url' => '', 'featured' => false, 'specs' => [ ['label' => 'CPU Kerne', 'value' => '4 vCores'], @@ -192,6 +200,7 @@ $PRODUCTS['vps'] = [ 'enterprise' => [ 'name' => 'VPS Enterprise', 'price' => '79,99', + 'shop_url' => '', 'featured' => false, 'specs' => [ ['label' => 'CPU Kerne', 'value' => '8 vCores'], @@ -234,6 +243,7 @@ $PRODUCTS['mail-gateway'] = [ 'starter' => [ 'name' => 'Mail Starter', 'price' => '4,99', + 'shop_url' => '', 'featured' => false, 'specs' => [ ['label' => 'Postfächer', 'value' => '5'], @@ -252,6 +262,7 @@ $PRODUCTS['mail-gateway'] = [ 'business' => [ 'name' => 'Mail Business', 'price' => '14,99', + 'shop_url' => '', 'featured' => true, 'specs' => [ ['label' => 'Postfächer', 'value' => '25'], @@ -272,6 +283,7 @@ $PRODUCTS['mail-gateway'] = [ 'professional' => [ 'name' => 'Mail Professional', 'price' => '29,99', + 'shop_url' => '', 'featured' => false, 'specs' => [ ['label' => 'Postfächer', 'value' => '100'], @@ -293,6 +305,7 @@ $PRODUCTS['mail-gateway'] = [ 'enterprise' => [ 'name' => 'Mail Enterprise', 'price' => '59,99', + 'shop_url' => '', 'featured' => false, 'specs' => [ ['label' => 'Postfächer', 'value' => 'Unbegrenzt'], @@ -336,6 +349,7 @@ $PRODUCTS['webhosting'] = [ 'starter' => [ 'name' => 'Webhosting Starter', 'price' => '4,99', + 'shop_url' => 'https://shop.hexahost.de/store/webserver/webhosting-starter', 'featured' => false, 'specs' => [ ['label' => 'Webspace', 'value' => '10 GB'], @@ -358,6 +372,7 @@ $PRODUCTS['webhosting'] = [ 'business' => [ 'name' => 'Webhosting Business', 'price' => '7,99', + 'shop_url' => 'https://shop.hexahost.de/store/webserver/webhosting-business', 'featured' => true, 'specs' => [ ['label' => 'Webspace', 'value' => '30 GB'], @@ -380,6 +395,7 @@ $PRODUCTS['webhosting'] = [ 'professional' => [ 'name' => 'Webhosting Professional', 'price' => '9,99', + 'shop_url' => 'https://shop.hexahost.de/store/webserver/webhosting-professional', 'featured' => false, 'specs' => [ ['label' => 'Webspace', 'value' => '50 GB'], @@ -402,6 +418,7 @@ $PRODUCTS['webhosting'] = [ 'enterprise' => [ 'name' => 'Webhosting Enterprise', 'price' => '29,99', + 'shop_url' => '', 'featured' => false, 'specs' => [ ['label' => 'Webspace', 'value' => '200 GB'], @@ -485,6 +502,38 @@ function formatPrice($price, $withCurrency = true) { return $withCurrency ? $price . '€' : $price; } +/** + * Bestell-Link für ein Paket (Online-Shop oder Kontaktformular) + */ +function getOrderUrl($productId, $packageId) { + $package = getPackage($productId, $packageId); + if ($package && !empty($package['shop_url'])) { + return $package['shop_url']; + } + + return sprintf('contact.php?package=%s-%s', $productId, $packageId); +} + +/** + * Bestell-Link für CTA (beliebtes Paket oder erstes Paket) + */ +function getProductOrderUrl($productId) { + $packages = getProductPackages($productId); + + foreach ($packages as $packageId => $package) { + if (!empty($package['featured'])) { + return getOrderUrl($productId, $packageId); + } + } + + $firstPackageId = array_key_first($packages); + if ($firstPackageId !== null) { + return getOrderUrl($productId, $firstPackageId); + } + + return sprintf('contact.php?product=%s', $productId); +} + /** * Generiert HTML für eine Paket-Karte */ @@ -522,7 +571,7 @@ function renderPackageCard($productId, $packageId, $package) {
%s
- Jetzt bestellen + Jetzt bestellen ', $featuredClass, $featuredBadge, @@ -530,8 +579,7 @@ function renderPackageCard($productId, $packageId, $package) { $package['price'], $specsHtml, $featuresHtml, - $productId, - $packageId + htmlspecialchars(getOrderUrl($productId, $packageId), ENT_QUOTES, 'UTF-8') ); } diff --git a/public/mail-gateway.php b/public/mail-gateway.php index b0fd0f2..a8e357d 100644 --- a/public/mail-gateway.php +++ b/public/mail-gateway.php @@ -166,8 +166,8 @@ includeHeader($page_title, $page_description, $current_page);

- Jetzt bestellen - Beratung anfordern + Jetzt bestellen + Beratung anfordern
diff --git a/public/vpc.php b/public/vpc.php index bc24083..287c383 100644 --- a/public/vpc.php +++ b/public/vpc.php @@ -166,8 +166,8 @@ includeHeader($page_title, $page_description, $current_page);

- Jetzt bestellen - Beratung anfordern + Jetzt bestellen + Beratung anfordern
diff --git a/public/vps.php b/public/vps.php index 8e2fd5a..f87ea5b 100644 --- a/public/vps.php +++ b/public/vps.php @@ -171,8 +171,8 @@ includeHeader($page_title, $page_description, $current_page);

- Jetzt bestellen - Beratung anfordern + Jetzt bestellen + Beratung anfordern
diff --git a/public/webhosting.php b/public/webhosting.php index 86c2bc7..be673a3 100644 --- a/public/webhosting.php +++ b/public/webhosting.php @@ -95,7 +95,7 @@ includeHeader($page_title, $page_description, $current_page); -

cPanel/Webmin

+

Plesk

Benutzerfreundliche Verwaltungsoberfläche für einfache Website-Verwaltung und E-Mail-Konfiguration.

@@ -170,8 +170,8 @@ includeHeader($page_title, $page_description, $current_page);