'ubud-1',
'slug' => 'padma-resort-ubud-bali',
'name' => 'Padma Resort Ubud',
'area' => 'Ubud',
'tier' => 'Luxury',
'accType' => 'Resort',
'stars' => 5,
'rating' => 9.4,
'reviews' => 2840,
'price' => 220,
'image' => 'https://images.unsplash.com/photo-1555400038-63f5ba517a47?auto=format&fit=crop&w=1200&q=80',
'photos' => [
'https://images.unsplash.com/photo-1540541338287-41700207dee6?auto=format&fit=crop&w=800&q=80',
'https://images.unsplash.com/photo-1571896349842-33c89424de2d?auto=format&fit=crop&w=800&q=80',
'https://images.unsplash.com/photo-1582719478250-c89cae4dc85b?auto=format&fit=crop&w=800&q=80',
'https://images.unsplash.com/photo-1566073771259-6a8506099945?auto=format&fit=crop&w=800&q=80'
],
'desc' => 'Set within 11 hectares of lush Payangan bamboo forests, Padma Resort Ubud features a 89-meter heated infinity pool, terraced gardens, and tranquil valley views.',
'fullDesc' => 'Set within 11 hectares of lush Payangan bamboo forests, Padma Resort Ubud features a heated infinity pool overlooking the misty valley, world-class dining, and holistic wellness spa. Located in Ubud, Bali, it offers signature Balinese hospitality with luxury suite comforts.',
'locationDetail' => 'Payangan, Ubud, Bali, Indonesia',
'highlights' => ['89m Heated Infinity Pool', 'Payangan Forest Views', 'Free Daily Yoga & Afternoon Tea', 'Spa & Wellness'],
'agodaPath' => '/padma-resort-ubud/hotel/bali-id.html',
'agodaHotelId' => 921981
];
}
$title = htmlspecialchars($hotel['name'] ?? 'Bali Hotel');
$area = htmlspecialchars($hotel['area'] ?? 'Bali');
$slug = htmlspecialchars($hotel['slug'] ?? $cleanKey);
$starsCount = max(1, min(5, intval($hotel['stars'] ?? 4)));
$starsStr = str_repeat('★', $starsCount);
$rating = number_format(floatval($hotel['rating'] ?? 8.5), 1);
$reviewsNum = intval(preg_replace('/[^0-9]/', '', (string)($hotel['reviews'] ?? 150)));
$reviewsFormatted = number_format($reviewsNum);
$price = intval($hotel['price'] ?? 100);
$crossedOutPrice = round($price * 1.28);
$image = htmlspecialchars($hotel['image'] ?? 'https://images.unsplash.com/photo-1537996194471-e657df975ab4?auto=format&fit=crop&w=1200&q=85');
$desc = htmlspecialchars($hotel['desc'] ?? '');
$fullDesc = htmlspecialchars($hotel['fullDesc'] ?? $hotel['desc'] ?? '');
$location = htmlspecialchars($hotel['locationDetail'] ?? "{$area}, Bali, Indonesia");
// Build Verified Canonical URL (Crucial for Google indexing!)
$canonicalUrl = 'https://balihotels.online/hotel.html?hotel=' . urlencode($hotel['slug']);
$seoTitle = "{$title} ({$area}, Bali) — Room Rates, Reviews & Photos | BaliHotels.online";
$seoDesc = "Book {$title} in {$area}, Bali from \${$price}/night. Rated {$rating}/10 ({$reviewsFormatted} reviews). Check live room rates, photos & amenities on BaliHotels.online.";
// Agoda Direct Affiliate Booking URL (100% Direct Property Landing, Never Search)
$agodaCid = '1978171';
$agodaPath = !empty($hotel['agodaPath']) ? $hotel['agodaPath'] : '';
if (!empty($agodaPath)) {
$agodaPath = str_replace('-and-', '-', $agodaPath);
} elseif (!empty($hotel['name'])) {
$n = $hotel['name'];
if (strpos($n, ' - Formerly ') !== false) $n = explode(' - Formerly ', $n)[0];
$n = preg_replace('/\s*\([^)]*\)/', '', $n);
$n = str_replace('&', ' ', $n);
$n = preg_replace('/[\'’"“”]/', '', $n);
$n = strtolower(trim(preg_replace('/[^a-zA-Z0-9]+/', '-', $n), '-'));
if (!empty($n)) $agodaPath = '/' . $n . '/hotel/bali-id.html';
}
if (!empty($agodaPath)) {
$agodaUrl = 'https://www.agoda.com' . $agodaPath . '?cid=' . $agodaCid;
} elseif (!empty($hotel['agodaHotelId'])) {
$agodaUrl = 'https://www.agoda.com/partners/partnersearch.aspx?cid=' . $agodaCid . '&hid=' . $hotel['agodaHotelId'];
} else {
$agodaUrl = 'https://www.agoda.com/partners/partnersearch.aspx?cid=' . $agodaCid . '&city=17193';
}
// Review score text
$reviewWord = 'Very Good';
if ($rating >= 9.2) $reviewWord = 'Exceptional';
elseif ($rating >= 8.8) $reviewWord = 'Excellent';
elseif ($rating >= 8.2) $reviewWord = 'Fabulous';
elseif ($rating >= 7.8) $reviewWord = 'Very Good';
else $reviewWord = 'Good';
// Score breakdown
$cleanScore = number_format(min(9.9, $rating + 0.2), 1);
$locScore = number_format(min(9.9, $rating + 0.1), 1);
$servScore = number_format(min(9.9, $rating + 0.2), 1);
$valScore = number_format(min(9.8, max(7.0, $rating - 0.1)), 1);
// Photos
$photos = isset($hotel['photos']) && is_array($hotel['photos']) ? $hotel['photos'] : [];
$p1 = htmlspecialchars($photos[0] ?? $image);
$p2 = htmlspecialchars($photos[1] ?? $image);
$p3 = htmlspecialchars($photos[2] ?? $image);
$p4 = htmlspecialchars($photos[3] ?? $image);
// Schema.org JSON-LD
$schemaJson = json_encode([
'@context' => 'https://schema.org',
'@graph' => [
[
'@type' => 'Hotel',
'@id' => $canonicalUrl . '#hotel',
'name' => $hotel['name'],
'description' => $hotel['fullDesc'] ?? $hotel['desc'],
'url' => $canonicalUrl,
'image' => [$image, $p1, $p2],
'priceRange' => "\${$price} - \$" . ($price * 2) . " USD",
'starRating' => [
'@type' => 'Rating',
'ratingValue' => (string)$starsCount,
'bestRating' => '5'
],
'aggregateRating' => [
'@type' => 'AggregateRating',
'ratingValue' => (string)$rating,
'bestRating' => '10',
'ratingCount' => (string)max(15, $reviewsNum)
],
'address' => [
'@type' => 'PostalAddress',
'streetAddress' => $location,
'addressLocality' => $hotel['area'],
'addressRegion' => 'Bali',
'addressCountry' => 'ID'
],
'makesOffer' => [
'@type' => 'Offer',
'url' => $canonicalUrl,
'priceCurrency' => 'USD',
'price' => (string)$price,
'availability' => 'https://schema.org/InStock'
]
],
[
'@type' => 'BreadcrumbList',
'itemListElement' => [
['@type' => 'ListItem', 'position' => 1, 'name' => 'Bali Hotels', 'item' => 'https://balihotels.online/'],
['@type' => 'ListItem', 'position' => 2, 'name' => "{$hotel['area']} Hotels", 'item' => 'https://balihotels.online/?area=' . urlencode($hotel['area'])],
['@type' => 'ListItem', 'position' => 3, 'name' => $hotel['name'], 'item' => $canonicalUrl]
]
]
]
], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
?>
Bali Hotels ›
Bali Areas (12) ›
Hotels ›
📸 Verified Photos
About
Located in , this -star property features signature Balinese design, exceptional island service, and instant booking confirmation with flexible cancellation options.
✨
🛡️
Free Cancellation Options
🍳
Daily Breakfast Available
Top Facilities, Amenities & House Policies
✓
✓ Swimming Pool & Sun Loungers
✓ Free High-Speed Wi-Fi
✓ Spa & Wellness Treatments
✓ On-Site Restaurant & Bar
✓ Airport Transfer Service
✓ 24-Hour Front Desk & Security
✓ Air Conditioning & Safe
Deluxe King Room with Balcony
📐 45 sqm • Garden / Pool View
👥 Max Occupancy: 2 Adults + 1 Child
🌐 Free High-Speed Wi-Fi
Benefits Included
✓ Free High-Speed Wi-Fi
✓ Free Cancellation on Select Options
✓ Instant Booking Confirmation
20% OFF
$
$
per room / night
Premier Suite with Private Plunge Pool / Ocean View
📐 85 sqm • Separate Living Area
👥 Max Occupancy: 2 Adults
🌐 Daily Breakfast Included
Benefits Included
✓ Free Daily Buffet Breakfast
✓ Free Cancellation
✓ VIP Check-in & Welcome Drink
SAVE 25%
$
per room / night