timo, von welcher Einstellung redest du? emergence und ich kennen keine, darueber hatten wir uns weiter oben auch unterhalten. Ich habe gerade nochmal nachgeschaut, aber ich kann keine Einstellung damit in Zusammenhang bringen.timo hat geschrieben:und zwar je nach Einstellung des Browsers.
Suche funktionierende Suche
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
Ich brauche mal wieder etwas Hilfestellung.
Ich habe bei mir folgendes Suchmodul implementiert und Post auf get umgestellt, aber trotzdem funktioniert die Suche (noch) nicht, es wird immer nur die Startseite aufgerufen. Ich habe zwar verstanden, dass noch etwas an den input-Felder geändert werden muss, weiss aber nicht was genau.
Das ist der verwendete Code inkl. der Änderung von Post auf Get:
INPUT:
OUTPUT:
search_found.html (kopieren nach "template"):
search_notfound.html :
Ich habe bei mir folgendes Suchmodul implementiert und Post auf get umgestellt, aber trotzdem funktioniert die Suche (noch) nicht, es wird immer nur die Startseite aufgerufen. Ich habe zwar verstanden, dass noch etwas an den input-Felder geändert werden muss, weiss aber nicht was genau.
Das ist der verwendete Code inkl. der Änderung von Post auf Get:
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>
<?
OUTPUT:
Code: Alles auswählen
<?php
//$linkziel = "front_content.php?idcat=51";
$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" action="<?= $linkziel ?>" method="get">
<div><span style="font-size: 15px">Erneut suchen: </span>
<input name="suchtext" type="text" size="20" value="<?= $suchtext ?>" />
<input name="submit" type="submit" value="Go" /></div><br /><br />
</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] = nl2br($db->f("comment"));
break;
case 2:
$results[$num][text] = capiStrTrimSentence(strip_tags(urldecode($db->f("content")), "<br /><br/><br />"), $extratextLength) . "...";
$results[$num][text] = nl2br($results[$num][text]);
break;
} // end switch
// unnötige Zeilenumbrüche entfernen
$results[$num][text] = preg_replace("/(?s)^(\<br(.?)(\/?)\>(\\r\\n)?(\ |\040)*)+/", "", $results[$num][text]);
$results[$num][text] = preg_replace("/(?s)(\<br(.?)(\/?)\>(\\r\\n)?(\ |\040)*)+/", "<br />", $results[$num][text]);
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;
?>
search_found.html (kopieren nach "template"):
Code: Alles auswählen
<div>
Suchergebnisse für "<strong>{SUCHTEXT}</strong>"
<br />
Anzahl Treffer: <strong>{TREFFER}</strong>
</div>
<br />
<!-- BEGIN:BLOCK -->
<div>
<a href="{HREF}" target="{TARGET}"><strong>{ARTIKELNAME}</strong></a><br />
{TEXT}
</div>
<br />
<!-- END:BLOCK -->
search_notfound.html :
Code: Alles auswählen
<div class="text">
Es wurden keine mit Ihrer Suchanfrage "<strong>{SUCHTEXT}</strong>" übereinstimmenden Dokumente gefunden
</div>
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
na ja, stellt sich die Frage, was du genau geaendert hast. Denn die weiteren Aenderungen sind davon abhaengig. Bei mir habe ich
in
geaendert.
Mein Angebot mit der von mir eingesetzten Suche steht uebrigens immer noch. Es gibt nur zwei Module, fuer Ein- und Ausgabe (jeweils mit Ein- und Ausgabe), dafuer braucht man keine zusaetzlichen Dateien (das finde ich persoenlich immer so unuebersichtlich, denn es ist mir mehr als einmal passiert, dass ich ein Modul auf einer anderer Site einsetzen wollte, und da stellte sich heraus, dass ich vergessen habe, die eine oder andere zugehoerige Datei zu kopieren).
Code: Alles auswählen
<form name='suche' method='POST' action='front_content.php?idcatart=254&lang=1&client=1'>
Code: Alles auswählen
<form name='suche' method='GET' action='front_content.php'>
<input type='hidden' name='idcatart' value='254'>
<input type='hidden' name='lang' value='1'>
<input type='hidden' name='client' value='1'>
Mein Angebot mit der von mir eingesetzten Suche steht uebrigens immer noch. Es gibt nur zwei Module, fuer Ein- und Ausgabe (jeweils mit Ein- und Ausgabe), dafuer braucht man keine zusaetzlichen Dateien (das finde ich persoenlich immer so unuebersichtlich, denn es ist mir mehr als einmal passiert, dass ich ein Modul auf einer anderer Site einsetzen wollte, und da stellte sich heraus, dass ich vergessen habe, die eine oder andere zugehoerige Datei zu kopieren).
Danke, das wars. Ich hatte zuerst idcat und idcatart vewechselt, darum ging es bei mir nicht... ich merke ich muss noch viel lernen Danke!
Bei deinem Suchmodul wird nur der Titel ausgegeben oder kann man das einstellen? Mir wäre es auch lieber ohne extra Dateien, aber ich würde eben gerne auch den Untertitel angezeigt bekommen.
Bei deinem Suchmodul wird nur der Titel ausgegeben oder kann man das einstellen? Mir wäre es auch lieber ohne extra Dateien, aber ich würde eben gerne auch den Untertitel angezeigt bekommen.
So hier nun die Lösung
Hier das Template für die Sucheingabe
Das Modul Sucheingabe dann so :
OUTPUT
funkzt wunderbar !!
Hoffe Euch geholfen zu haben
Code: Alles auswählen
<div id="searchbox">
<form method="get" action="{SEARCH_URL}" style="padding:0;margin:0;" name="formsearch" id="formsearch">
<input type="hidden" name="idcat" value="{ZIELSEITE}">
<input type="hidden" name="lang" value="1">
<input type="hidden" name="client" value="1">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="images/blank.gif" width="70" height="1" border="0"/></td>
<td><img src="images/blank.gif" width="73" height="1" border="0"/></td>
<td><img src="images/blank.gif" width="1" height="1" border="0"/></td>
</tr>
<tr>
<td width="20" align="right">
<label for="searchterm" class="label_searchbox">{SEARCH_TITLE}</label></td>
<td><input type="text" name="searchterm" id="searchterm" value="" class="input_searchbox"/></td>
<td><a href="javascript:document.forms['formsearch'].submit();" style="color: #9d9ea2;">{SEARCH_START}</a> <a href="javascript:document.forms['formsearch'].submit();"><img src="images/navi_pfeil_rechts.gif" alt="{SEARCH_TITLE}" title="{SEARCH_TITLE}" border="0"/></a></td>
</tr>
</table>
</form>
</div>
Das Modul Sucheingabe dann so :
OUTPUT
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Sucheingabe
* Author(s) : Andreas Lindner
* Copyright : Contenido - four for business, Andreas Lindner
* Created : 09.08.2005
************************************************/
#Includes
cInclude('classes', 'class.template.php');
#Settings
$template = 'sucheingabe.html';
$cApiClient = new cApiClient($client);
$selected = $cApiClient->getProperty("search","resultpage");
if ( !is_object($tpl) ) {
$tpl = new Template;
}
$tpl->reset();
//$url = $sess->url("front_content.php?idcat=".$selected);
//$url = $sess->url("front_content.php);
if($_POST['searchterm']!=''){
$searchterm = $_POST['searchterm'];
}else{
$searchterm = $_GET['searchterm'];
}
$tpl->set('s', 'SEARCH_TITLE', mi18n("Suche"));
$tpl->set('s', 'SEARCH_URL', $url);
$tpl->set('s', 'SEARCH_START', mi18n("Go"));
$tpl->set('s', 'ZIELSEITE', $selected);
$tpl->generate('templates/'.$template);
?>
Hoffe Euch geholfen zu haben