Versuchs mal mit der Zeilevor der ZeileCode: Alles auswählen
cInclude("classes", "class.template.php");
Code: Alles auswählen
$tpl = new Template;
Volltextsuche für 4.4
-
- Beiträge: 41
- Registriert: Mo 23. Aug 2004, 09:47
- Kontaktdaten:
Re: Rücksprung auf die Suchergebnisse klappt nicht
Ich habe das gleiche Problem hat jemand ein Lösung dazu?Idrian hat geschrieben:Hallo Contenido Gemeinde,
ich habe die Suche soweit implementiert und es klappt auch alles soweit ganz prima. Nur einen kleinen Schönheitsfehler habe ich noch. Wenn ich auf einen Suchtreffer klicke um mir den betreffenden Eintrag anzeigen zu lassen und danach wieder auf die Suchergebnisse zurücklinken möchte, klappt das mit einem javascript:history.back() nicht. Es kommt immer ein "Seite kann nicht angezeigt werden". Muss ich für den Rücksprung auf die Suchergebnisse Variablen mit zurückreichen?
Zur Verdeutlichung:
ich habe in beiden Modulen $linkziel = "front_content.php?idcat=72" eingetragen. die idcat ist gleichlautend mit der Suchseite front_content.php?idcat=72
Beim Rücksprung mittels history.back() auf die Seite front_content.php?idcat=72 nach Betrachten des gesamten Artikels wird nur eine leere Seite angezeigt.
Gruß
Idrian
Das Problem hatte ich auch. Hier gibt es die Lösung
-
- Beiträge: 41
- Registriert: Mo 23. Aug 2004, 09:47
- Kontaktdaten:
/cheer Danke für die schnelle Antwort hat wunderbar geklappt!Cyclist hat geschrieben:Das Problem hatte ich auch. Hier gibt es die Lösung
Problem mit Volltextsuche und W3concepts.form.v1
Die Volltextsuche ist echt klasse geworden.
Jetzt habe ich leider folgendes Problem: " Auf meinen Seiten setzte ich noch das Modul W3concepts.form.v1 ein. Wähle ich nun Anfang des Artikeltextes ausgeben und die Volltextsuche findet einen passenden Begriff im Formular, wird der komplette Formularinput ausgegeben, obwohl die Textlänge begrenzt wurde. "
Hat hier jemand schon mal dies Problem gehabt, und hat eine Lösung, oder kann man einfach einen Bereich ausklammern, der dann nicht durchsucht werden darf?
Gruss,Alex
Hier ein Anschnitt der suchausgabe, wie Sie bei mir dargestellt wird:
Jetzt habe ich leider folgendes Problem: " Auf meinen Seiten setzte ich noch das Modul W3concepts.form.v1 ein. Wähle ich nun Anfang des Artikeltextes ausgeben und die Volltextsuche findet einen passenden Begriff im Formular, wird der komplette Formularinput ausgegeben, obwohl die Textlänge begrenzt wurde. "
Hat hier jemand schon mal dies Problem gehabt, und hat eine Lösung, oder kann man einfach einen Bereich ausklammern, der dann nicht durchsucht werden darf?
Gruss,Alex
Hier ein Anschnitt der suchausgabe, wie Sie bei mir dargestellt wird:
Code: Alles auswählen
Suchergebnisse für "polo"
Anzahl Treffer: 2
Polo Facelift
...
Sicherung Formmail
Gebrauchtwagen Anfrage
Anrede:
###name:anrede; type:select; valid:text; size:1; option:bitte auswählen; option:Herr; option:Frau; option:Firma; value:bitte auswählen###
Vorname / Nachname:*
###name:vorname; type:text; valid:simpletext; size:20; mandatory:true### / ###name:nachname; type:text; valid:simpletext; size:20; mandatory:true###
Email:
###name:email; type:text; valid:email; size:30; mandatory:true###
Vorwahl/Telefon*
###name:vorwahl; type:text; valid:integer; size:7; mandatory:true### - ###name:telefon; type:text; valid:integer; size:15; mandatory:true###
Rückruf:
###name:Rückruf[0];type:checkbox; valid:integer; value:Rueckruf### Ja, bitte rufen Sie mich zurück
Modell:
###name:modell;type:radio;valid:text; value:Lupo; selected:true### Lupo ###name:modell; type:radio; valid:text; value:Polo### Polo ###name:modell; type:radio; valid:text; value:Golf### Golf###name:modell;type:radio;valid:text; value:Bora; selected:true### Bora ###name:modell; type:radio; valid:text; value:Touran### Touran ###name:modell; type:radio; valid:text; value:New Beetle### New Beetle
wäre nett wenn du die geänderte version posten würdest, die anfrage kommt in letzter zeit immer öfter... damit wäre sicher einigen anderen suchenden geholfen...m2Designer hat geschrieben:/cheer Danke für die schnelle Antwort hat wunderbar geklappt!Cyclist hat geschrieben:Das Problem hatte ich auch. Hier gibt es die Lösung
*** make your own tools (wishlist :: thx)
-
- Beiträge: 41
- Registriert: Mo 23. Aug 2004, 09:47
- Kontaktdaten:
Klar - also hier der Code!
Formular Volltextsuche
Modul Volltextsuche:
Input:
Output:
Nur IDCAT und IDCATART ändern und fedisch
Hier nochmal die Templatedateien so das die Zusammenfassung komplett ist!
Templatedateien(in /cms/templates kopieren)
search_found.html:
Code:
search_notfound.html:
Code:
Formular Volltextsuche
Code: Alles auswählen
<?php
$linkziel = front_content.php?idcat=21";
//$linkziel = $auth->url();
?>
<form name="suche" action="<?= $linkziel ?>" method="get">
<input type='hidden' name='idcatart' value='39'>
<input type='hidden' name='lang' value='1'>
<input type='hidden' name='client' value='1'><table>
<table width="230" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><span style="font-size: 15px">Suche </span></td>
<td><input name="suchtext" type="text" size="20" class="input"></td>
<td><input name="submit" type="submit" value="Go" class="button"></td>
</tr>
</table>
</form>
Input:
Code: Alles auswählen
$linktarget = "CMS_VALUE[1]";
$extratext = "CMS_VALUE[2]";
if($linktarget == "") {
$linktarget = "_self";
}
if($extratext == "") {
$extratext = 0;
}
?>
<table>
<tr>
<td>Linktarget</td>
<td>
<select name="CMS_VAR[1]">
<option value="_self"<? if(strcmp("_self", $linktarget) == 0) echo " selected"; ?>>gleiches Fenster (_self)</option>
<option value="_new"<? if(strcmp("_new", $linktarget) == 0) echo " selected"; ?>>neues Fenster (_new)</option>
</select>
</td>
</tr>
<tr>
<td>Zusätzlicher Text zum Artikellink</td>
<td>
<select name="CMS_VAR[2]">
<option value="0"<? if($extratext == 0) echo " selected"; ?>>kein zusätzlicher Text</option>
<option value="1"<? if($extratext == 1) echo " selected"; ?>>Artikelkommentar</option>
<option value="2"<? if($extratext == 2) echo " selected"; ?>>Anfang des Artikeltextes</option>
</select>
</td>
</tr>
</table>
<?
Code: Alles auswählen
<?php
//$linkziel = "front_content.php?idcat=21";
$linkziel = $auth->url();
$ignore_konj = array("und","oder","als","wenn","auch","wo","wie");
$ignore_art = array("der","die","das","ein","eine");
$ignore = array("ich","du","er","sie","es","wir","ihr","sie");
$extratextLength = 200;
$suchtext = $_GET["suchtext"];
?>
<form name='suche' method='GET' action='front_content.php'>
<input type='hidden' name='idcatart' value='39'>
<input type='hidden' name='lang' value='1'>
<input type='hidden' name='client' value='1'><table>
<tr>
<td><span style="font-size: 15px">Suche </span></td>
<td><input name="suchtext" type="text" class="input"size="20" value="<?= $suchtext ?>"></td>
<td><input name="submit" type="submit" class="button" value="Go"></td>
</tr>
</table>
</form>
<?php
$linktarget = "CMS_VALUE[1]";
$extratext = "CMS_VALUE[2]";
/* DB Instances */
$db = new DB_Contenido;
$db2 = new DB_Contenido;
/* Template Instance */
cInclude("classes", "class.template.php");
$tpl = new Template;
if($suchtext != "") {
while(ereg(' ', $suchtext)) {
$suchtext = ereg_replace(' ', ' ', $suchtext);
}
$suchliste = explode(" ", strtolower($suchtext));
$suchliste = array_diff($suchliste, $ignore_konj, $ignore_art, $ignore);
$suchtext = trim(implode(" ", $suchliste));
if($verknuepfung == "oder") {
$suchregexp = "(" . str_replace(" ", ")|(", $suchtext) . ")";
$s = ereg_replace("ü", "%FC", strtolower($suchtext));
$s = ereg_replace("ä", "%E4", $s);
$s = ereg_replace("ö", "%F6", $s);
$suchregexp .= "|$s";
$sql = "SELECT " .
"A.title AS title, " .
"A.idart AS idart, " .
"A.summary AS comment, " .
"B.idcat AS idcat, " .
"D.value AS content, " .
"A.idartlang AS sideid " .
"FROM " .
$cfg["tab"]["art_lang"] . " AS A, " .
$cfg["tab"]["cat_art"] . " AS B, " .
$cfg["tab"]["cat"] . " AS C, " .
$cfg["tab"]["content"] . " AS D " .
"WHERE " .
"A.idart = B.idart " .
"AND A.idartlang = D.idartlang " .
"AND B.idcat = C.idcat " .
"AND C.idclient = '$client' " .
"AND idlang = '$lang' " .
"AND online='1' " .
"AND (D.value REGEXP '" . $suchregexp . "' " .
"OR A.title REGEXP '" . $suchregexp . "' " .
"OR A.summary REGEXP '" . $suchregexp . "')";
} // end if($verkuepfung)
else {
$sql = "SELECT " .
"A.title AS title, " .
"A.idart AS idart, " .
"A.summary AS comment, " .
"B.idcat AS idcat, " .
"D.value AS content, " .
"A.idartlang AS sideid " .
"FROM " .
$cfg["tab"]["art_lang"] . " AS A, " .
$cfg["tab"]["cat_art"] . " AS B, " .
$cfg["tab"]["cat"] . " AS C, " .
$cfg["tab"]["content"]." AS D " .
"WHERE " .
"A.idart = B.idart " .
"AND A.idartlang = D.idartlang " .
"AND B.idcat = C.idcat " .
"AND C.idclient = '$client' " .
"AND idlang = '$lang' " .
"AND online = '1'";
while(list($key, $val) = each($suchliste)) {
$suchregexp = "(" . str_replace(" ", ")|(", $val) . ")";
$s = ereg_replace("ü", "%FC", strtolower($val));
$s = ereg_replace("ä", "%E4", $s);
$s = ereg_replace("ö", "%F6", $s);
$suchregexp .= "|$s";
$sql .= " AND (D.value REGEXP '" . $suchregexp . "' " .
"OR A.title REGEXP '" . $suchregexp . "' " .
"OR A.summary REGEXP '" . $suchregexp . "')";
} // end while
reset($suchliste);
} // end else($verknuepfung)
$db->query($sql);
if($db->num_rows() != 0){
while($db->next_record()) {
if ($auth->auth["uid"] == "nobody"){
$sql2 = "SELECT " .
"public " .
"FROM " .
$cfg["tab"]["cat_lang"] . " " .
"WHERE " .
"idcat = '" . $db->f("idcat") . "'";
$db2->query($sql2);
if($db2->next_record()) {
if($db2->f("public") == 0) {
continue;
} // end if(public)
} // end if(next_record)
} // end if(auth nobody)
$num = 0 + $db->f("sideid");
$results[$num][link] = "front_content.php?" .
"client=" . $client .
"&lang=" . $lang .
"&idcat=" . $db->f("idcat") .
"&idart=" . $db->f("idart");
$results[$num][title] = $db->f("title");
//anzuzeigenden Text ermitteln
switch($extratext) {
case 0:
$results[$num][text] = "";
break;
case 1:
$results[$num][text] = $db->f("comment");
break;
case 2:
$results[$num][text] = capiStrTrimSentence(strip_tags(urldecode($db->f("content"))), $extratextLength) . "...";
break;
} // end switch
while(list($key, $val) = each($suchliste)) {
$hits[$num] += substr_count(strtolower(strip_tags(urldecode($db->f("title")))), $val) +
substr_count(strtolower(strip_tags(urldecode($db->f("comment")))), $val) +
substr_count(strtolower(strip_tags(urldecode($db->f("content")))), $val);
} // end while
reset($suchliste);
} // end while(next_record)
if(count($hits) > 0) {
//anzahl hits speichern
$anzahlhits = count($hits);
$hits = array_values($hits);
$results = array_values($results);
array_multisort ($results, SORT_DESC, SORT_NUMERIC, $hits, SORT_DESC, SORT_NUMERIC);
} // end if(count hits)
} // end if(num_rows)
//Ausgabe-----------------
/* Start Output buffer */
ob_start();
if(count($hits) > 0) {
$tpl->reset();
$tpl->set('s', 'SUCHTEXT', $suchtext);
$tpl->set('s', 'TREFFER', $anzahlhits);
for($i = 0; $i < count($hits); $i++) {
$tpl->set('d', 'ARTIKELNAME', $results[$i][title]);
$tpl->set('d', 'TARGET', $linktarget);
$tpl->set('d', 'HREF', $results[$i][link]);
$tpl->set('d', 'TEXT', $results[$i][text]);
$tpl->next();
}
$tpl->generate('templates/search_found.html');
} // end if(count hits)
else {
$tpl->reset();
$tpl->set('s', 'SUCHTEXT', $suchtext);
$tpl->generate('templates/search_notfound.html');
} // end else (count hits)
} // end if(suchtext)
/* Read out buffer */
$html = ob_get_contents();
/* Clean buffer */
ob_end_clean();
/* Output buffer-contents */
echo $html;
?>
Hier nochmal die Templatedateien so das die Zusammenfassung komplett ist!
Templatedateien(in /cms/templates kopieren)
search_found.html:
Code:
Code: Alles auswählen
<div>
Suchergebnisse für "<span class="h4">{SUCHTEXT}</span>"
<br>
Anzahl Treffer: <span class="h4">{TREFFER}</span>
</div>
<br>
<!-- BEGIN:BLOCK -->
<div>
<a href="{HREF}" target="{TARGET}" class="h4">{ARTIKELNAME}</a><br>
{TEXT}
</div>
<br>
<!-- END:BLOCK -->
search_notfound.html:
Code:
Code: Alles auswählen
<div>
Es wurden keine mit Ihrer Suchanfrage "<span class="h4">{SUCHTEXT}</span>" übereinstimmenden Dokumente gefunden
</div>