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 »
  • Recent Posts

Recent Posts

Pages: 1 ... 8 9 [10]
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  :) )
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.

92
General Help & Support / Re: Content-Blöcke, eine kleine Herausforderung
« Last post by jacobi22 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

93
General Help & Support / Re: Content-Blöcke, eine kleine Herausforderung
« Last post by dbs 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/
94
General Help & Support / Re: Content-Blöcke, eine kleine Herausforderung
« Last post by kuerbis42 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
95
General Help & Support / Re: Content-Blöcke, eine kleine Herausforderung
« Last post by jacobi22 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)!='' ){ ?>....
96
General Help & Support / Content-Blöcke, eine kleine Herausforderung
« Last post by kuerbis42 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
97
Hilfe & Support (deutsch) / Re: Fehlermeldung bei/nach Update auf WB-Version 2.13.9 r25
« Last post by sternchen8875 on February 26, 2026, 01:42:19 PM »
Danke für die Info!
98
Hilfe & Support (deutsch) / Re: Fehlermeldung bei/nach Update auf WB-Version 2.13.9 r25
« Last post by md001 on February 25, 2026, 07:33:10 PM »
Danke für die ausführliche Erklärung :-)

Zu deinen Fragen:
1. Hast du das Datenbank-Backup der alten Version noch und wenn JA, magst du mal reinschauen, ob dort die fehlenden Tabellen enthalten sind?
Code: [Select]
Die Tabelle für die Droplets hat gefehlt. Die habe ich dann aus meiner Testinstanz exportiert und hier importiert.
2. Hast du das Zip mit der R25 über die unzip.php bzw Servereigene Möglichkeiten entpackt oder die Dateien einzeln hochgeladen?
Code: [Select]
ich habe die unzip.php benutzt. Habe sie extra vorher noch mal heruntergeladen.
99
Hilfe & Support (deutsch) / Re: Fehlermeldung bei/nach Update auf WB-Version 2.13.9 r25
« Last post by sternchen8875 on February 25, 2026, 12:21:11 PM »
Quote from: md001 on February 24, 2026, 09:25:40 PM
Beim einloggen in die Admin Seite erscheint immer der folgende Text
Code: [Select]
The upgrade script could not start automatically
Please click on this link to start the script!

für die technisch interessierten User eine Korrektur, weil ich grade selber diese Message erhielt

1. mit dem WB-Paket wird eine Datei admin/interface/update geliefert. Sie enthält die Daten zur Version, die Hauptversion, eventuelle Revisions- oder SP-Nummer, den Timestamp der Paketerstellung.
2. beim Install oder Upgrade wird dieser Timestamp in die Datenbank übernommen, dann die Datei update umbenannt in update.fixed, (was wohl nicht immer funktioniert auf Grund von CHMod-Rechten)
3. Beim Anmelden des SuperAdmins (User-ID==1) wird geprüft, ob eine Datei update.fixed vorhanden ist und falls ja, ob deren Timestamp-Wert größer wie der Wert in der settings-Tabelle ist.
4. Ist die Datei update noch vorhanden oder der Timestamp aus der update.fixed größer wie der Wert in der Datenbank, erscheint obige Message

Einfachste Lösung wäre hier also: die Datei admin/interface/update manuell per FTP zu löschen. Aber keinesfalls die  update.fixed im gleichen Ordner löschen!!
100
Hilfe & Support (deutsch) / Re: Fehlermeldung bei/nach Update auf WB-Version 2.13.9 r25
« Last post by sternchen8875 on February 25, 2026, 01:35:40 AM »
Wenn man nicht live dabei ist, läßt es sich natürlich schwer nachvollziehen, aber deine Meldungen ermöglichen es, einiges zu erkennen.
Aber schön, das du dir selbst helfen konntest!  (Y)

der Reihe nach...
Quote
03] : Upgrade module WBLingual from version 2.0.9 to version 2.0.9 OK
[04] : Upgrade module captcha_control from version 2.2.3 to version 2.2.3 OK
There was an uncatched exception

eingelesen wird in der Folge, wie die Module im Ordner /modules stehen, [04] gibt ein okay für das Modul captcha_control. Das nachfolgende Modul erzeugt einen Fehler, also das Droplet-Modul. Das Upgrade des Droplet-Moduls konnte also nicht abgeschlossen werden. Warum verrät uns diese Meldung

Code: [Select]
There was an uncatched exception
array_merge(): Argument #2 must be of type array, null given
in line (748) of (/framework/helpers/PreCheck.php):

an dieser Stelle werden im Droplet-Modul temporäre Ordner gelöscht (data/tmp und (ein leeres) data/archiv), die vorher zur Installation der einzelnen Droplets angelegt werden sollten. In deinem Fall fehlten die gesuchten Dateien, der Ordner selbst war da, aber eben leer.
Woher weiß ich das? von dieser Zeile der genannten Funktion
Quote
$aFiles = array_merge(($aHits['folder'] ?? []),$aHits['file']);
Hier wird folder abgefangen mit dem Operator ??[] (mit einfachen Worten: wenn $aHits['folder'] nicht vorhanden oder null, setze ein leeres Array) , file wurde aber nicht abgefangen, weil eben bis dahin vorausgesetzt wurde: wenn das Verzeichnis da ist, besser: angelegt werden durfte, dürfen da auch Dateien reingelegt werden, also sollten sie da sein

Heute mit den neuen PHP-Versionen fängt man das ab wie in deinem Code schon genannt.
Code: [Select]
$aFiles = array_merge(($aHits['folder'] ?? []), ($aHits['file'] ?? []));
Ist auch schon in den Nachfolgeversionen eingebaut, nur noch nicht veröffentlicht, weil ja immer wieder etwas dazu kommt

Quote
There was an uncatched exception
array_merge(): Argument #1 must be of type array, null given
in line (1197) of (/framework/frontend.functions.php):

an dieser Stelle werden die Scripteinbindungen kurz vor den Footer gebaut (z.b. FrontendBodyJs). Da das Droplet aber abbricht, wird danach kein Code ausgeführt

Quote
Beim einloggen in die Admin Seite erscheint immer der folgende Text

ist das Ergebnis eines nicht komplett durchgelaufenen Upgradescriptes. Ist die WB-Versionsnummer in der DB-Tabelle settings ungleich zur Versionsnummer in der Datei admin/interface/version.php, erscheint diese Meldung

Quote
Habe es auch   = '1.13.0'; gesetzt, dann hat die Installation geklappt.
ich denk mal, ein Tippfehler,
Droplets hat in der WB 2.13.5 R220 die v3.4.2 und jetzt die v3.4.4
Da wurde einmal die komplette Übersetzung hinzugefügt und einmal das Löschen der DE.php unterbunden, das von lokalen Tests noch drin stand

Für die Meldungen zum WBStats mußt du immer ein Auge auf Ruud's seiten haben -> https://dev4me.com/modules-snippets/opensource/wbstats/

und hier noch etwas von uns dazu -> https://forum.WebsiteBaker.org/index.php/topic,32432.msg227364.html#msg227364



Eine Frage noch zum Abschluß (oder zwei)
1. Hast du das Datenbank-Backup der alten Version noch und wenn JA, magst du mal reinschauen, ob dort die fehlenden Tabellen enthalten sind?

2. Hast du das Zip mit der R25 über die unzip.php bzw Servereigene Möglichkeiten entpackt oder die Dateien einzeln hochgeladen?

 

Pages: 1 ... 8 9 [10]
  • SMF 2.0.19 | SMF © 2017, Simple Machines
  • XHTML
  • RSS
  • WAP2