Suche einschränken?

Gesperrt
schmitt197
Beiträge: 90
Registriert: Fr 14. Nov 2003, 17:56
Kontaktdaten:

Suche einschränken?

Beitrag von schmitt197 »

Hi,
ich habe eine Seite, die für 2 versch. Standorte einer Firma angelegt ist. Jeder Standort hat in der Kategorie einen eigenen Ordner und ich möchte, dass bei der Suche in dem einen Standort nur der aktuelle Ordner durchsucht wird. (Ich weiß, dass ich beim Arbeiten mit 2 eigenen Mandanten das Problem nicht gehabt hätte, aber leider habe ich die Seiten schon zu weit aufgebaut, um jetzt alles neu zu machen).

Kann ich das bei der Suche irgendwie einstellen, dass bestimmte Ordner ausgeschlossen werden?

Danke
Thomas
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

welche contenido version ?
welches modul ? gibts nen link dazu ?
*** make your own tools (wishlist :: thx)
schmitt197
Beiträge: 90
Registriert: Fr 14. Nov 2003, 17:56
Kontaktdaten:

Beitrag von schmitt197 »

Sorry:

Version 4.4.4

Hier die Module:

Input:

Code: Alles auswählen

echo "
<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\">
  <tr valign=\"top\">
    <td width=\"202\">Schriftart Link:</td>
    <td><select name=\"CMS_VAR[0]\" size=\"1\">";
    
	if ("CMS_VALUE[0]" != 0) {
		echo "<option value=\"0\">".$lngForm["nothing"]."</option>";
	} else {
		echo "<option value=\"0\" selected>".$lngForm["nothing"]."</option>";
	}
    
	for ($i=1; $i<=50; $i++) {
		if ( $i != "CMS_VALUE[0]" ) {
			echo "<option value=\"$i\">Font $i</option>";
		} else {
			echo "<option value=\"$i\" selected>Font $i</option>";
		}
	}
    
	echo "
	</SELECT></td>
  </tr>  <tr valign=\"top\">
    <td width=\"202\">Schriftart Text:</td>
    <td><select name=\"CMS_VAR[1]\" size=\"1\">";
    
	if ("CMS_VALUE[1]" != 0) {
		echo "<option value=\"0\">".$lngForm["nothing"]."</option>";
	} else {
		echo "<option value=\"0\" selected>".$lngForm["nothing"]."</option>";
	}
	
    for ($i=1; $i<=50; $i++) {
		if ( $i != "CMS_VALUE[1]" ) {
			echo "<option value=\"$i\">Font $i</option>";
		} else {
			echo "<option value=\"$i\" selected>Font $i</option>";
		}
	}
	
    echo "
	</SELECT></td>
  </tr>  <tr valign=\"top\">
    <td width=\"202\">Zusatzangaben: </td>
    <td><INPUT TYPE=\"radio\" NAME=\"CMS_VAR[2]\" VALUE=\"0\" ";
	
    if("CMS_VALUE[2]" == 0) { 
		echo "checked=checked"; 
	}
	echo "> nichts <br>
    <INPUT TYPE=\"radio\" NAME=\"CMS_VAR[2]\" VALUE=\"1\" ";
    
	if("CMS_VALUE[2]" == 1) { 
		echo "checked=checked"; 
	} 
	echo "> Kommentar <br>
    <INPUT TYPE=\"radio\" NAME=\"CMS_VAR[2]\" VALUE=\"2\" ";
    
	if("CMS_VALUE[2]" == 2) { 
		echo "checked=checked"; 
	} 
	echo "> Textausschnitt </td>
  </tr>  <tr valign=\"top\">
    <td width=\"202\">Linkziel: </td>
    <td><INPUT TYPE=\"text\" NAME=\"CMS_VAR[3]\" VALUE=\"CMS_VALUE[3]\"></td>
  </tr>
</table>";

Output:

Code: Alles auswählen

<?php
echo "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"margin: 0px\" height=\"10\">
	<tr>
<form name='suche' method='POST' action='front_content.php?idcat=49'>
<td><input type=\"text\" style=\"width:120px\" name=\"suche\" value=\"$suche\"></td>
                <td><INPUT type=\"image\" src=\"images/finden.gif\" valign=\"bottom\"></td>
</form>
         </tr>
</table>";
?>
Und so wird die Suche auf der Ergebnisseite ausgegeben:

Code: Alles auswählen

<?php
	         echo "<table border=0 cellpadding=0 cellspacing=0>";
	         if($suche){
	         $suche = trim($suche);
	         $suchregexp = "(".str_replace(" ",")|(",$suche).")";
	         $s=ereg_replace("ü", "%FC",strtolower($suche));
	         $s=ereg_replace("ä", "%E4",$s);
	         $s=ereg_replace("ö", "%F6",$s);
	         $suchregexp .= "|$s";
	         $suchliste = explode(" ",strtolower($suche));

	         $sql = "SELECT
	         a.title AS title, a.idart AS idart, a.summary AS comment, a.idartlang AS idartlang,
	         b.idcat AS idcat,
	         c.parentid AS parentid,
	         d.value AS content
	         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')";

	         $db->query($sql);
	         if ($db->num_rows() != 0){
	         for ($i=0; $i<$db->num_rows(); $i++) {
	         $db->next_record();
	         if ($auth->auth["uid"] == "nobody"){
	         $sql2 = "SELECT public FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".$db->f("idcat")."'";
	         $db2 = new DB_Contenido; $db2->query($sql2); $db2->next_record();
	         if($db2->f("public") == 0) continue;
	         };
	         $num = 0 + $db->f("idartlang");
	         $results[$num][link] = "front_content.php?client=$client&lang=$lang&parent=".$db->f("parentid")."&idcat=".$db->f("idcat")."&idart=".$db->f("idart")."";
	         $results[$num][title] = $db->f("title");
	         switch ("CMS_VALUE[2]") {
	         case 0: $results[$num][text] = "";break;
	         case 1: $results[$num][text] = $db->f("comment");break;
	         case 2: $results[$num][text] .= substr(strip_tags(rawurldecode($db->f("content"))),0,100)."...";
	         };
	         for($x=0;$x<count($suchliste);$x++){
	         $hits[$num] += substr_count(strtolower($db->f("title")), $suchliste[$x]) +
	         substr_count(strtolower($db->f("comment")), $suchliste[$x]) +
	         substr_count(strtolower($db->f("content")), $suchliste[$x]);
	         };
	         };
	         if(count($hits) > 0){
	         $hits = array_values($hits);
	         $results = array_values($results);
	         array_multisort ($results, SORT_DESC, SORT_NUMERIC, $hits, SORT_DESC, SORT_NUMERIC);
	         for ($i=0; $i<count($hits); $i++){
	         echo "<tr><td align=left class=inhalt><font size=\"-1\"><a href=\"".$results[$i][link]."\"";

	         echo ">".$results[$i][title]."</a></font>(".$hits[$i]." Treffer)<BR>";
	         echo $results[$i][text]."</span></td></tr>";
	         };
	         } else { echo "<tr><td class='inhalt' align=center>Keine passenden Seiten gefunden</td></tr>"; };
	         } else { echo "<tr><td class='inhalt' align=center>Keine passenden Seiten gefunden</td></tr>"; };
	         };
	         echo "</table>";
	         ?>
Link leider nicht möglich, weil ich lokal entwickle.

Danke
Thomas
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ganz auf die schnelle könntest du das sql query modifizieren
und dezitiert die kategorien angeben die du nicht möchtest

zB
b.idcat = c.idcat AND
b.idcat != '20' AND
c.idclient = '$client' AND

würde die kategorie mit idcat 20 auschließen...
*** make your own tools (wishlist :: thx)
schmitt197
Beiträge: 90
Registriert: Fr 14. Nov 2003, 17:56
Kontaktdaten:

Beitrag von schmitt197 »

Kann ich evtl. auch schnell nen kompletten Kategoriebaum ausblenden? Das würde mir sehr helfen, weil ich meine Seite leider nicht mit 2 Mandanten umgesetzt habe.

Danke
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ähm keine ahnung... ohne größere umbauarbeiten wirds dann nicht gehen...
eventuell die funktion iscatchildof in die suche mitübernehmen...
darin wird überprüft ob eine kategorie zu einem baum gehört...
*** make your own tools (wishlist :: thx)
Gesperrt