17. Flexibler Inhalt | Field Forge - Benutzerdefinierte Felder, gebaut für Geschwindigkeit
Herunterladen Anmelden

17. Flexibler Inhalt

Flexible Inhaltsfelder ermöglichen es Redakteuren, aus vordefinierten Layouts zu wählen, um dynamische Seiten zu erstellen. Jedes Layout hat seinen eigenen Satz von Sub-Feldern. Erfordert PRO-Lizenz.

Grundlegendes Layout-Wechseln

php
<?php if ( have_rows( 'page_sections' ) ) : ?>
    <?php while ( have_rows( 'page_sections' ) ) : the_row(); ?>
        <?php if ( get_row_layout() === 'hero' ) : ?>
            <section class="section-hero">
                <h1><?php the_sub_field( 'heading' ); ?></h1>
                <p><?php the_sub_field( 'subheading' ); ?></p>
            </section>
        <?php elseif ( get_row_layout() === 'text_block' ) : ?>
            <section class="section-text">
                <?php the_sub_field( 'content' ); ?>
            </section>
        <?php elseif ( get_row_layout() === 'image_gallery' ) : ?>
            <section class="section-gallery">
                <?php $images = get_sub_field( 'images' ); ?>
                <?php if ( $images ) : ?>
                    <div class="gallery-grid">
                        <?php foreach ( $images as $img ) : ?>
                            <img src="<?php echo esc_url( $img['url'] ); ?>" alt="<?php echo esc_attr( $img['alt'] ); ?>">
                        <?php endforeach; ?>
                    </div>
                <?php endif; ?>
            </section>
        <?php endif; ?>
    <?php endwhile; ?>
<?php endif; ?>

Template-Teil-Muster

Ein sauberer Ansatz unter Verwendung von get_template_part():

php
<?php
// page-builder.php
if ( have_rows( 'sections' ) ) :
    while ( have_rows( 'sections' ) ) : the_row();
        $layout = get_row_layout();
        get_template_part( 'template-parts/sections/' . str_replace( '_', '-', $layout ) );
    endwhile;
endif;
?>

Jede Abschnitts-Template-Datei greift direkt auf Sub-Felder zu:

php
<?php
// template-parts/sections/hero.php
$heading = get_sub_field( 'heading' );
$image   = get_sub_field( 'background_image' );
?>
<section class="hero" <?php if ( $image ) : ?>style="background-image: url(<?php echo esc_url( $image['url'] ); ?>);"<?php endif; ?>>
    <h1><?php echo esc_html( $heading ); ?></h1>
    <p><?php the_sub_field( 'subheading' ); ?></p>
</section>

Programmatische Erstellung von flexiblem Inhalt

php
$sections = [
    [
        'acf_fc_layout' => 'hero',
        'heading'        => 'Welcome to Our Site',
        'subheading'     => 'We build amazing things.',
        'cta_text'       => 'Learn More',
        'cta_link'       => '/about',
    ],
    [
        'acf_fc_layout' => 'text_block',
        'content'        => '<p>Our story begins with a simple idea...</p>',
    ],
];

$field_def = FIELDFORGE_Field_Groups::instance()->find_field( 'page_builder', $post_id );
FIELDFORGE_Field_Values::instance()->save_compound_field(
    'page_builder',
    $sections,
    $post_id,
    $field_def
);

Forge KI-Assistent Online

Hallo! Ich bin der Field Forge KI-Assistent. Fragen Sie mich alles über das Plugin — Einrichtung, Funktionen, Fehlerbehebung oder Entwicklung.

Gerade eben
Unterstützt von Forge KI · Dokumentation durchsuchen