631 lines
24 KiB
PHP
631 lines
24 KiB
PHP
<?php
|
|
/**
|
|
* HexaHost.de Produkt-Konfiguration
|
|
*
|
|
* 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:
|
|
* require_once 'config/products-config.php';
|
|
* $packages = getProductPackages('vpc');
|
|
*/
|
|
|
|
// ============================================================================
|
|
// VIRTUAL PRIVATE CONTAINER (VPC)
|
|
// ============================================================================
|
|
$PRODUCTS['vpc'] = [
|
|
'name' => 'Virtual Private Container',
|
|
'short_name' => 'VPC',
|
|
'description' => 'Effiziente LXC-Container auf Proxmox-Basis',
|
|
'min_price' => '4,99',
|
|
'hero_highlight' => 'auf Proxmox LXC',
|
|
'hero_description' => 'Erleben Sie die Effizienz von Linux-Containern mit der Zuverlässigkeit von Proxmox. Unsere VPC-Lösungen bieten optimale Performance bei minimalem Ressourcenverbrauch.',
|
|
'packages_title' => 'VPC Pakete',
|
|
'packages_description' => 'Wählen Sie das perfekte Container-Paket für Ihre Anforderungen',
|
|
'cta_title' => 'Bereit für Ihren VPC?',
|
|
'cta_description' => 'Starten Sie noch heute mit einem Virtual Private Container',
|
|
'page_title' => 'Virtual Private Container - Effiziente LXC Container | HexaHost.de',
|
|
'page_description' => 'Virtual Private Container auf Proxmox LXC-Basis. Effiziente und preiswerte Container-Lösungen ab 4,99€/Monat bei HexaHost.de',
|
|
'packages' => [
|
|
'starter' => [
|
|
'name' => 'VPC Starter',
|
|
'price' => '4,99',
|
|
'shop_url' => '',
|
|
'featured' => false,
|
|
'specs' => [
|
|
['label' => 'CPU Kerne', 'value' => '1 vCore'],
|
|
['label' => 'RAM', 'value' => '1 GB'],
|
|
['label' => 'SSD Speicher', 'value' => '20 GB'],
|
|
['label' => 'Traffic', 'value' => '1 TB'],
|
|
['label' => 'IPv4 Adressen', 'value' => '1'],
|
|
],
|
|
'features' => [
|
|
'Proxmox LXC Container',
|
|
'Root-Zugriff',
|
|
'SSH-Zugang',
|
|
'Backup inklusive',
|
|
'24/7 Monitoring',
|
|
],
|
|
],
|
|
'business' => [
|
|
'name' => 'VPC Business',
|
|
'price' => '9,99',
|
|
'shop_url' => '',
|
|
'featured' => true,
|
|
'specs' => [
|
|
['label' => 'CPU Kerne', 'value' => '2 vCores'],
|
|
['label' => 'RAM', 'value' => '4 GB'],
|
|
['label' => 'SSD Speicher', 'value' => '80 GB'],
|
|
['label' => 'Traffic', 'value' => '3 TB'],
|
|
['label' => 'IPv4 Adressen', 'value' => '1'],
|
|
],
|
|
'features' => [
|
|
'Proxmox LXC Container',
|
|
'Root-Zugriff',
|
|
'SSH-Zugang',
|
|
'Tägliches Backup',
|
|
'24/7 Monitoring',
|
|
'Snapshot-Funktion',
|
|
],
|
|
],
|
|
'professional' => [
|
|
'name' => 'VPC Professional',
|
|
'price' => '19,99',
|
|
'shop_url' => '',
|
|
'featured' => false,
|
|
'specs' => [
|
|
['label' => 'CPU Kerne', 'value' => '4 vCores'],
|
|
['label' => 'RAM', 'value' => '8 GB'],
|
|
['label' => 'SSD Speicher', 'value' => '160 GB'],
|
|
['label' => 'Traffic', 'value' => '5 TB'],
|
|
['label' => 'IPv4 Adressen', 'value' => '2'],
|
|
],
|
|
'features' => [
|
|
'Proxmox LXC Container',
|
|
'Root-Zugriff',
|
|
'SSH-Zugang',
|
|
'Stündliches Backup',
|
|
'24/7 Monitoring',
|
|
'Snapshot-Funktion',
|
|
'Priority Support',
|
|
],
|
|
],
|
|
'enterprise' => [
|
|
'name' => 'VPC Enterprise',
|
|
'price' => '39,99',
|
|
'shop_url' => '',
|
|
'featured' => false,
|
|
'specs' => [
|
|
['label' => 'CPU Kerne', 'value' => '8 vCores'],
|
|
['label' => 'RAM', 'value' => '16 GB'],
|
|
['label' => 'SSD Speicher', 'value' => '320 GB'],
|
|
['label' => 'Traffic', 'value' => '10 TB'],
|
|
['label' => 'IPv4 Adressen', 'value' => '3'],
|
|
],
|
|
'features' => [
|
|
'Proxmox LXC Container',
|
|
'Root-Zugriff',
|
|
'SSH-Zugang',
|
|
'Stündliches Backup',
|
|
'24/7 Monitoring',
|
|
'Snapshot-Funktion',
|
|
'Priority Support',
|
|
'Individuelle Konfiguration',
|
|
],
|
|
],
|
|
],
|
|
];
|
|
|
|
// ============================================================================
|
|
// VIRTUAL PRIVATE SERVER (VPS)
|
|
// ============================================================================
|
|
$PRODUCTS['vps'] = [
|
|
'name' => 'Virtual Private Server',
|
|
'short_name' => 'VPS',
|
|
'description' => 'Vollwertige KVM-Virtualisierung mit Root-Zugriff',
|
|
'min_price' => '9,99',
|
|
'hero_highlight' => 'auf Proxmox KVM',
|
|
'hero_description' => 'Maximale Flexibilität und Kontrolle mit vollwertiger KVM-Virtualisierung. Installieren Sie jedes Betriebssystem und genießen Sie vollständigen Root-Zugriff.',
|
|
'packages_title' => 'VPS Pakete',
|
|
'packages_description' => 'Wählen Sie das perfekte VPS-Paket für Ihre Anforderungen',
|
|
'cta_title' => 'Bereit für Ihren VPS?',
|
|
'cta_description' => 'Starten Sie noch heute mit einem Virtual Private Server',
|
|
'page_title' => 'Virtual Private Server - KVM Virtualisierung | HexaHost.de',
|
|
'page_description' => 'Virtual Private Server auf Proxmox KVM-Basis. Vollwertige Virtualisierung mit Root-Zugriff ab 9,99€/Monat bei HexaHost.de',
|
|
'packages' => [
|
|
'starter' => [
|
|
'name' => 'VPS Starter',
|
|
'price' => '9,99',
|
|
'shop_url' => '',
|
|
'featured' => false,
|
|
'specs' => [
|
|
['label' => 'CPU Kerne', 'value' => '1 vCore'],
|
|
['label' => 'RAM', 'value' => '2 GB'],
|
|
['label' => 'SSD Speicher', 'value' => '40 GB'],
|
|
['label' => 'Traffic', 'value' => '2 TB'],
|
|
['label' => 'IPv4 Adressen', 'value' => '1'],
|
|
],
|
|
'features' => [
|
|
'Proxmox KVM Virtualisierung',
|
|
'Root-Zugriff',
|
|
'SSH-Zugang',
|
|
'Backup inklusive',
|
|
'24/7 Monitoring',
|
|
],
|
|
],
|
|
'business' => [
|
|
'name' => 'VPS Business',
|
|
'price' => '19,99',
|
|
'shop_url' => '',
|
|
'featured' => true,
|
|
'specs' => [
|
|
['label' => 'CPU Kerne', 'value' => '2 vCores'],
|
|
['label' => 'RAM', 'value' => '4 GB'],
|
|
['label' => 'SSD Speicher', 'value' => '80 GB'],
|
|
['label' => 'Traffic', 'value' => '4 TB'],
|
|
['label' => 'IPv4 Adressen', 'value' => '1'],
|
|
],
|
|
'features' => [
|
|
'Proxmox KVM Virtualisierung',
|
|
'Root-Zugriff',
|
|
'SSH-Zugang',
|
|
'Tägliches Backup',
|
|
'24/7 Monitoring',
|
|
'Snapshot-Funktion',
|
|
],
|
|
],
|
|
'professional' => [
|
|
'name' => 'VPS Professional',
|
|
'price' => '39,99',
|
|
'shop_url' => '',
|
|
'featured' => false,
|
|
'specs' => [
|
|
['label' => 'CPU Kerne', 'value' => '4 vCores'],
|
|
['label' => 'RAM', 'value' => '8 GB'],
|
|
['label' => 'SSD Speicher', 'value' => '160 GB'],
|
|
['label' => 'Traffic', 'value' => '8 TB'],
|
|
['label' => 'IPv4 Adressen', 'value' => '2'],
|
|
],
|
|
'features' => [
|
|
'Proxmox KVM Virtualisierung',
|
|
'Root-Zugriff',
|
|
'SSH-Zugang',
|
|
'Stündliches Backup',
|
|
'24/7 Monitoring',
|
|
'Snapshot-Funktion',
|
|
'Priority Support',
|
|
],
|
|
],
|
|
'enterprise' => [
|
|
'name' => 'VPS Enterprise',
|
|
'price' => '79,99',
|
|
'shop_url' => '',
|
|
'featured' => false,
|
|
'specs' => [
|
|
['label' => 'CPU Kerne', 'value' => '8 vCores'],
|
|
['label' => 'RAM', 'value' => '16 GB'],
|
|
['label' => 'SSD Speicher', 'value' => '320 GB'],
|
|
['label' => 'Traffic', 'value' => '15 TB'],
|
|
['label' => 'IPv4 Adressen', 'value' => '3'],
|
|
],
|
|
'features' => [
|
|
'Proxmox KVM Virtualisierung',
|
|
'Root-Zugriff',
|
|
'SSH-Zugang',
|
|
'Stündliches Backup',
|
|
'24/7 Monitoring',
|
|
'Snapshot-Funktion',
|
|
'Priority Support',
|
|
'Individuelle Konfiguration',
|
|
],
|
|
],
|
|
],
|
|
];
|
|
|
|
// ============================================================================
|
|
// MAIL GATEWAY
|
|
// ============================================================================
|
|
$PRODUCTS['mail-gateway'] = [
|
|
'name' => 'Mail Gateway',
|
|
'short_name' => 'Mail',
|
|
'description' => 'Professioneller E-Mail-Schutz für Unternehmen',
|
|
'min_price' => '4,99',
|
|
'hero_highlight' => 'für Unternehmen',
|
|
'hero_description' => 'Professionelle E-Mail-Infrastruktur mit maximalem Schutz vor Spam und Malware. Sichern Sie Ihre geschäftliche Kommunikation mit unseren Mail Gateway Lösungen.',
|
|
'packages_title' => 'Mail Gateway Pakete',
|
|
'packages_description' => 'Wählen Sie das passende Mail Gateway Paket für Ihr Unternehmen',
|
|
'cta_title' => 'Bereit für professionelle E-Mail-Kommunikation?',
|
|
'cta_description' => 'Starten Sie noch heute mit unserem Mail Gateway',
|
|
'page_title' => 'Mail Gateway - Professionelle E-Mail-Lösungen | HexaHost.de',
|
|
'page_description' => 'Professionelle Mail Gateway Lösungen für Unternehmen. Spam-Schutz, E-Mail-Archivierung und sichere E-Mail-Kommunikation bei HexaHost.de',
|
|
'packages' => [
|
|
'starter' => [
|
|
'name' => 'Mail Starter',
|
|
'price' => '4,99',
|
|
'shop_url' => '',
|
|
'featured' => false,
|
|
'specs' => [
|
|
['label' => 'Postfächer', 'value' => '5'],
|
|
['label' => 'Speicher/Postfach', 'value' => '5 GB'],
|
|
['label' => 'Domains', 'value' => '1'],
|
|
['label' => 'E-Mails/Tag', 'value' => '500'],
|
|
],
|
|
'features' => [
|
|
'Spam-Filter',
|
|
'Virus-Schutz',
|
|
'Webmail',
|
|
'IMAP/POP3',
|
|
'SSL/TLS Verschlüsselung',
|
|
],
|
|
],
|
|
'business' => [
|
|
'name' => 'Mail Business',
|
|
'price' => '14,99',
|
|
'shop_url' => '',
|
|
'featured' => true,
|
|
'specs' => [
|
|
['label' => 'Postfächer', 'value' => '25'],
|
|
['label' => 'Speicher/Postfach', 'value' => '10 GB'],
|
|
['label' => 'Domains', 'value' => '3'],
|
|
['label' => 'E-Mails/Tag', 'value' => '2.000'],
|
|
],
|
|
'features' => [
|
|
'Spam-Filter (erweitert)',
|
|
'Virus-Schutz',
|
|
'Webmail',
|
|
'IMAP/POP3',
|
|
'SSL/TLS Verschlüsselung',
|
|
'E-Mail Archivierung (30 Tage)',
|
|
'Kalender & Kontakte',
|
|
],
|
|
],
|
|
'professional' => [
|
|
'name' => 'Mail Professional',
|
|
'price' => '29,99',
|
|
'shop_url' => '',
|
|
'featured' => false,
|
|
'specs' => [
|
|
['label' => 'Postfächer', 'value' => '100'],
|
|
['label' => 'Speicher/Postfach', 'value' => '25 GB'],
|
|
['label' => 'Domains', 'value' => '10'],
|
|
['label' => 'E-Mails/Tag', 'value' => '10.000'],
|
|
],
|
|
'features' => [
|
|
'Spam-Filter (KI-gestützt)',
|
|
'Virus-Schutz',
|
|
'Webmail',
|
|
'IMAP/POP3',
|
|
'SSL/TLS Verschlüsselung',
|
|
'E-Mail Archivierung (1 Jahr)',
|
|
'Kalender & Kontakte',
|
|
'ActiveSync für Mobile',
|
|
],
|
|
],
|
|
'enterprise' => [
|
|
'name' => 'Mail Enterprise',
|
|
'price' => '59,99',
|
|
'shop_url' => '',
|
|
'featured' => false,
|
|
'specs' => [
|
|
['label' => 'Postfächer', 'value' => 'Unbegrenzt'],
|
|
['label' => 'Speicher/Postfach', 'value' => '50 GB'],
|
|
['label' => 'Domains', 'value' => 'Unbegrenzt'],
|
|
['label' => 'E-Mails/Tag', 'value' => 'Unbegrenzt'],
|
|
],
|
|
'features' => [
|
|
'Spam-Filter (KI-gestützt)',
|
|
'Virus-Schutz',
|
|
'Webmail',
|
|
'IMAP/POP3',
|
|
'SSL/TLS Verschlüsselung',
|
|
'E-Mail Archivierung (10 Jahre)',
|
|
'Kalender & Kontakte',
|
|
'ActiveSync für Mobile',
|
|
'Dedizierte IP',
|
|
'Priority Support',
|
|
],
|
|
],
|
|
],
|
|
];
|
|
|
|
// ============================================================================
|
|
// WEBHOSTING
|
|
// ============================================================================
|
|
$PRODUCTS['webhosting'] = [
|
|
'name' => 'Webhosting',
|
|
'short_name' => 'Webhosting',
|
|
'description' => 'Klassisches Hosting mit PHP, MySQL und SSL',
|
|
'min_price' => '4,99',
|
|
'hero_highlight' => 'Alles für Ihre Website',
|
|
'hero_description' => 'Klassisches Webhosting mit allem, was Sie für eine erfolgreiche Website benötigen. Plesk, PHP, SSL-Zertifikate und E-Mail-Postfächer - alles inklusive.',
|
|
'packages_title' => 'Webhosting Pakete',
|
|
'packages_description' => 'Von der ersten Website bis zum professionellen Online-Shop',
|
|
'cta_title' => 'Bereit für Ihr Webhosting?',
|
|
'cta_description' => 'Starten Sie noch heute mit professionellem Webhosting',
|
|
'page_title' => 'Webhosting - Klassisches Hosting für Websites | HexaHost.de',
|
|
'page_description' => 'Webhosting mit Plesk, PHP und SSL-Zertifikaten. Klassisches Hosting für Websites ab 4,99€/Monat bei HexaHost.de',
|
|
'packages' => [
|
|
'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'],
|
|
['label' => 'Domains inkl.', 'value' => '1'],
|
|
['label' => 'Subdomains', 'value' => '5'],
|
|
['label' => 'Domain-Alias', 'value' => '2'],
|
|
['label' => 'E-Mail-Postfächer', 'value' => '10'],
|
|
['label' => 'Datenbanken', 'value' => '2 MySQL'],
|
|
['label' => 'Traffic', 'value' => '100 GB'],
|
|
],
|
|
'features' => [
|
|
'Perfekt für kleine Websites und Blogs',
|
|
'Plesk',
|
|
'PHP 8.4 (FastCGI), Git, WP Toolkit, Composer',
|
|
'SSL-Zertifikat (Let\'s Encrypt)',
|
|
'E-Mail-Postfächer à 100MB',
|
|
'1-Klick-Apps - WordPress, Joomla, TYPO3, MediaWiki u. v. m.',
|
|
],
|
|
],
|
|
'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'],
|
|
['label' => 'Domains inkl.', 'value' => '1'],
|
|
['label' => 'Subdomains', 'value' => '10'],
|
|
['label' => 'Domain-Alias', 'value' => '2'],
|
|
['label' => 'E-Mail-Postfächer', 'value' => '20'],
|
|
['label' => 'Datenbanken', 'value' => '5 MySQL'],
|
|
['label' => 'Traffic', 'value' => '100 GB'],
|
|
],
|
|
'features' => [
|
|
'Perfekt für mittlere Websites und Blogs',
|
|
'Plesk',
|
|
'PHP 8.4 (FastCGI), Git, WP Toolkit, Composer',
|
|
'SSL-Zertifikat (Let\'s Encrypt)',
|
|
'E-Mail-Postfächer à 100MB',
|
|
'1-Klick-Apps - WordPress, Joomla, TYPO3, MediaWiki u. v. m.',
|
|
],
|
|
],
|
|
'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'],
|
|
['label' => 'Domains inkl.', 'value' => '3'],
|
|
['label' => 'Subdomains', 'value' => 'Unbegrenzt'],
|
|
['label' => 'Domain-Alias', 'value' => 'Unbegrenzt'],
|
|
['label' => 'E-Mail-Postfächer', 'value' => '100'],
|
|
['label' => 'Datenbanken', 'value' => '20 MySQL'],
|
|
['label' => 'Traffic', 'value' => '100 GB'],
|
|
],
|
|
'features' => [
|
|
'Perfekt für größere Websites und Blogs',
|
|
'Plesk',
|
|
'PHP 8.4 (FastCGI), Git, WP Toolkit, Composer',
|
|
'SSL-Zertifikat (Let\'s Encrypt)',
|
|
'E-Mail-Postfächer à 100MB',
|
|
'1-Klick-Apps - WordPress, Joomla, TYPO3, MediaWiki u. v. m.',
|
|
],
|
|
],
|
|
'enterprise' => [
|
|
'name' => 'Webhosting Enterprise',
|
|
'price' => '29,99',
|
|
'shop_url' => '',
|
|
'featured' => false,
|
|
'specs' => [
|
|
['label' => 'Webspace', 'value' => '200 GB'],
|
|
['label' => 'Domains inkl.', 'value' => '5'],
|
|
['label' => 'Subdomains', 'value' => 'Unbegrenzt'],
|
|
['label' => 'Domain-Alias', 'value' => 'Unbegrenzt'],
|
|
['label' => 'E-Mail-Postfächer', 'value' => 'Unbegrenzt'],
|
|
['label' => 'Datenbanken', 'value' => '50 MySQL'],
|
|
['label' => 'Traffic', 'value' => '1 TB'],
|
|
],
|
|
'features' => [
|
|
'Perfekt für Enterprise-Websites und Blogs',
|
|
'Plesk',
|
|
'PHP 8.4 (FastCGI), Git, WP Toolkit, Composer',
|
|
'SSL-Zertifikat (Let\'s Encrypt)',
|
|
'E-Mail-Postfächer à 100MB',
|
|
'1-Klick-Apps - WordPress, Joomla, TYPO3, MediaWiki u. v. m.',
|
|
'Priority Support',
|
|
'Individuelle Konfiguration',
|
|
],
|
|
],
|
|
],
|
|
];
|
|
|
|
// Sichtbarkeit in Navigation, Footer und auf der Startseite (Seiten bleiben per URL erreichbar)
|
|
$PRODUCT_VISIBILITY = [
|
|
'vpc' => false,
|
|
'vps' => false,
|
|
'mail-gateway' => false,
|
|
'webhosting' => true,
|
|
];
|
|
|
|
// ============================================================================
|
|
// HILFSFUNKTIONEN
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Prüft, ob eine Produktkategorie in der Navigation angezeigt wird
|
|
*/
|
|
function isProductVisible(string $productId): bool {
|
|
global $PRODUCT_VISIBILITY;
|
|
return $PRODUCT_VISIBILITY[$productId] ?? true;
|
|
}
|
|
|
|
/**
|
|
* HTML hidden-Attribut für ausgeblendete Produktkategorien
|
|
*/
|
|
function productHiddenAttr(string $productId): string {
|
|
return isProductVisible($productId) ? '' : ' hidden';
|
|
}
|
|
|
|
/**
|
|
* Aktive Navigationsseiten für sichtbare Produktkategorien
|
|
*
|
|
* @return string[]
|
|
*/
|
|
function getVisibleProductPageIds(): array {
|
|
global $PRODUCT_VISIBILITY;
|
|
return array_keys(array_filter($PRODUCT_VISIBILITY, static fn(bool $visible): bool => $visible));
|
|
}
|
|
|
|
/**
|
|
* Alle Produkte abrufen
|
|
*/
|
|
function getAllProducts() {
|
|
global $PRODUCTS;
|
|
return $PRODUCTS;
|
|
}
|
|
|
|
/**
|
|
* Ein Produkt abrufen
|
|
*/
|
|
function getProduct($productId) {
|
|
global $PRODUCTS;
|
|
return $PRODUCTS[$productId] ?? null;
|
|
}
|
|
|
|
/**
|
|
* Alle Pakete eines Produkts abrufen
|
|
*/
|
|
function getProductPackages($productId) {
|
|
global $PRODUCTS;
|
|
return $PRODUCTS[$productId]['packages'] ?? [];
|
|
}
|
|
|
|
/**
|
|
* Ein bestimmtes Paket abrufen
|
|
*/
|
|
function getPackage($productId, $packageId) {
|
|
global $PRODUCTS;
|
|
return $PRODUCTS[$productId]['packages'][$packageId] ?? null;
|
|
}
|
|
|
|
/**
|
|
* Preis eines Pakets abrufen
|
|
*/
|
|
function getPackagePrice($productId, $packageId) {
|
|
$package = getPackage($productId, $packageId);
|
|
return $package['price'] ?? null;
|
|
}
|
|
|
|
/**
|
|
* Minimalen Preis eines Produkts abrufen
|
|
*/
|
|
function getMinPrice($productId) {
|
|
global $PRODUCTS;
|
|
return $PRODUCTS[$productId]['min_price'] ?? null;
|
|
}
|
|
|
|
/**
|
|
* Preis formatiert ausgeben
|
|
*/
|
|
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
|
|
*/
|
|
function renderPackageCard($productId, $packageId, $package) {
|
|
$featuredClass = $package['featured'] ? ' featured' : '';
|
|
$featuredBadge = $package['featured'] ? '<div class="featured-badge">Beliebt</div>' : '';
|
|
|
|
$specsHtml = '';
|
|
foreach ($package['specs'] as $spec) {
|
|
$specsHtml .= sprintf(
|
|
'<div class="spec-item"><span class="spec-label">%s:</span><span class="spec-value">%s</span></div>',
|
|
htmlspecialchars($spec['label']),
|
|
htmlspecialchars($spec['value'])
|
|
);
|
|
}
|
|
|
|
$featuresHtml = '';
|
|
foreach ($package['features'] as $feature) {
|
|
$featuresHtml .= sprintf('<div class="feature">✓ %s</div>', htmlspecialchars($feature));
|
|
}
|
|
|
|
return sprintf('
|
|
<div class="package-card glass-card%s">
|
|
%s
|
|
<div class="package-header">
|
|
<h3 class="package-name">%s</h3>
|
|
<div class="package-price">
|
|
<span class="price">%s€</span>
|
|
<span class="period">/Monat</span>
|
|
</div>
|
|
</div>
|
|
<div class="package-specs">
|
|
%s
|
|
</div>
|
|
<div class="package-features">
|
|
%s
|
|
</div>
|
|
<a href="%s" class="btn btn-primary">Jetzt bestellen</a>
|
|
</div>',
|
|
$featuredClass,
|
|
$featuredBadge,
|
|
htmlspecialchars($package['name']),
|
|
$package['price'],
|
|
$specsHtml,
|
|
$featuresHtml,
|
|
htmlspecialchars(getOrderUrl($productId, $packageId), ENT_QUOTES, 'UTF-8')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Generiert HTML für alle Pakete eines Produkts
|
|
*/
|
|
function renderAllPackages($productId) {
|
|
$packages = getProductPackages($productId);
|
|
$html = '';
|
|
foreach ($packages as $packageId => $package) {
|
|
$html .= renderPackageCard($productId, $packageId, $package);
|
|
}
|
|
return $html;
|
|
}
|
|
?>
|