WBCE CMS – Way Better Content Editing.
You are not logged in.
Hallo,
ich habe das Such-Droplet "SearchBox" auf einer Seite "websitesuche.php" integriert, es tut auch alles was es soll, aber die Seite, auf der das Ergebnis angezeigt wird, ist nicht mehr die Seite, auf der die Suche gestartet wurde ("websitesuche.php"). Es fehlt auch das komplette Menü der gesamten Website drumherum.
Beispiel: In der URL bei Beginn der Suche steht:
www.beispiel.de/pages/websitesuche.php
Wenn ich ein Wort in das Suchfeld eingebe und das Formular abschicke, wird nur noch das Formular erneut und das erzielte Suchergebnis dargestellt. Das Website-Menü fehlt und in der URL steht nun
www.beispiel.de/search/index.php?string=Suchtextstring&submit=Suchen&match=all
Wie könnte ich denn nun dieser Ergebnisseite beibringen, sich in das Menü bzw. das Design der Website zu integrieren?
Template ist lypsresp, WBCE 1.4.5 und PHP 7.4.14
Gruß
dabiener
Offline
Das Suchergebnis kann ausschließlich auf der Seite /search/index.php dargestellt werden. Die Suchergebnisse lassen sich auch nicht mit anderen Ausgaben kombinieren.
Allerdings gibt es sowohl im Template als auch im Droplet zwei Fehler, die verhindern, dass auf der Suchergebnisseite das Mwnü angezeigt wird.
Ändere im Template den Menüaufruf zu:
show_menu2(1,SM2_ROOT,SM2_CURR+1,SM2_SIBLING,'<li><a href="[url]" class="[class]">[menu_title]</a>','</li>','<ul>','</ul>',false,false);
(Es ist sowieso eigentlich unzulässig, dass der 4. Parameter ein Leerstring ist)
Ändere das Searchox-Droplet zu
global $TEXT;
$return_value = true;
if (!isset($msg)) $msg='search this site..';
$j = "onfocus=\"if(this.value=='$msg'){this.value='';this.style.color='#000';}else{this.select();}\"
onblur=\"if(this.value==''){this.value='$msg';this.style.color='#b3b3b3';}\"";
if(SHOW_SEARCH) {
$return_value = '<div class="searchbox">';
$return_value .= '<form action="'.WB_URL.'/search/index'.PAGE_EXTENSION.'" method="get" name="search" class="searchform" id="search">';
$return_value .= '<input type="hidden" name="referrer" value="'.PAGE_ID.'" />';
$return_value .= '<input style="color:#b3b3b3;" type="text" name="string" size="25" class="textbox" value="'.$msg.'" '.$j.' /> ';
$return_value .= '</form>';
$return_value .= '</div>';
}
return $return_value;
(d.h. zusätzliche Zeile $return_value .= '<input type="hidden" name="referrer" value="'.PAGE_ID.'" />';)
Dann wird auch auf der Suchergebnisseite das Menü dargestellt.
Edit: wenn darüber hinaus das Design fehlt oder zerschossen ist, gibt es ein Problem mit der search.php von einem der installierten Module. Bitte mal das Errorlog dahingehend prüfen.
Last edited by florian (21.03.2021 22:35:50)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Hallo Florian,
danke für die nächtliche (und sonntägliche!) Hilfe...es hat (zunächst nicht) funktioniert, dann aber doch jedoch, leider mit einen riesengroßen Haken.
Obwohl der Aufruf von show_menu2 bei mir bereits fast (*) genau so war, wie du es vorschlägst (also mit 4. Parameter). Kann mich dunkel erinnern, dass ich vor 2 Jahren schon mal wegen was anderem am Menü rumbasteln musste.
(*) "fast genau so" bedeutet, dass bei mir der 4. Parameter "SM2_TRIM" statt wie bei dir "SM2_SIBLING" gelautet hat.
Sobald ich auch das geändert hatte, hat es funktioniert und das Menü wird auch nach erfolgter Suchen angezeigt.
Der ganz große Haken dabei: Ich verwende Menüs mit Untermenüs. Und sobald ich "SM2_SIBLING" als Parameter habe, wird beim Klick auf einen Menüpunkt nur noch genau dieser Punkt samt Unterpunkten angezeigt - alle anderen Menüpunkte verschwinden dann - ganz fatal.
Setze ich den 4. Parameter wieder zurück auf SM2_TRIM, ist alles wieder korrekt - bis auf das ursprünglichen Problem, dass dann eben das gesamte Menü bei der Suche verschwindet. Genau an diesem Parameter scheint also der Hase im Pfeffer zu liegen - hast du noch eine Idee?
Und es gibt tatsächlich nach wie vor eine Fehlermeldung im Errorlog, sobald man sucht, nämlich pro Suche 6x den folgenden Eintrag:
2021-03-21T23:02:54+00:00 [Notice] /modules/bakery/search.php:[74] from /framework/frontend.functions.php:[469] "Undefined variable: img_dir"
Klingt für mich nicht so, als könnte das was damit zu tun haben?
Das Suche-Menü-Problem hatte ich jedenfalls schon, bevor ich das Shopmodul bakery installiert hatte.
Gruß
dabiener
Offline
So weit ich sehe, hängt das (reproduzierbare) Verschinden des Menüs mit folgender Anweisung in der /modules/show_menu2/include.php ab Zeile 97 zusammen:
$CURR_PAGE_ID = defined('REFERRER_ID') ? REFERRER_ID : PAGE_ID;
if (is_countable($wb->page)){
if (count($wb->page) == 0 && defined('REFERRER_ID') && REFERRER_ID > 0) {
global $database;
$sSql = 'SELECT * FROM `{TP}pages` WHERE `page_id` = '.REFERRER_ID.'';
$result = $database->query($sSql);
if ($result->numRows() == 1) {
$wb->page = $result->fetchRow();
}
unset($result);
}
}
Die Bedingungen "(is_countable($wb->page)" und folglich auch "count($wb->page) == 0" sind da, wo sie eigentlich benötigt werden, nämlich auf Seiten ohne eigene Page-ID, gerade nicht erfüllt. Ändere ich also den Code zu
$CURR_PAGE_ID = defined('REFERRER_ID') ? REFERRER_ID : PAGE_ID;
if ( defined('REFERRER_ID') && REFERRER_ID > 0) {
global $database;
$sSql = 'SELECT * FROM `{TP}pages` WHERE `page_id` = '.REFERRER_ID.'';
$result = $database->query($sSql);
if ($result->numRows() == 1) {
$wb->page = $result->fetchRow();
}
unset($result);
}
wird das gewünschte Verhalten erreicht, d.h. das Menü bleibt auch auf der Suchergebnisseite erhalten.
So weit ich sehe, hat das keine unerwünschten Seiteneffekte.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
dabiener
Hallo Florian - jetzt scheint jetzt alles perfekt zu sein, auch mir fällt keine unerwünschte Funktion im Menü auf! Vielen Dank!
Ich darf doch hoffentlich davon ausgehen, dass alle diese Korrekturen wie diese hier, die du mir und vielen anderen usern hier im Rahmen deiner Hilfestellungen empfiehlst, auch in die neuen Versionen von WBCE und den betroffenen Modulen einfließen werden? Dann wäre meine ganze Fragerei wenigstens nicht nur für mich, sondern für künftige User nützlich...
Gruß
dabiener
Offline