Suchmodul auf halchter.com

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Suchmodul auf halchter.com

Beitrag von Halchteranerin » Mi 4. Mai 2005, 15:58

Hallo,

damit ich nicht immer wieder das Modul verschicken muss, poste ich es hier:

VOLLTEXTSUCHE-EINGABE
Beschreibung:

Code: Alles auswählen

/***********************************************
*
* Modulname   :     Volltextsuche - Eingabemodul
* Author          :     unknown
* Created        :     unknown
* Modified       :      04-05-2004
* Version      :     unknown
************************************************/ 
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 width=\"400\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"> 
<tr><td align=\"left\" height=\"21\" valign=\"middle\"> 
<form name='suche' method='GET' action='front_content.php'>
<input type='hidden' name='idcatart' value='378'>
<input type='hidden' name='lang' value='1'>
<input type='hidden' name='client' value='1'>
<span class=\"navigation\">&nbsp;Website durchsuchen:&nbsp;</span><input type=\"text\" size=\"\" class=\"feld\" name=\"suche\" value=\"$suche\"><button name=\"s\" type=\"submit\" value=\"Suchen\" size=\"1\" style=\"width: 60px;height:20px; color: #000080; border:0;background-color:#C0D1E0;font-size:10\">Suchen</button></FORM></td></tr></table>"; 
?>
Achtung: beim Output des Eingabemoduls (oben) muessen die Werte idcatart, lang und client auf die eigene Site angepasst werden!

VOLLTEXTSUCHE-AUSGABE
Beschreibung:

Code: Alles auswählen

/***********************************************
*
* Modulname   :     Volltextsuche - Ausgabemodul
* Author          :     unknown
* Created        :     unknown
* Modified       :      04-05-2004
* Version      :     unknown
************************************************/ 
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 "> Zusammenfassung <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 border=0 cellpadding=0 cellspacing=0><tr>"; 
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); 
$s=ereg_replace("ß", "%DF",$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,50)."..."; 
}; 
for($x=0;$x<count($suchliste);$x++){ 
$treffer[$num] += substr_count(strtolower(urldecode($db->f("title"))), $suchliste[$x]) + 
substr_count(strtolower(urldecode($db->f("comment"))), $suchliste[$x]) + 
substr_count(strtolower(urldecode($db->f("content"))), $suchliste[$x]); 
}; 
}; 
if(count($treffer) > 0){ 
$treffer = array_values($treffer); 
$results = array_values($results); 
array_multisort ($results, SORT_DESC, SORT_NUMERIC, $treffer, SORT_DESC, SORT_NUMERIC); 
for ($i=0; $i<count($treffer); $i++){ 
echo "<tr><td align=left><font size=\"-1\"><a href=\"".$results[$i][link]."\" class='text'"; 
if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";}; 
echo ">".$results[$i][title]."</a></font> <span class='text'>(".$treffer[$i]." Treffer)<BR>"; 
echo $results[$i][text]."</span></td></tr>"; 
}; 
} else { echo "<tr><td class='text' align=center>Keine passenden Seiten gefunden</td></tr>"; }; 
} else { echo "<tr><td class='text' align=center>Keine passenden Seiten gefunden</td></tr>"; }; 
}; 
echo "</table>"; 
?>
Die Eingabe- und Ausgabemodule muessen jeweils einem Container zugewiesen werden.

Gruss
Christa
Zuletzt geändert von Halchteranerin am Do 27. Okt 2005, 21:40, insgesamt 4-mal geändert.

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Mi 4. Mai 2005, 16:41

Was kann das Modul denn im Vergleich zur bisherigen Suche?

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mi 4. Mai 2005, 19:33

Zu WELCHER Suche? Es gibt mehrere Versionen, wo es im Laufe der Zeit auch verschiedene Abwandlungen noch gab, und viele Leute sagen, dass sie nicht mehr durchsteigen, welche Version nun laeuft und welche nicht. Ab und zu fragt jemand nach der Version, die ich bei mir einsetze, weil sie da laeuft, und heute habe ich wieder mal zwei PMs bekommen, von Leuten, die das Modul haben moechten.

Diese Suche gibt's in aehnlicher Form auch hier irgendwo im Forum, ich habe sie nicht selbst geschrieben. Das einzige, was ich gemacht habe, sofern ich mich recht entsinne, ist, dass ich sie probehalber von POST auf GET umgestellt habe, weil einige Leute sagten, dass bei ihnen mit POST die Back-Taste des Browsers nicht funktionierte (es kam eine Meldung, ob die Daten nochmal gesendet werden sollen oder so), das Problem hatte ich aber eigentlich nicht.

Gruss
Christa

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Mi 4. Mai 2005, 20:28

Hallo Christa,
Halchteranerin hat geschrieben:Zu WELCHER Suche?
kannst du bitte noch einen Mini-Kopf in deinen Modulen einfügen. Dann weiss man später auch leichter, worüber geredet wird. Danke

Gruß
Florian

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mi 4. Mai 2005, 20:38

hallo Florian,

bei Gelegenheit. Wobei ich das andererseits doof finde, wenn jemand Fragen zu einem Modul hat und nur den Kopf ohne Link angibt. Das hat alles Vor- und Nachteile. :wink:

Gruss
Christa

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Mi 4. Mai 2005, 21:04

Ok, aber eine Versionsnummer und einen Titel finde ich schon praktisch

Gruß
Florian

jost
Beiträge: 322
Registriert: Mo 10. Jan 2005, 20:12
Kontaktdaten:

Beitrag von jost » Sa 7. Mai 2005, 18:12

Ein "komischer Fehler": Ich wollte das Modul einbinden (hatte schon einmal geklappt), aber wenn ich den Output nun konfigurieren will, erscheint das hier:

Parse error: parse error, unexpected '[' in /home/www/doc/12420/contenido/includes/include.pretplcfg_edit_form.php(131) : eval()'d code on line 20

Hat da jemand eine Idee zu? Ist Contenido 4.4.5 - Es handelt sich um das Volltextsuche-Ausgabe-Skript, das nun Probleme macht.

Das hier sind die Zeilen 130-133 der oben angemahnten Datei:

ob_start();
eval($input);
$modulecode = ob_get_contents();
ob_end_clean();

Leicht verwirrt,
Jost

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Sa 7. Mai 2005, 19:37

du solltest aber auch auf die Zeile 20 schauen :wink:
Viel Erfolg
Florian

jost
Beiträge: 322
Registriert: Mo 10. Jan 2005, 20:12
Kontaktdaten:

Beitrag von jost » Sa 7. Mai 2005, 21:28

Tat ich, selbige ist leer. Ich werde noch wahnsinnig!! Mir ist vollkommen unklar, wieso da nun wieder ein Fehler auftritt.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 8. Mai 2005, 01:54

Du hast in Zeile 20 des Inputs im Modul gesehen? Sicher?

Durch scharfes hinsehen (und abzählen), finde ich da bei der Volltextsuche-Ausgabe:

Code: Alles auswählen

} 
    [/color] 
   echo " 
Genaugenommen steht [/color] in Zeile 20 - und hat da auch nix zu suchen. Müsste man einfach rausnehmen können, würde ich für BBCode halten.

:wink:

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Enay
Beiträge: 22
Registriert: Fr 11. Feb 2005, 03:35
Kontaktdaten:

Beitrag von Enay » Mo 11. Jul 2005, 17:39

hallo

vielleicht kann mir jemand bei diesem anfängerproblem bezüglich der einbindung weiterhelfen.
Achtung: beim Output des Eingabemoduls (oben) muessen die Werte idcatart, lang und client auf die eigene Site angepasst werden!
ich nehme an, dort wird angegeben wo das suchergebnis angezeigt werden soll, also auf welcher seite?
nur woher weiss ich meine werte?

ich habe die beiden module in zwei templates eingebunden. die suche hat im browser nur idcat=51 stehen. wenn ich darauf verweise gehts natürlich nicht.
ebenfalls geht es nicht, wenn ich das suchergebnis-modul in ein weiteres template verpacke, einen artikel anlege (der dann idcat=52 hat) und im eingabemodul darauf verweise.

da hier das letzte post vom mai ist und bis dato keiner nachgefragt hat, wird es wahrscheinlich völlig simpel sein ... :oops:

um das ganze noch komplett zu machen, ist mir nicht klar, was die felder
Schriftart Link, Schrift Text, Zusatzangaben und Linkziel bedeuten.
wieso Schriftart und Text? das wird doch über den CSS geregelt. zumal bei mir die änderung in der modul-konfig keine änderungen in der anzeige ergeben.


gruss
Enay

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mo 11. Jul 2005, 18:01

du brauchst entweder idcat und idart (idcat ist nur die Kategorie, d.h., wenn du zwei Artikel in einer Kategorie hast, koennen die nicht mehr identifiziert werden) ODER die idcatart. Wenn du im Backend in der Kategorie, die den Artikel enthaelt, bist, und mit der Maus ueber den Artikel faehrst, wird dir unten die idcat und idart gezeigt.

Das mit der Formatierung habe ich auch noch nicht kapiert, aber ehrlich gesagt, habe ich mich auch noch nicht gross damit befasst. Und jetzt bin ich gerade dabei, die Suche tabellenfrei zu bekommen ... vielleicht gucke ich mir das nochmal genauer an.

Enay
Beiträge: 22
Registriert: Fr 11. Feb 2005, 03:35
Kontaktdaten:

Beitrag von Enay » Mo 11. Jul 2005, 18:21

danke für die schnell antwort.

wenn ich mit der maus über im backend über den artikel fahre bekomme ich folgendes:
somit würde ich als unter language und idcatart beides male 99 eintragen und den client bei 1 belassen.
was natürlich nicht wirklich funzt. offensichtlich referenziere ich dann auf einen bereits bestehenden artikel, der mir nach dem absenden des suchwortes komplett angezeigt wird.

ich hasse montage.


gruss
Enay

p.s. jetzt hasse ich wirklich montage. danke an Dodger77

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mo 11. Jul 2005, 19:12

Enay hat geschrieben:wenn ich mit der maus über im backend über den artikel fahre bekomme ich folgendes:
somit würde ich als unter language und idcatart beides male 99 eintragen und den client bei 1 belassen.
haeh? nein, idcat=51, idart=99!!! Du solltest nicht die Spaltennamen durcheinander bringen.

Enay
Beiträge: 22
Registriert: Fr 11. Feb 2005, 03:35
Kontaktdaten:

Beitrag von Enay » Mo 11. Jul 2005, 19:19

oh gott, bin ich blind.

:D danke :D

das reicht. ich hab nur 2 stunden geschlafen heute nacht.

den rest guck ich mir an, wenn ich wieder wach bin.

gute n8

gruss
Enay

Gesperrt