This commit is contained in:
2026-04-11 00:37:12 +02:00
parent 65d99059e0
commit 97778c38be
18 changed files with 1204 additions and 229 deletions

View File

@@ -2815,6 +2815,115 @@
"acfe_flexible_category": false,
"acfe_layout_col": "auto",
"acfe_layout_allowed_col": false
},
"layout_680901a1b0001": {
"key": "layout_680901a1b0001",
"name": "collaboration_steps",
"label": "Kroki współpracy",
"display": "block",
"sub_fields": [
{
"key": "field_680901a1b0002",
"label": "Section Heading",
"name": "section_heading",
"aria-label": "",
"type": "text",
"instructions": "Nagłówek sekcji, np. Jak wygląda współpraca?",
"required": 0,
"conditional_logic": 0,
"wrapper": {
"width": "",
"class": "",
"id": ""
},
"default_value": "",
"placeholder": "",
"prepend": "",
"append": "",
"maxlength": "",
"acfe_field_group_condition": 0
},
{
"key": "field_680901a1b0003",
"label": "Steps",
"name": "steps",
"aria-label": "",
"type": "repeater",
"instructions": "Dodaj kroki współpracy (numerowane automatycznie)",
"required": 0,
"conditional_logic": 0,
"wrapper": {
"width": "",
"class": "",
"id": ""
},
"layout": "table",
"pagination": 0,
"min": 0,
"max": 0,
"collapsed": "field_680901a1b0004",
"button_label": "Dodaj krok",
"rows_per_page": 20,
"acfe_field_group_condition": 0,
"sub_fields": [
{
"key": "field_680901a1b0004",
"label": "Step Title",
"name": "step_title",
"aria-label": "",
"type": "text",
"instructions": "",
"required": 0,
"conditional_logic": 0,
"wrapper": {
"width": "",
"class": "",
"id": ""
},
"default_value": "",
"placeholder": "",
"prepend": "",
"append": "",
"maxlength": "",
"acfe_field_group_condition": 0
}
]
},
{
"key": "field_680901a1b0005",
"label": "Bottom Text",
"name": "bottom_text",
"aria-label": "",
"type": "textarea",
"instructions": "Tekst wyświetlany pod krokami",
"required": 0,
"conditional_logic": 0,
"wrapper": {
"width": "",
"class": "",
"id": ""
},
"default_value": "",
"placeholder": "",
"maxlength": "",
"rows": 3,
"new_lines": "",
"acfe_field_group_condition": 0
}
],
"min": "",
"max": "",
"acfe_flexible_render_template": false,
"acfe_flexible_render_style": false,
"acfe_flexible_render_script": false,
"acfe_flexible_thumbnail": false,
"acfe_flexible_settings": false,
"acfe_flexible_settings_size": "medium",
"acfe_layout_locations": [],
"acfe_flexible_modal_edit_size": false,
"acfe_flexible_category": false,
"acfe_layout_col": "auto",
"acfe_layout_allowed_col": false
}
},
"min": "",
@@ -2879,5 +2988,5 @@
"acfe_display_title": "",
"acfe_meta": "",
"acfe_note": "",
"modified": 1700652362
"modified": 1744329600
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,272 @@
<?php
/**
* One-time migration script for page 2707 (Ogrody zimowe - klienci indywidualni)
* Populates ACF Flexible Content fields with hardcoded content.
*
* Usage: Visit /wp-content/themes/ostal_WP/migrate-2707.php?run=migrate-2707
* Or via WP-CLI: wp eval-file wp-content/themes/ostal_WP/migrate-2707.php --run=migrate-2707
*
* ⚠️ DELETE THIS FILE AFTER MIGRATION!
*/
// Bootstrap WordPress
require_once dirname(__FILE__) . '/../../../wp-load.php';
// Safety check: require explicit parameter
if (!isset($_GET['run']) || $_GET['run'] !== 'migrate-2707') {
die('Safety check failed. Use ?run=migrate-2707 to execute.');
}
// Safety check: only admins
if (!current_user_can('manage_options')) {
die('Admin access required. Please log in first.');
}
$page_id = 2707;
// Safety check: don't overwrite existing data
$existing = get_field('sections', $page_id);
if (!empty($existing)) {
die('Page 2707 already has sections data (' . count($existing) . ' layouts). Aborting to prevent overwrite. Delete existing sections first if you want to re-run.');
}
/**
* Helper: find attachment ID by image URL
*/
function get_attachment_id_by_url($url) {
global $wpdb;
$path = parse_url($url, PHP_URL_PATH);
// Remove size suffix (e.g., -1024x576)
$path = preg_replace('/-\d+x\d+(?=\.\w+$)/', '', $path);
$filename = basename($path);
$sql = $wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND guid LIKE %s LIMIT 1",
'%' . $wpdb->esc_like($filename) . '%'
);
return (int) $wpdb->get_var($sql);
}
// Build sections array
$sections = [];
// ── Layout 1: Hero with form ──────────────────────────────────────────
$sections[] = [
'acf_fc_layout' => 'hero_with_form',
'section_id' => 'hero_box',
'heading' => 'Całoroczne ogrody zimowe klasy premium',
'text' => '<p class="hero-text text-white m-0">Projektujemy i realizujemy indywidualne ogrody zimowe, które zwiększają komfort domu i pozwalają korzystać z przestrzeni przez cały rok - niezależnie od pogody.</p>
<p class="hero-text text-white m-0"><strong>Izolowane systemy aluminiowe<br>
Szyby Ug=1,1 lub 0,5<br>
Zintegrowane osłony przeciwsłoneczne</strong></p>
<p class="hero-text text-white m-0">Sprawdź orientacyjny budżet projektu<br>
Porozmawiajmy o twoim ogrodzie zimowym.</p>',
'form_shortcode' => '[contact-form-7 id="21a1143" title="Formularz kontaktowy"]',
'background_image' => '/wp-content/uploads/2023/10/ogrody-zimowe.jpg',
];
// ── Layout 2: Two-col — intro ─────────────────────────────────────────
$sections[] = [
'acf_fc_layout' => 'two_col_section',
'section_heading' => 'Nasze ogrody zimowe powstają z myślą o klientach, którzy szukają trwałego,<br>elastycznego i bezpiecznego rozwiązania na lata, a nie tymczasowej zabudowy.',
'text' => '<p>Każda realizacja jest projektowana indywidualnie - z uwzględnieniem architektury budynku, warunków technicznych i sposobu użytkowania.</p>
<p>Realizacje całorocznych ogrodów zimowych rozpoczynają się od około 100 000 zł netto.</p>',
'image' => 'https://ostal.pl/wp-content/uploads/2026/01/IMG_2832-scaled.jpg',
'choose_heading' => 'h2',
'heading_position' => 'textRight',
'additional_class' => 'imageLeft',
'additional_section_class' => 'bg-light',
'additional_wrapper_class' => '',
'cta' => '',
'cta_text' => '',
];
// ── Layout 3: Two-col — cechy wyróżniające ────────────────────────────
$sections[] = [
'acf_fc_layout' => 'two_col_section',
'section_heading' => 'Co wyróżnia nasze ogrody zimowe',
'text' => '<ul style="list-style: none; padding: 0;">
<li>- Komfort użytkowania przez cały rok.</li>
<li>- Stabilna izolowana termicznie konstrukcja aluminiowa.</li>
<li>- Wysokie parametry cieplne przeszkleń (Ug=1,1 - Ug=0,5)</li>
<li>- Ochrona przed słońcem dzięki zintegrowanym markizom i żaluzjom.</li>
<li>- Estetyka dopasowana do architektury budynku</li>
</ul>
<p>Nie pracujemy na gotowych schematach - każdy ogród zimowy powstaje jako spójny element domu, a nie dobudowany „dodatek".</p>',
'image' => 'https://ostal.pl/wp-content/uploads/2026/01/199-f27gxxl.jpg',
'choose_heading' => 'h2',
'heading_position' => 'textRight',
'additional_class' => '',
'additional_section_class' => 'bg-light',
'additional_wrapper_class' => '',
'cta' => '',
'cta_text' => '',
];
// ── Layout 4: Collaboration steps ─────────────────────────────────────
$sections[] = [
'acf_fc_layout' => 'collaboration_steps',
'section_heading' => 'Jak wygląda współpraca?',
'steps' => [
['step_title' => 'Rozmowa i analiza potrzeb.'],
['step_title' => 'Koncepcja i dobór rozwiązań'],
['step_title' => 'Indywidualna oferta i harmonogram'],
['step_title' => 'Umowa i zaliczka rezerwująca termin'],
['step_title' => 'Produkcja i montaż'],
],
'bottom_text' => 'Prowadzimy klienta przez cały proces - spokojnie krok po kroku.',
];
// ── Layout 5: Two-col — doświadczenie ─────────────────────────────────
$sections[] = [
'acf_fc_layout' => 'two_col_section',
'section_heading' => 'Doświadczenie w systemach aluminiowych',
'text' => '<p>Od wielu lat pracujemy na systemach aluminiowych stosowanych zarówno w budownictwie jednorodzinnym, jak i obiektach komercyjnych.</p>
<p>Realizujemy m.in. stolarkę okienną i drzwiową, żaluzje fasadowe, i rolety zewnętrzne, a ogrody zimowe są naturalnym rozszerzeniem tych rozwiązań w tym samym standardzie technicznym i wykonawczym.</p>',
'image' => '/wp-content/uploads/2026/02/att_698c47679eb9b4.14191582.jpeg',
'choose_heading' => 'h2',
'heading_position' => 'textRight',
'additional_class' => 'imageLeft',
'additional_section_class' => 'bg-light',
'additional_wrapper_class' => '',
'cta' => '',
'cta_text' => '',
];
// ── Layout 6: Two-col — planowanie ────────────────────────────────────
$sections[] = [
'acf_fc_layout' => 'two_col_section',
'section_heading' => 'Planowanie realizacji bez pośpiechu',
'text' => '<p>Wielu naszych klientów decyduje się na zaplanowanie ogrodu zimowego z wyprzedzeniem.<br>
Pozwala to spokojnie przygotować projekt i zarezerwować dogodny termin realizacji na wiosnę lub lato.</p>',
'image' => '/wp-content/uploads/2026/02/att_698c4767a04c46.41417006.jpg',
'choose_heading' => 'h2',
'heading_position' => 'textRight',
'additional_class' => 'imageLeft',
'additional_section_class' => 'bg-light',
'additional_wrapper_class' => '',
'cta' => '',
'cta_text' => '',
];
// ── Layout 7: Two-col — kontakt ───────────────────────────────────────
$sections[] = [
'acf_fc_layout' => 'two_col_section',
'section_heading' => 'Porozmawiajmy o twoim projekcie',
'text' => '<p>Jeśli rozważasz budowę całorocznego ogrodu zimowego i chcesz sprawdzić, czy to rozwiązanie ma sens w Twoim przypadku - zapraszamy do kontaktu.</p>',
'image' => '/wp-content/uploads/2026/02/att_698c47679ad0a0.33546122.jpeg',
'choose_heading' => 'h2',
'heading_position' => 'textRight',
'additional_class' => 'imageLeft',
'additional_section_class' => 'bg-light',
'additional_wrapper_class' => '',
'cta' => '',
'cta_text' => '',
];
// ── Layout 8: Two-col with BG — CTA ──────────────────────────────────
$sections[] = [
'acf_fc_layout' => 'two_col_section_with_bg',
'section_heading' => 'Sprawdź orientacyjny budżet projektu',
'text' => '',
'cta' => '#hero_box',
'cta_text' => 'Umów rozmowę',
'background_image' => 'https://ostal.pl/wp-content/uploads/2021/05/hero-about.jpg',
'image' => '',
'heading_position' => '',
'additional_class' => '',
'additional_section_class' => 'bg-dark',
'additional_wrapper_class' => '',
];
// ── Layout 9: Two-col — funkcje ogrodów ───────────────────────────────
$sections[] = [
'acf_fc_layout' => 'two_col_section',
'section_heading' => 'Funkcje ogrodów zimowych',
'text' => '<p>Nowoczesny ogród zimowy to&nbsp;nie&nbsp;tylko&nbsp;dodatkowe pomieszczenie wypoczynkowe pokój zimowy, w&nbsp;którym&nbsp;możesz przyjmować gości lub relaksować się po&nbsp;ciężkim dniu w&nbsp;otoczeniu ulubionych roślin. Przez&nbsp;cały rok i&nbsp;w&nbsp;każdą pogodę. Konstrukcja jaką posiada nowoczesny ogród zimowy:<br>
stanowi efektowne dopełnienie bryły domu, nadając mu&nbsp;nowoczesnego charakteru,<br>
chroni przed&nbsp;hałasem, który&nbsp;dochodzi z&nbsp;zewnątrz,<br>
ze&nbsp;względu na&nbsp;szczelność utrzymuje ciepło i&nbsp;pomaga obniżyć bilans energetyczny domu.</p>',
'image' => 'https://ostal.pl/wp-content/uploads/2023/10/DECORATION-PHOTO-1.jpg',
'choose_heading' => 'h2',
'heading_position' => 'textRight',
'additional_class' => 'imageLeft',
'additional_section_class' => 'bg-light',
'additional_wrapper_class' => '',
'cta' => '',
'cta_text' => '',
];
// ── Layout 10: Gallery ────────────────────────────────────────────────
$gallery_urls = [
'https://ostal.pl/wp-content/uploads/2023/10/202-4c7gxxl.jpg',
'https://ostal.pl/wp-content/uploads/2023/10/199-f27gxxl.jpg',
'https://ostal.pl/wp-content/uploads/2023/10/20170608_142315-1024x576.jpg',
'https://ostal.pl/wp-content/uploads/2023/10/IMG_0535-1-1024x768.jpg',
'https://ostal.pl/wp-content/uploads/2023/10/IMG_3754-1-1-1024x768.jpg',
'https://ostal.pl/wp-content/uploads/2023/10/Frame-36-1-1024x728.jpg',
];
$gallery_ids = [];
$gallery_warnings = [];
foreach ($gallery_urls as $url) {
$id = get_attachment_id_by_url($url);
if ($id > 0) {
$gallery_ids[] = $id;
} else {
$gallery_warnings[] = "Warning: Could not find attachment for: $url";
}
}
$sections[] = [
'acf_fc_layout' => 'gallery',
'section_id' => 'galeria',
'section_heading' => 'Nasze realizacje ogrodów zimowych',
'gallery' => $gallery_ids,
'additional_class' => '',
'additional_section_class' => '',
'additional_wrapper_class' => '',
];
// ── Execute migration ─────────────────────────────────────────────────
$result = update_field('sections', $sections, $page_id);
if ($result) {
echo "<h1 style='color: green;'>Migration successful!</h1>";
echo "<p>Created " . count($sections) . " layouts for page $page_id.</p>";
echo "<ul>";
echo "<li>1. hero_with_form</li>";
echo "<li>2. two_col_section (intro)</li>";
echo "<li>3. two_col_section (cechy)</li>";
echo "<li>4. collaboration_steps (5 kroków)</li>";
echo "<li>5. two_col_section (doświadczenie)</li>";
echo "<li>6. two_col_section (planowanie)</li>";
echo "<li>7. two_col_section (kontakt)</li>";
echo "<li>8. two_col_section_with_bg (CTA)</li>";
echo "<li>9. two_col_section (funkcje)</li>";
echo "<li>10. gallery (" . count($gallery_ids) . " images)</li>";
echo "</ul>";
if (!empty($gallery_warnings)) {
echo "<h3 style='color: orange;'>Gallery warnings:</h3>";
echo "<ul>";
foreach ($gallery_warnings as $w) {
echo "<li>$w</li>";
}
echo "</ul>";
echo "<p>Missing gallery images need to be added manually in WP admin.</p>";
}
echo "<hr>";
echo "<h2 style='color: red;'>⚠️ DELETE THIS FILE NOW!</h2>";
echo "<p>File location: " . __FILE__ . "</p>";
echo "<p><a href='/wp-admin/post.php?post=$page_id&action=edit'>Edit page $page_id in admin</a></p>";
echo "<p><a href='/?page_id=$page_id'>Preview page $page_id</a></p>";
} else {
echo "<h1 style='color: red;'>Migration failed!</h1>";
echo "<p>update_field() returned false. Check that:</p>";
echo "<ul>";
echo "<li>ACF Pro is active</li>";
echo "<li>The 'sections' field group exists and is assigned to page $page_id</li>";
echo "<li>The field group contains all required layouts (hero_with_form, two_col_section, two_col_section_with_bg, collaboration_steps, gallery)</li>";
echo "</ul>";
}

View File

@@ -1,225 +1,3 @@
<?php get_header(); ?>
<?php
$collaboration = [
"Rozmowa i analiza potrzeb.",
"Koncepcja i dobór rozwiązań",
"Indywidualna oferta i harmonogram",
"Umowa i zaliczka rezerwująca termin",
"Produkcja i montaż"
];
?>
<section id="hero_box" class="hero-with-form">
<div class="hero-wrapper wrapper--inner" style="background: url('/wp-content/uploads/2023/10/ogrody-zimowe.jpg');">
<span class="bg-filter"></span>
<div class="hero-content">
<h1 class="hero-heading heading--xl text-white">
Całoroczne ogrody zimowe klasy premium
</h1>
<p class="hero-text text-white m-0">
Projektujemy i realizujemy indywidualne ogrody zimowe, które zwiększają komfort domu i pozwalają korzystać z przestrzeni przez cały rok - niezależnie od pogody.
</p>
<p class="hero-text text-white m-0">
<strong>
Izolowane systemy aluminiowe<br>
Szyby Ug=1,1 lub 0,5<br>
Zintegrowane osłony przeciwsłoneczne
</strong>
</p>
<p class="hero-text text-white m-0">
Sprawdź orientacyjny budżet projektu<br>
Porozmawiajmy o twoim ogrodzie zimowym.
</p>
</div>
<div class="hero-form">
<?php echo do_shortcode('[contact-form-7 id="21a1143" title="Formularz kontaktowy"]'); ?>
</div>
</div>
</section>
<section class="two-cols bg-light">
<div class="wrapper wrapper--inner imageLeft">
<div class="col col-text">
<h2 class="section-heading heading heading--md textRight">
Nasze ogrody zimowe powstają z myślą o klientach, którzy szukają trwałego,<br>
elastycznego i bezpiecznego rozwiązania na lata, a nie tymczasowej zabudowy.
</h2>
<div class="col-text-content">
<p>Każda realizacja jest projektowana indywidualnie - z uwzględnieniem architektury budynku, warunków technicznych i sposobu użytkowania.</p>
<p>Realizacje całorocznych ogrodów zimowych rozpoczynają się od około 100 000 zł netto.</p>
</div>
</div>
<div class="col col-image">
<div class="image-wrapper">
<img src="https://ostal.pl/wp-content/uploads/2026/01/IMG_2832-scaled.jpg" alt="" class="img-auto section-image">
</div>
</div>
</div>
</section>
<section class="two-cols bg-light">
<div class="wrapper wrapper--inner imageLeft">
<div class="col col-image">
<div class="image-wrapper">
<img src="https://ostal.pl/wp-content/uploads/2026/01/199-f27gxxl.jpg" alt="" class="img-auto section-image">
</div>
</div>
<div class="col col-text">
<h2 class="section-heading heading heading--md textRight">Co wyróżnia nasze ogrody zimowe</h2>
<div class="col-text-content">
<ul style="list-style: none; padding: 0;">
<li>- Komfort użytkowania przez cały rok.</li>
<li>- Stabilna izolowana termicznie konstrukcja aluminiowa.</li>
<li>- Wysokie parametry cieplne przeszkleń (Ug=1,1 - Ug=0,5)</li>
<li>- Ochrona przed słońcem dzięki zintegrowanym markizom i żaluzjom.</li>
<li>- Estetyka dopasowana do architektury budynku</li>
</ul>
<p>Nie pracujemy na gotowych schematach - każdy ogród zimowy powstaje jako spójny element domu, a nie dobudowany „dodatek”.</p>
</div>
</div>
</div>
</section>
<section id="collaboration" class="section-boxes-repeater">
<div class="wrapper wrapper--inner">
<h2 class="section-heading heading--md">Jak wygląda współpraca?</h2>
<div class="collaboration-steps" style="max-width: 900px; margin: 0 auto; padding: 20px 0;">
<?php foreach ($collaboration as $index => $item) : ?>
<div class="collaboration-step" style="display: flex; align-items: flex-start; gap: 20px; margin-bottom: <?= ($index < count($collaboration) - 1) ? '40px' : '0' ?>; position: relative;">
<!-- Numer kroku -->
<div class="step-number" style="flex-shrink: 0; width: 60px; height: 60px; background: linear-gradient(135deg, #88b14b 0%, #6a8f3a 100%); color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 24px; font-weight: 700; box-shadow: 0 4px 8px rgba(136, 177, 75, 0.3); position: relative; z-index: 2;">
<?= $index + 1 ?>
</div>
<!-- Linia łącząca (dla wszystkich oprócz ostatniego) -->
<?php if ($index < count($collaboration) - 1) : ?>
<div class="step-connector" style="position: absolute; left: 30px; top: 60px; width: 2px; height: 40px; background: linear-gradient(to bottom, #88b14b, #e0e0e0); z-index: 1;"></div>
<?php endif; ?>
<!-- Treść kroku -->
<div class="step-content" style="flex: 1; background-color: #f8f9fa; padding: 20px 25px; border-radius: 8px; border-left: 4px solid #88b14b; box-shadow: 0 2px 4px rgba(0,0,0,0.05); transition: all 0.3s ease;">
<h3 class="step-title" style="margin: 0; font-size: 18px; font-weight: 600; color: #333; line-height: 1.4;">
<?= $item; ?>
</h3>
</div>
</div>
<?php endforeach; ?>
</div>
<div class="col-text-content mt-4 text-center">
<p>Prowadzimy klienta przez cały proces - spokojnie krok po kroku.</p>
</div>
</div>
</section>
<section class="two-cols bg-light">
<div class="wrapper wrapper--inner imageLeft">
<div class="col col-text">
<h2 class="section-heading heading heading--md textRight">
Doświadczenie w systemach aluminiowych
</h2>
<div class="col-text-content">
<p>Od wielu lat pracujemy na systemach aluminiowych stosowanych zarówno w budownictwie jednorodzinnym, jak i obiektach komercyjnych.</p>
<p>Realizujemy m.in. stolarkę okienną i drzwiową, żaluzje fasadowe, i rolety zewnętrzne, a ogrody zimowe są naturalnym rozszerzeniem tych rozwiązań w tym samym standardzie technicznym i wykonawczym.</p>
</div>
</div>
<div class="col col-image">
<div class="image-wrapper">
<img src="/wp-content/uploads/2026/02/att_698c47679eb9b4.14191582.jpeg" alt="" class="img-auto section-image">
</div>
</div>
</div>
</section>
<section class="two-cols bg-light">
<div class="wrapper wrapper--inner imageLeft">
<div class="col col-image">
<div class="image-wrapper">
<img src="/wp-content/uploads/2026/02/att_698c4767a04c46.41417006.jpg" alt="" class="img-auto section-image">
</div>
</div>
<div class="col col-text">
<h2 class="section-heading heading heading--md textRight">Planowanie realizacji bez pośpiechu</h2>
<div class="col-text-content">
<p>
Wielu naszych klientów decyduje się na zaplanowanie ogrodu zimowego z wyprzedzeniem.<br>
Pozwala to spokojnie przygotować projekt i zarezerwować dogodny termin realizacji na wiosnę lub lato.
</p>
</div>
</div>
</div>
</section>
<section class="two-cols bg-light">
<div class="wrapper wrapper--inner imageLeft">
<div class="col col-text">
<h2 class="section-heading heading heading--md textRight">
Porozmawiajmy o twoim projekcie
</h2>
<div class="col-text-content">
<p>Jeśli rozważasz budowę całorocznego ogrodu zimowego i chcesz sprawdzić, czy to rozwiązanie ma sens w Twoim przypadku - zapraszamy do kontaktu.</p>
</div>
</div>
<div class="col col-image">
<div class="image-wrapper">
<img src="/wp-content/uploads/2026/02/att_698c47679ad0a0.33546122.jpeg" alt="" class="img-auto section-image">
</div>
</div>
</div>
</section>
<section id="garden-page-seo" class="two-cols-with-bg bg-dark" style="background-image: url('https://ostal.pl/wp-content/uploads/2021/05/hero-about.jpg');">
<span class="bg-filter"></span>
<div class="wrapper wrapper--inner">
<h2>Sprawdź orientacyjny budżet projektu</h2>
<a href="#hero_box" class="btn btn-primary">Umów rozmowę</a>
</div>
</section>
<section class="two-cols bg-light">
<div class="wrapper wrapper--inner imageLeft">
<div class="col col-image">
<div class="image-wrapper">
<img src="https://ostal.pl/wp-content/uploads/2023/10/DECORATION-PHOTO-1.jpg" alt="" class="img-auto section-image">
</div>
</div>
<div class="col col-text">
<h2 class="section-heading heading heading--md textRight">Funkcje ogrodów zimowych</h2>
<div class="col-text-content">
<p>Nowoczesny ogród zimowy to&nbsp;nie&nbsp;tylko&nbsp;dodatkowe pomieszczenie wypoczynkowe pokój zimowy, w&nbsp;którym&nbsp;możesz przyjmować gości lub relaksować się po&nbsp;ciężkim dniu w&nbsp;otoczeniu ulubionych roślin. Przez&nbsp;cały rok i&nbsp;w&nbsp;każdą pogodę. Konstrukcja jaką posiada nowoczesny ogród zimowy:<br>
stanowi efektowne dopełnienie bryły domu, nadając mu&nbsp;nowoczesnego charakteru,<br>
chroni przed&nbsp;hałasem, który&nbsp;dochodzi z&nbsp;zewnątrz,<br>
ze&nbsp;względu na&nbsp;szczelność utrzymuje ciepło i&nbsp;pomaga obniżyć bilans energetyczny domu.</p>
</div>
</div>
</div>
</section>
<section id="galeria" class="section-gallery ">
<div class="wrapper wrapper--inner ">
<h2 class="section-heading heading--md text-center">
Nasze realizacje ogrodów zimowych </h2>
<ul id="gallery-lightbox" class="gallery">
<li class="gallery-image">
<img src="https://ostal.pl/wp-content/uploads/2023/10/202-4c7gxxl.jpg" alt="">
</li>
<li class="gallery-image">
<img src="https://ostal.pl/wp-content/uploads/2023/10/199-f27gxxl.jpg" alt="">
</li>
<li class="gallery-image">
<img src="https://ostal.pl/wp-content/uploads/2023/10/20170608_142315-1024x576.jpg" alt="">
</li>
<li class="gallery-image">
<img src="https://ostal.pl/wp-content/uploads/2023/10/IMG_0535-1-1024x768.jpg" alt="">
</li>
<li class="gallery-image">
<img src="https://ostal.pl/wp-content/uploads/2023/10/IMG_3754-1-1-1024x768.jpg" alt="">
</li>
<li class="gallery-image">
<img src="https://ostal.pl/wp-content/uploads/2023/10/Frame-36-1-1024x728.jpg" alt="">
</li>
</ul>
<div id="lightbox" class="lightbox"></div>
</div>
</section>
<?php get_footer(); ?>
<?php include( locate_template( 'sections.php' ) ); ?>
<?php get_footer(); ?>

View File

@@ -24,5 +24,14 @@
<?php if (get_row_layout() == 'faq') : ?>
<?php get_template_part('template-parts/sections/section-faq', 'faq'); ?>
<?php endif; ?>
<?php if (get_row_layout() == 'hero_with_form') : ?>
<?php get_template_part('template-parts/sections/section-hero-with-form', 'hero_with_form'); ?>
<?php endif; ?>
<?php if (get_row_layout() == 'gallery') : ?>
<?php get_template_part('template-parts/sections/section-gallery', 'gallery'); ?>
<?php endif; ?>
<?php if (get_row_layout() == 'collaboration_steps') : ?>
<?php get_template_part('template-parts/sections/section-collaboration-steps', 'collaboration_steps'); ?>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>

View File

@@ -0,0 +1,74 @@
<?php
$steps = get_sub_field('steps');
$total = is_array($steps) ? count($steps) : 0;
?>
<section id="collaboration" class="section-boxes-repeater">
<div class="wrapper wrapper--inner">
<h2 class="section-heading heading--md"><?php the_sub_field('section_heading'); ?></h2>
<?php if ($total > 0) : ?>
<div class="collaboration-steps" style="max-width: 900px; margin: 0 auto; padding: 20px 0;">
<?php $index = 0; ?>
<?php while (have_rows('steps')) : the_row(); ?>
<div class="collaboration-step" style="display: flex; align-items: flex-start; gap: 20px; margin-bottom: <?= ($index < $total - 1) ? '40px' : '0' ?>; position: relative;">
<div class="step-number" style="flex-shrink: 0; width: 60px; height: 60px; background: linear-gradient(135deg, #88b14b 0%, #6a8f3a 100%); color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 24px; font-weight: 700; box-shadow: 0 4px 8px rgba(136, 177, 75, 0.3); position: relative; z-index: 2;">
<?= $index + 1 ?>
</div>
<?php if ($index < $total - 1) : ?>
<div class="step-connector" style="position: absolute; left: 30px; top: 60px; width: 2px; height: 40px; background: linear-gradient(to bottom, #88b14b, #e0e0e0); z-index: 1;"></div>
<?php endif; ?>
<div class="step-content" style="flex: 1; background-color: #f8f9fa; padding: 20px 25px; border-radius: 8px; border-left: 4px solid #88b14b; box-shadow: 0 2px 4px rgba(0,0,0,0.05); transition: all 0.3s ease;">
<h3 class="step-title" style="margin: 0; font-size: 18px; font-weight: 600; color: #333; line-height: 1.4;">
<?php the_sub_field('step_title'); ?>
</h3>
</div>
</div>
<?php $index++; ?>
<?php endwhile; ?>
</div>
<?php endif; ?>
<?php if (get_sub_field('bottom_text')) : ?>
<div class="col-text-content mt-4 text-center">
<p><?php the_sub_field('bottom_text'); ?></p>
</div>
<?php endif; ?>
</div>
</section>
<style>
.collaboration-step:hover .step-content {
transform: translateX(5px);
box-shadow: 0 4px 12px rgba(136, 177, 75, 0.15);
}
.collaboration-step:hover .step-number {
transform: scale(1.1);
}
@media (max-width: 768px) {
.collaboration-step {
gap: 15px !important;
}
.step-number {
width: 50px !important;
height: 50px !important;
font-size: 20px !important;
}
.step-connector {
left: 25px !important;
top: 50px !important;
}
.step-content {
padding: 15px 20px !important;
}
.step-title {
font-size: 16px !important;
}
}
</style>

View File

@@ -10,9 +10,9 @@
<h1 class="hero-heading heading--xl text-white">
<?php the_sub_field('heading'); ?>
</h1>
<p class="hero-text text-white">
<div class="hero-text text-white">
<?php the_sub_field('text'); ?>
</p>
</div>
</div>
<div class="hero-form">
<?php echo do_shortcode($form_shortcode); ?>