91
General Help & Support / Re: Content-Blöcke, eine kleine Herausforderung
« Last post by kuerbis42 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
)
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))
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.
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) != '') { ?>
<section class="block block-1"><?= $pageContent2spalten; ?></section>
<?php } ?>
<?php if (trim($pageContentlinkespalte) != '') { ?>
<section class="block block-2"><?= $pageContentlinkespalte; ?></section>
<?php } ?>
<?php if (trim($pageContentrechtespalte) != '') { ?>
<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.
Support WebsiteBaker
Recent Posts
Hilfe & Support (deutsch)