WebsiteBaker Logo
  • *
  • Templates
  • Help
  • Add-ons
  • Download
  • Home
*
Welcome, Guest. Please login or register.

Login with username, password and session length
 

News


WebsiteBaker 2.13.9 R25 is now available!


R.I.P Dietmar (luisehahne) and thank you for all your valuable work for WB
https://forum.websitebaker.org/index.php/topic,32355.0.html


* Support WebsiteBaker

Your donations will help to:

  • Pay for our dedicated server
  • Pay for domain registration
  • and much more!

You can donate by clicking on the button below.


  • Home
  • Help
  • Search
  • Login
  • Register

  • WebsiteBaker Community Forum »
  • WebsiteBaker Support (2.13.x) »
  • General Help & Support »
  • Content-Blöcke, eine kleine Herausforderung
  • Print
Pages: [1]   Go Down

Author Topic: Content-Blöcke, eine kleine Herausforderung  (Read 139 times)

Offline kuerbis42

  • Posts: 16
Content-Blöcke, eine kleine Herausforderung
« on: February 26, 2026, 04:02:33 PM »
Hallöchen zusammen,

ich habe gehofft, das mir die Blöcke bei folgender Idee (Grid-Layout) helfen:
gewollt ist also das hier:
Code: [Select]
+-----------------------------+
|    (1) 2-spalten Block      |
+-----------------------------+
| (2) Block 2  | (3) Block 3  |
+-----------------------------+
| (4)     2-spalten Block     |
+-----------------------------+
|  (5) Block 2 | (6)  Block 3 |
+-----------------------------+
In den Abschnitten der Seite ist alles wie gewohnt definiert, die Reihenfolge soll das Layout beeinflussen:
Abschnitt 1: Art: Wysiwyg, Block '2spalten'
Abschnitt 2: Art: Wysiwyg, Block 'linkerB'
Abschnitt 3: Art: Wysiwyg, Block 'rechterB'
Abschnitt 4: Art: Wysiwyg, Block '2spalten'
Abschnitt 5: Art: Wysiwyg, Block 'linkerB'
Abschnitt 6: Art: Wysiwyg, Block 'rechterB'


heraus kommt aber das hier:

Code: [Select]
+-----------------------------+
|    (1) 2-spalten Block      |
|    (4) 2-spalten Block      |
+-----------------------------+
| (2) Block 2  | (3) Block 3  |
| (5) Block 2  | (6)  Block 3 |
+-----------------------------+

So wie es aussieht wird bei
page_content(x) alles "zusammengefasst", was in den Block 1 gehört, entsprechend Block 2 und 3
es kommt also nicht - wie gehofft - nach einander der Reihenfolge der Abschnitte entsprechend.
Richtig?

Hat da jmd. eine Idee zu?

Danke, Gruß
Frank
Logged

Offline jacobi22

  • Betatester
  • **
  • Posts: 5959
Re: Content-Blöcke, eine kleine Herausforderung
« Reply #1 on: February 26, 2026, 04:30:50 PM »
doch, das geht (hervorragend) mit den Blöcken - bis 99 sind möglich

mal aus einem Template kopiert

in der info.php die Blöcke festlegen, z.b. so

Code: [Select]
// Definition of content blocks
$block[1]            ='MainContent';
$block[2]            ='Right Block';
$block[3]            ='Teaser';
$block[4]            ='Anynews';
$block[5]            ='Contactbox Left';
$block[6]            ='Contactbox Right';
$block[7]            ='Bottom Block';
$block[8]            ='In-Footer Block';

im Anschluß nach Speichern das Template neu einlesen lassen unter Erweiterungen -> Erweitert -> alles aktivieren und neu laden

dann in der index.php des jeweiligen Templates

oben im PHP-Teil alle Blöcke in die jeweiligen Buffer packen
Code: [Select]
ob_start();  //fetch MainContent
page_content(1);
$page_MainContent = ob_get_clean();
ob_start();  //fetch original main content
page_content(2);
$page_RightBlock = ob_get_clean();
ob_start();  //fetch original right sidebar content
page_content(3);
$page_Teaser = ob_get_clean();
ob_start();  //fetch original right sidebar content
page_content(4);
$page_AnyNews = ob_get_clean();
ob_start();  //fetch original right sidebar content
page_content(5);
$contact_leftBlock = ob_get_clean();
ob_start();  //fetch original right sidebar content
page_content(6);
$contact_rightBlock = ob_get_clean();
ob_start();  //fetch original right sidebar content
page_content(7);
$page_BottomBlock = ob_get_clean();
ob_start();  //fetch original right sidebar content
page_content(8);
$page_InFooterBlock = ob_get_clean();

und zuletzt dann im Templatecode diese definierten Alias an die richtige Stelle einfügen

Das Beispiel zwei Spalten bei Vorhandensein von Content im Block 2 -== $page_RightBlock. Ist kein Content in Block2, dann nur eine Spalte
Quote
<!--  Main Content   -->
    <?php if(trim($page_RightBlock)!=''){ ?>
    <div class="w3-container w3-content w3-center w3-padding-8" id="content1" style="max-width:960px;">
        <div class="w3-container w3-content w3-left-align w3-padding-0 w3-col m8 l8" id="content2" style="max-width:1190px;">
            <?php echo $page_MainContent; ?>
        </div>
        <div class="w3-container w3-block w3-left-align w3-row-padding w3-col m4 l4">
            <?php echo $page_RightBlock; ?>
        </div>
    </div>   
    <?php
        }else{
    ?>
    <div class="w3-container w3-content w3-center w3-padding-8" id="content1" style="max-width:960px;">
        <div class="w3-container w3-block w3-left-align w3-row-padding">
            <?php echo $page_MainContent; ?>
        </div>
    </div>   
    <?php
    }
    ?>

anderes Beispiel - erscheint nur, wenn auch Inhalt im Block vorhanden ist - im Beispiel dann der Block 4 == $page_AnyNews

Quote
<!--  Anynews block  -->
    <?php if(trim($page_AnyNews)!=''){ ?>
        <!-- anynewscontent  -->
        <div class="w3-container w3-content w3-center w3-padding-0" id="content4" style="max-width:960px;">
            <div class="w3-container w3-block w3-left w3-row-padding">
                <?php echo $page_AnyNews; ?>
            </div>
        </div>
    <?php
        }
    ?>

Hinweis... ein Block, der nicht zugeordnet wurde, gehört immer zu Block 1, also immer in der Sectionverwaltung der Seiten kontrollieren

empfohlen wird auf jeden Fall die Abfrage, ob der jeweilige Block auch nicht leer ist
so
Quote
<?php if(trim($page_AnyNews)!=''){ ?>....

bzw so für zwei Spalten
Quote
<?php if(trim($contact_leftBlock)!='' || trim($contact_rightBlock)!='' ){ ?>....
« Last Edit: February 26, 2026, 04:37:27 PM by jacobi22 »
Logged

Offline kuerbis42

  • Posts: 16
Re: Content-Blöcke, eine kleine Herausforderung
« Reply #2 on: February 26, 2026, 07:20:05 PM »
@Jacobi22:
vielen Dank für Deine ausführlichen Ausführungen.
Ja, ich gebe Dir recht, wenn man mit ganz vielen Blöcken arbeitet, dann geht das easy - ABER (leider gibt es ein aber)

Alles ist dynamisch - d.h., ich weiß doch jetzt noch nicht, wie das später gefüllt wird. Was meine ich:
naja, die Abschnitte können ja frei gewählt werden, also eine Seite mit der Reihenfolge
Code: [Select]
2-spalt,
Block L, Block R,
Block L, Block R,
2-Spalt,
2-Spalt,
Block L, Block R

Die nächste Seite sieht dann so aus:
Code: [Select]
Block L, Block R,
Block L, Block R,
Block L, Block R
2-spalt

Es soll ja eben möglichst felxibel sein.

Siehst Du (oder jmd. anderes), die Contentblöcke sozusagen "einzeln" abzufragen - das würde ja helfen, dann könnte man locker mit PHP eine Schleife bauen.


Trotzdem Danke für die Anregung
Logged

Offline dbs

  • Betatester
  • **
  • Posts: 8948
  • Gender: Male
  • tioz4ever
    • WebsiteBaker - jQuery-Plugins - Module - Droplets - Tests
Re: Content-Blöcke, eine kleine Herausforderung
« Reply #3 on: February 26, 2026, 08:56:45 PM »
Habs ähnlich. Oben in der index
Code: [Select]
ob_start(); page_content(1); $main       = ob_get_clean();
ob_start(); page_content(2); $right      = ob_get_clean();
ob_start(); page_content(3); $left       = ob_get_clean();
ob_start(); page_content(4); $fulltop    = ob_get_clean();
ob_start(); page_content(5); $fullbottom = ob_get_clean();
ob_start(); page_content(6); $fullwidth = ob_get_clean();

und unten flexibel
Code: [Select]
<?php // Top
    
if ($fulltop) { ?>

            <div id="top" class="bg-1 text-center"><?php echo $fulltop; ?></div>
    <?php }    ?>
   
    <div class="container">

        <div class="row">
           
            <?php if ($right && $main && $left) { ?>
                <div id="left" class="col-md-3"><?php echo $left ?></div>
                <div id="main" class="col-md-6"><?php echo $main ?></div>
                <div id="right" class="col-md-3"><?php echo $right ?></div>
            <?php } elseif ($right && $main) { ?>
                <div id="main" class="col-md-9"><?php echo $main ?></div>
                <div id="right" class="col-md-3"><?php echo $right ?></div>
            <?php } elseif ($left && $main) { ?>
                <div id="left" class="col-md-3"><?php echo $left ?></div>
                <div id="main" class="col-md-9"><?php echo $main ?></div>
            <?php } elseif ($main) { ?>
                <div id="main" class="col-sm-12"><?php echo $main ?></div>
            <?php } ?>
            <div style="clear:both;"></div>
           
       
            <?php // Bottom
                
if ($fullbottom) { ?>
<div id="bottom" class="col-md-12"><?php echo $fullbottom; ?></div>
            <?php } ?>
           
        </div>

    </div>

Da sind zwar Klassen von Bootstrap drin, aber das Prinzip sollte klar sein.

edit: hier die original Anleitung von Ruud: https://wbhelp.org/tips-and-tricks/2014/multiple-columns-in-a-template/
« Last Edit: February 26, 2026, 10:35:54 PM by dbs »
Logged
https://onkel-franky.de

Offline jacobi22

  • Betatester
  • **
  • Posts: 5959
Re: Content-Blöcke, eine kleine Herausforderung
« Reply #4 on: February 27, 2026, 01:26:13 AM »
Quote from: kuerbis42 on February 26, 2026, 07:20:05 PM
@Jacobi22:

Alles ist dynamisch - d.h., ich weiß doch jetzt noch nicht, wie das später gefüllt wird. Was meine ich:
naja, die Abschnitte können ja frei gewählt werden, also eine Seite mit der Reihenfolge
....

Siehst Du (oder jmd. anderes), die Contentblöcke sozusagen "einzeln" abzufragen - das würde ja helfen, dann könnte man locker mit PHP eine Schleife bauen.


genau das machen wir doch, dbs und ich
Für jeden definierten Block brauchst du eine Abfrage, ob Inhalt enthalten ist, bei mir mit
Code: [Select]
if(trim($page_RightBlock)!=''trim entfernt mögliche Leerzeichen, der Rest (!='') heißt: ist nicht leer. Diese Abfragen kann man dann auch kombinieren, wenn Block L und Block R Inhalte haben, mach zwei Spalten, hat nur einer davon Inhalt, mach nur eine Spalte usw.

Wichtig ist aber Ordnung dabei in der Sectionverwaltung. Was wie wo angezeigt wird, bestimmst du allein. Es spielt auch keine Rolle, ob Seite 1 nur einen Block hat und Seite 2 dann drei oder fünf oder ob du Blöcke mehrfach verwendest pro Seite

Logged

Offline kuerbis42

  • Posts: 16
Re: Content-Blöcke, eine kleine Herausforderung
« Reply #5 on: February 27, 2026, 06:43:12 PM »
Ich will da erstmal antworten, aber ich prüfe das noch.
Was mir aufgefallen ist, ist folgendes:
Ich mache in den Abschnitten die Reihenfolge wie im 1. Bild zusehen ist,
bei der Ausgabe (2. Bild) erscheinen die "Blöcke Typ 1" (hier 2spalten) direkt nacheinander.
Im WYSIWYG-Abschnitt 1 steht "Block 1, 2 Spalten"Im WYSIWYG-Abschnitt 2 steht "Block 2, Spalte links"Im WYSIWYG-Abschnitt 3 steht "Block 3, Spalte rechts"Im WYSIWYG-Abschnitt 4 steht "Block 4, 2 Spalten"(Impressum, Datenschutz, AGB ... ist ja noch Test  :) )
Code: [Select]
  <!-- CONTENT -->
  <main class="content-grid">
<?php if (trim($pageContent2spalten) != &#39;&#39;) { ?>
                        <section class="block block-1"><?= $pageContent2spalten; ?></section>
<?php } ?>
<?php if (trim($pageContentlinkespalte) != &#39;&#39;) { ?>
                        <section class="block block-2"><?= $pageContentlinkespalte; ?></section>
<?php } ?>
<?php if (trim($pageContentrechtespalte) != &#39;&#39;) { ?>
                        <section class="block block-3"><?= $pageContentrechtespalte; ?></section>
<?php } ?>
 </main>

....
</div>
 <?php /* nur zum Test */
 
page_content(1);
?>
Ich habe mir auf die Funktion page_content(x) angesehen und analysiert:
die SQL-Abfrage, die dort gemacht wird läuft via while(fetch_assoc) über alle gefundenen Einträge mit Block x (hier 1 == 2spalten) und gibt die dann aus:
frontend.functions.php (ab Zeile 161, hier stark eingekürzt ink.. "wichtigen" Textmarkern (nicht lauffähig so))
Code: [Select]

if (!is_callable('page_content')) {
    ...


        function page_content(int $block = 1) {
            // Get outside objects
            global $TEXT,$MENU,$HEADING,$MESSAGE; // backwards compability
//            static $iSections=1;
            static $i=-1;
..... Zeile 228:
                $block = (($block < 1) ? 1 : $block);
                if (!\defined('PAGE_CONTENT')  || (($block !== 1))){
                    $page_id = (int)(isset($oApp->page_id) ? $oApp->page_id : PAGE_ID);
                    $sBackLink = $oApp->default_link;
 SQL!!!!         $sSqlSet = '
                    SELECT `s`.*
                    ,`p`.`viewing_groups`
                    ,`p`.`visibility`
                    ,`p`.`menu_title`
                    ,`p`.`link`
                    ,`s`.`block`
                    FROM `'.TABLE_PREFIX.'sections` `s`
                    INNER JOIN `'.TABLE_PREFIX.'pages` `p`
                    ON `p`.`page_id`=`s`.`page_id`
                    WHERE `s`.`page_id` = '.( int)$page_id.'
                      AND ('.$iNow.' BETWEEN `s`.`publ_start` AND `s`.`publ_end`)
                      AND `s`.`active` = 1
                      AND `p`.`visibility` NOT IN (\'deleted\',\'none\')
                      AND `s`.`block`='.$block.'
                    ORDER BY `s`.`position`';
.... Zeile 259


                        while(!is_null($aSection = $oSections->fetchAssoc())) {
.....Zeile 305
                                if (!empty($sContent) && $isActive) {
                                    $bPrintAnchor = ($bAnchor && ($sSectionIdPrefix == 'none')||($sSectionIdPrefix != 'none'));
                                    $sAnchor = "\n".'<div id="'.$sSectionIdPrefix.$section_id.'" class="section m-'.$module.' '.$sAttribute.'" >';
                                    $sBeforeContent = ($bPrintAnchor ? $sAnchor : '');
                                    $sAfterContent  = ($bPrintAnchor ? '</div><!-- INFO '.$module.$section_id.' -->' : '');
HIER!!!!                         echo $sContent = ltrim($sBeforeContent."\n".$sContent."\n".$sAfterContent."\n");
                                }
                            }
//  no more sections found, so break e.g from multiselection
                            if ($iSections == 0){break;}
                        } // end while
                    }
.....

        } //  end function page_content
    }

Oben bei dem HIER!!!! passiert es! Es wird einfach der Inhalt ausgegeben! Die SQL-Abfrage (228) ergibt je nach Fall 1,2 oder 3 oder mehr Zeilen ( AND `s`.`block`='.$block.').
Durch die While-Schleife werden dann die Inhalte der Blöcke aus der DB geholt und ausgegeben.

Aber ich prüfe Eure Vorschläge noch einmal intensiv.

Logged

Offline kuerbis42

  • Posts: 16
Re: Content-Blöcke, eine kleine Herausforderung
« Reply #6 on: Today at 09:50:59 AM »
Moin Jacobi, Frage dazu:
Quote from: jacobi22 on February 27, 2026, 01:26:13 AM

Die Einträge direkt hinter wysiwyg: hast Du die da "einmontiert"?Weil, ich habe es wirklich getestet: [Mainblock 1] und [Mainblock 2] werden gesamt ausgegeben, wenn Du das testest, dann müsstest Du den Inhalt dieser beiden Abschnitte auch direkt untereinander haben.

Ich habe mir eine neue Funktion page_content2() gebaut - die gibt mir jetzt alle Blöcke einer Seite zurück - genau wie das Original (page_content()) alles aufbröselt, die Rückgabe
ist aber ein Array:
Code: [Select]
Array (
[0] => Array ( [1] =>Block 1, 2 Spalten )
[1] => Array ( [2] =>Block 2 (Spalte links) )
[2] => Array ( [3] =>Block 2 (Spalte rechts) )
[3] => Array ( [1] =>Block 4 (2 Spalten) )
[4] => Array ( [2] =>noch einmal linke spalte ) )
Damit habe ich die Reihenfolge gesichert und weiß, in welchen Block der Inhalt gehört.
Logged

Offline jacobi22

  • Betatester
  • **
  • Posts: 5959
Re: Content-Blöcke, eine kleine Herausforderung
« Reply #7 on: Today at 09:59:27 AM »
Bin mir aktuell nicht sicher, worauf du hinaus willst oder ob vielleicht andere Vorstellungen bzw Erwartungen vorhanden sind

ein paar Grundsätze zur Klärung vorab. Mag sein, ist dir bekannt, aber bitte nicht gleich mit den Augen rollen  ;-)

- per Definition ist jede Section ein einzelner Block, unabhängig vom Typ und Inhalt. Zum besserem Verständnis gehen wir davon aus, das es sich um einfachen Fließtext in Wysiwyg-Modulen handelt. Wenn wir die Möglichkeiten jedes einzelnen Modul, den jeweiligen Content mehrspaltig darstellen zu können, außer Acht lassen, ist es pro Block nicht möglich, diesen mehrspaltig darstellen zu können.
- in der index.php deines Frontend-Templates wird die Funktion page_content() aufgerufen. Der Aufruf ist mit oder ohne eine Zahl möglich. Wird keine Blocknummer übermittelt, ist es immer Block 1. Das regelt diese Zeile, $Block ist der numerische Wert im Funktionsaufruf, also z.b. page_content(3) )
Code: [Select]
$block = (($block < 1) ? 1 : $block);Du mußt also sicherstellen, das du nicht page_content() und page_content(1) gemeinsam im Template verwendest, sonst können Abschnitte doppelt dargestellt werden.

Der if-Block in der page_content-Funktion ab z.228 - 318
Er ist zuständig für alle Blöcke (bzw Sectionen) mit Übergabe eines numerischen Wertes. Der else-Block darunter regelt die Blöcke ohne solche numerische Übergabe, also page_content() statt page_content(3) und ordnet alle Blöcke ohne Ziffer den Block #1 zu

Im $sSqlSet an Z. 232 werden die Daten festgelegt, die benötigt werden. Ein JOIN zur pages-Tabelle stellt dann sicher, das nur Blöcke auf sichtbaren Seiten eingelesen werden.
Nach Definition der SQL-Abfrage  zuerst ein Fallback für den Fall, das keine Sectionen geunden wurden (Z 248 - 251)

In Z 271 - 275 wird die Sichtbarkeit des jeweiligen Blockes geprüft
ab Z. 281 wird dann die jeweilige view.php des einzubindenen Modul aufgerufen
ab Z 293 erfolgt dann die Einbindung des Search-Templates aus den WB-Option, für den Fall, das die Suche bemüht wurde

Quote
Die Einträge direkt hinter wysiwyg: hast Du die da "einmontiert"?Weil, ich habe es wirklich getestet: [Mainblock 1] und [Mainblock 2
P.S.: als Tip noch: nutze die Möglichkeit, jeder Section einen eigenen Titel zu geben. Das macht es später einfacher. Dazu in jeder Section oben rechts auf das Zahnrad klicken. Der dort eingegebene Titel erscheint dann auch in der Section-Übersicht (siehe mein Bild oben)

Und noch etwas: Das hier gezeigt Konzept mit dem Page_Content funktioniert seit über 25 Jahren. Nicht nur im UrVater-CMS WebsiteBaker, sondern auch in allen Forks und in abgewandelter Form auch in jedem anderen CMS wie WP, Typo3 usw

Vielleicht zeigst du mal dein Template, gern auch per Mail, wenn du es nicht öffentlich machen möchtest
entweder privat an uwe@jacobi22.com
oder offiziel an board@WebsiteBaker.org bzw support@WebsiteBaker.org

Logged

Offline jacobi22

  • Betatester
  • **
  • Posts: 5959
Re: Content-Blöcke, eine kleine Herausforderung
« Reply #8 on: Today at 10:14:43 AM »
Lese ich deinen Text, hab ich meine Vermutung...

Quote
[0] => Array ( [1] =>Block 1, 2 Spalten )
[1] => Array ( [2] =>Block 2 (Spalte links) )
[2] => Array ( [3] =>Block 2 (Spalte rechts) )

[3] => Array ( [1] =>Block 4 (2 Spalten) )
[4] => Array ( [2] =>noch einmal linke spalte ) )

das geht nicht, oder besser: es wird nicht das Ergebnis liefern, das du erwartest. Jeder Block bzw jeder Funktionsaufruf (wie auch immer der gestaltet ist, siehe Code von dbs im Vergleich zu meinem Code oben) darf im Template nur einmal erscheinen.

Wenn Zwei-spaltig, dann müssen dies auch zwei Blöcke bzw zwei Sectionen sein, bei 3 -spaltig drei Sektionen usw. Über diverse Schalter im PHP des Templates kann man dann auf Inhalt prüfen und mit if/else schalten, ob auf zwei Spalten auch nur eine wird, wenn da kein Inhalt ist.

dbs und Ruud mach das über die Abfrage, ob der Bezeichner existiert. Ich prüfe auf Inhalt und entferne mögliche Leerzeichen, die man mal schnell im Wysiwyg eingetippt hat und die dann Content erzeugen. Die direkte Benutzung der Bezeichner ohne vorherige Definition wird mit neueren PHP irgendwann zu Warnings führen, wenn mal eine Section nicht vorhanden, nicht definiert wurde. Sicherer wäre da, diese erst mit false zu definieren.

Quote

$fulltop = false;
ob_start(); page_content(1); $main       = ob_get_clean();

if ($fulltop) { ....
Ist aber jetzt erstmal nebensächlich und für dein Problem nicht von Bedeutung


Logged

Offline jacobi22

  • Betatester
  • **
  • Posts: 5959
Re: Content-Blöcke, eine kleine Herausforderung
« Reply #9 on: Today at 10:57:03 AM »
Ich denk, ich verstehe nun, was du meinst....

Meine Sectionübersicht, das Bild, das du eben auch zeigtest, nutzt hier zwei Abschnitte vom Block Main. Diese gleichen Blöcke werden zusammengefaßt zu einem, unabhängig von der Position in der Sectionübersicht. Und dies gilt für jeden Blocktype, der in der info.php definiert wurde. Das war auch Absicht der Urväter und behält trotzdem alle Gestaltungsmöglichk eiten

Wenn du das nicht brauchst oder nicht möchtest, definiere weitere Blöcke und schalte sie über PHP-Abfragen im Template

P.S.: ich habe jetzt kein Limit für die Anzahl möglicher Blöcke gefunden, die oben genannte Zahl von 99 ist wohl falsch. Chio hat in einigen seiner Templates die Definition eines Block 99 drin. Also aufpassen, das jeder Block in der info.php und in der index.php nur einmal genannt wird.
Logged

Offline kuerbis42

  • Posts: 16
Re: Content-Blöcke, eine kleine Herausforderung
« Reply #10 on: Today at 02:41:52 PM »
Moin Jacobi,

vielen Dank für Deine wirklich ausführlichen Ausführungen.
Und ja, ich habe das Konzept wohl verstanden - das mit dem Section-Namen  hatte ich noch nie probiert, ist aber ein guter Tipp.

Ich versuche Dir meine Idee noch einmal ganz kurz zum umreißen:

Ich wollte ein Grid-Layout nutzen - und das gab es vor 25 Jahren noch nicht :)

Das Grid nimmt mir ja viele Sachen ab, und ich möchte "unendlich" viele 2 spaltige Blöcke und "linke / rechte" Blöcke kombinieren.



Quote
Block Main. Diese gleichen Blöcke werden zusammengefaßt zu einem, unabhängig von der Position in der Sectionübersicht.
genau, das ist ja mein Problem.

Quote
[0] => Array ( [1] =>Block 1, 2 Spalten )
[1] => Array ( [2] =>Block 2 (Spalte links) )
[2] => Array ( [3] =>Block 2 (Spalte rechts) )

[3] => Array ( [1] =>Block 4 (2 Spalten) )
[4] => Array ( [2] =>noch einmal linke spalte ) )

Das war von meiner Seite aus missverständlich dargestellt, mit "Block 2" meine ich die Position im Layout. Ich glaube, das Bild oben zeigt es besser.

Das hier:
Quote
in der index.php deines Frontend-Templates wird die Funktion page_content() aufgerufen. Der Aufruf ist mit oder ohne eine Zahl möglich. Wird keine Blocknummer übermittelt, ist es immer Block 1. Das regelt diese Zeile, $Block ist der numerische Wert im Funktionsaufruf, also z.b. page_content(3) )
Code:
Code: [Select]
$block = (($block < 1) ? 1 : $block);
Du mußt also sicherstellen, das du nicht page_content() und page_content(1) gemeinsam im Template verwendest, sonst können Abschnitte doppelt dargestellt werden.

stimmt so nicht, weil
Code: [Select]
function page_content(int $block = 1) {einen Default für $block definiert, und $block bei page_content() den Wert 1 annimmt:
Code: [Select]
ausgabe page_content()
[b]Block 1, 2 Spalten   
Block 4 (2 Spalten) [/b]   

-------ist identisch mit -------------------
ausgabe page_content(1)
[b]Block 1, 2 Spalten   
Block 4 (2 Spalten)   
[/b]
--------------------------
ausgabe page_content(2)
[b]Block 2 (Spalte links)   
noch einmal linke spalte [/b]


wann PAGE_CONTENT definiert wird, habe ich noch nicht erschlossen.... aber das if ist "eindeutig":
Wenn NICHT PAGE_CONTENT oder block ist NICHT 1, d.h. sobald ein page_content(x) mit x !==1 kommt, dann wird die SQL-Abfrage gestartet, NUR wenn PAGE_CONTENT definiert ist und block=1,
dann kommt der else-Zweig

Code: [Select]
  ... } else {
    // Searchresults! But also some special pages,
                 //  e.g. guestbook (add entry), news (add comment) uses this
                    \ob_start(); // fetch original content
                    require(PAGE_CONTENT);
                    $sContent = ob_get_clean();
                //  Apply Filters
                    if (\is_callable('OutputFilterApi')) {
                        $sContent = OutputFilterApi('OpF?arg=special', $sContent);
                    }
                    echo $sContent;
                }


Mein Ziel ist es - und ich denke, das ist auch das Ziel von WB - es dem Backendbenutzer (nicht Designer) es möglichst einfach zu machen, wenn ich meinen Damen und Herren erklären muss, dass Sie bei den Blöcken "mitzählen" müssen, wo was dann hinkommt, dann wird das nichts.
Wenn ich denen aber sage:
"Steht das 2-Spaltig, dann ist es zentriert", steht Block links, bzw. Rechts, dann kommt es da hin. Und das kannst Du so oft wiederholen wie Du willst. Und es kommt so, wie Du die Reihenfolge "Abschnitte verwalten" erstellst.".
Dann können die die Seite mit Inhalt füllen ohne "nachzudenken".

Ich glaube, meine page_content2() liefert mir das so, wie ich es brauche.
In der index.php kann ich dann mit einer Schleife drüber gehen, die Grid-Plätze füllen und den Rest macht der Browser.

Ich melde mich noch mal persönlich mit dem Ergebnis.
Logged

  • Print
Pages: [1]   Go Up
  • WebsiteBaker Community Forum »
  • WebsiteBaker Support (2.13.x) »
  • General Help & Support »
  • Content-Blöcke, eine kleine Herausforderung
 

  • SMF 2.0.19 | SMF © 2017, Simple Machines
  • XHTML
  • RSS
  • WAP2