Suche auf das Feld Schlüsselwörter begrenzen

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
abo
Posts: 28
Joined: Sat 5. Aug 2006, 12:16

Suche auf das Feld Schlüsselwörter begrenzen

Post by abo »

Hallo zusammen,

ich habe eine Seitenstruktur aufgebaut, in der ich in bestimmten Bereich für die Suche definiert habe. Läßt sich ja alles einstellen und klappt prima. Jetzt möchte ich aber erreichen, daß nicht alle Stellen des ganzen Artikels durchsucht werden, sondern nur das Feld "Schlüsselwörter" in die Suche mit einfließt. Ausgegeben werden soll dann aber wieder der ganze Artikel.
Warum ich das tun möchte? Ich möchte auf diese Weise eine Suche realisieren, die ausschliesslich auf Postleitzahlen (sollen im Feld schlüsselwörter eingetragen werden) basiert. Die einzelnen Artikel sind wie folgt aufgebaut:

ARTIKELTITEL: Mustermann, Max
FELD SUMMARY: Musterstrasse 123[BR] 59063 Hamm[BR]Tel.: 01234 56789[BR]Fax: 01234 56788
FELD SCHLÜSSELWÖRTER: 59063, 59065, 59067, 59069, 59071, 59073, 59075, 59077

Jetzt tippe ich z.B. "590" in das Suchformular und erhalte folgendes Ergebnis:

Max Mustermann
Musterstrasse 123
59063 Hamm
Tel.: 01234 56789
Fax: 01234 56788

Ich möchte hiermit eben vermeiden, daß z.b. "590" in einer Telefon- oder Faxnummer vorkommt und somit das Ergbnis verfälschen würde. Habe mir schon die Datei include/inc_front/content/cnt13.article.inc.php angesehen. Leider habe ich keine Idee wie hier vorzugehen ist.

Bin für jeden Tip dankbar!

Andreas
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by juergen »

Hallo

wenn du wirklich nur in den keywords suchen möchtest, ist es besser das über ein kleines replacement zu machen... keine große aktion.
abo
Posts: 28
Joined: Sat 5. Aug 2006, 12:16

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by abo »

DF6IH wrote:wenn du wirklich nur in den keywords suchen möchtest, ist es besser das über ein kleines replacement zu machen... keine große aktion.
Verstehe nicht, was Du damit meinst. Was soll ich wo ersetzen? Habe leider keine Ahnung wo ich ansetzen soll. Meinst Du Veränderungen in der cnt13.article.inc.php ?
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by juergen »

nein ... mal kurz umrissen:

Änderung auf lauffähige Version am 27.02.08

Ich habe mir mal etwas ähnliches gebaut und habe es ein wenig auf dich umgestrickt

im Template;

Code: Select all

    Suche:

  <form action="index.php?suche" method="post">
  <input type="text" size="50" name="Inhalt">
    <input type="submit" value="OK"> 



als HTML Teil im Contentpart des Alias "suche":

Code: Select all

[PHP]
echo '{SUHE_K:'.$_POST["Inhalt"].'}';
[/PHP]
*** hier kann man noch eine Abfrage einbauen, falls $_POST["Inhalt"] leer übergeben wird, was nicht passieren sollte, da das Tag dann nicht gerendert wird..

im Veruzeichnis : template/inc_script/frontend_render/keyword.php

Code: Select all

<?php
if(!empty($content["all"]) && !(strpos($content["all"],'{SUCHE_K')===false)) {
$content["all"] = preg_replace('/\{SUCHE_K:(.+?)\}/ei', "suchekeyword(\"$1\")", $content["all"]);
}
function suchekeyword($key) {
	
	
	// Hackers little washing mashine
	$res=clean_slweg($res);
	$res=clean_replacement_tags($res);
	//$res=cleanUpSpecialHtmlEntities($res);

	
	   
     $res = mysql_query("SELECT * FROM phpwcms_article WHERE article_keyword LIKE '%".$key."%' ");
if (mysql_num_rows($res)>0){
	while ($row = mysql_fetch_object($res)) {
 
               //$gefunden.=$row->article_title oder was auch immer da hin soll ..LInk auf Artikel: [ID.row->rticle_id]...
                   $finden='[ID '.$row->article_id.']'.$row->article_title.'[/ID] <br />';       
                   $gefunden.=mySmallParser($finden);
                
}
}
else {$gefunden.='Keine Such - Ergebnisse !';}

return $gefunden;
}
function mySmallParser($string) {
	
	// internal Link to article ID
	$search[1]		= '/\[ID (\d+)\](.*?)\[\/ID\]/';
	$replace[1]		= '<a href="index.php?aid=$1" class="phpwcmsIntLink">$2</a>';

    $search[2]		= '/\[BR\]/i';			$replace[18]	= '<br />';
		
	$string = preg_replace($search, $replace, $string);
	$string = str_replace('&#92;'', ''', $string);
	$string = str_replace('&quot;', '"', $string);
	
	return $string;
	}
?>





Aufruf: {SUCHE_K:variable} wie oben beschrieben mit Übergabe der Suchvariable

Resultat: Ausgabe von internen links auf die passenden Artikel.. script läuft...
Last edited by juergen on Wed 27. Feb 2008, 15:30, edited 1 time in total.
abo
Posts: 28
Joined: Sat 5. Aug 2006, 12:16

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by abo »

Danke für deine Hilfe! Leider funktioniert es noch nicht. Sobald ich das Skript "meinesuche.php" in den Ordner template/inc_script/frontend_render lege, läuft die ganze Site nicht mehr. Sie bleibt einfach weiß.

Liegt es daran, daß ich mit der Version 1.3.3 unterwegs bin oder gibt es noch kleine Bugs im code, die ich gerade auch nicht sehe?
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by flip-flop »

Prüfe das Snippet mal auf syntaktische Fehler z.B. retrurn $gefunden; usw.
Das ganze ist ein Richtungsweiser, keine fertige Geschichte.

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by juergen »

so ein wenig Schmalz kannst du ja reinstecken, der mögliche Schaden ist jedenfalls immer wieder durch löschen der Dateien zu korrigieren, wenn du einen oder mehrere contentparts änderst ....ist das komplizierter
abo
Posts: 28
Joined: Sat 5. Aug 2006, 12:16

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by abo »

Danke nochmal für Deine Hilfe. Bin halt kein Programmierer und somit nicht wirklich in der Lage, das Geschriebene umzusetzen, weil ich einfach keine Ahnung von php habe. Die syntaktischen Fehler sind mir auch aufgefallen und ich habe sie korrigiert. Ich kann Deine Lösung nicht umsetzen bzw. weiterentwickeln und muß sie somit leider wieder verwerfen.
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by juergen »

hmmm .. reichen dir die Artikelschlüsselwörter ? Das würde jetzt dann einigermaßen funktionieren, ein wenig Sicherheit eingebaut ... einen mini link Parser ..+g*

:idea: :arrow: Ich habe zu viel zeit :mrgreen:

http://df6ih.de

Ich habe nur "Test" und "Hallo" als keywörter drinnen
abo
Posts: 28
Joined: Sat 5. Aug 2006, 12:16

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by abo »

DF6IH wrote:hmmm .. reichen dir die Artikelschlüsselwörter ?
Das ist völlig ausreichend. Wie schon geschrieben soll lediglich erreicht werden, daß nur nach Postleitzahlen gesucht werden kann, die ich in das Feld "Artikelschlüsselwörter" eintragen würde. Ein link auf die ausgegebenen Artikel ist nicht nötig, weil das Suchergebnis nur in Listenform dargestellt werden soll. Immer 6 Adressen pro Seite. Über die Paginierung navigiert man dann weiter zur nächsten Ergebnisseite.
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by juergen »

Das erfodert dann aber einen anderen / besseren Ansatz ... Ich würde dir raten die Adressen dann nicht in Artikeln zu speichern, weil dafür sind die zunächst nicht unbeding gedacht... und da dich im Bereich von Datenbanken bewegst würde ich dir raten deine Adressen auch in eine sperate tabelle zu packen.

Die Paginierung liefert sql fast ohne extra Aufwand mit..
abo
Posts: 28
Joined: Sat 5. Aug 2006, 12:16

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by abo »

DF6IH wrote:Das erfodert dann aber einen anderen / besseren Ansatz ... Ich würde dir raten die Adressen dann nicht in Artikeln zu speichern, weil dafür sind die zunächst nicht unbeding gedacht... und da dich im Bereich von Datenbanken bewegst würde ich dir raten deine Adressen auch in eine sperate tabelle zu packen.
Zu spät :-(

Die über 500 Adressen sind bereits erfaßt und stehen schon jeweils in einem Artikel...
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by juergen »

LOL

Und WO stehen die da ? Im Teaser Bereich, also im ersten Teil .. ?

Zu spät ist so etwas nie, möglicherweise lassen die Adressen sich einfach ex- und reimportieren...
abo
Posts: 28
Joined: Sat 5. Aug 2006, 12:16

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by abo »

DF6IH wrote:LOL

Und WO stehen die da ? Im Teaser Bereich, also im ersten Teil .. ?
Feld ARTIKELTITEL: Mustermann, Max
Feld SUMMARY: Musterstrasse 123[BR] 59063 Hamm[BR]Tel.: 01234 56789[BR]Fax: 01234 56788
Feld SCHLÜSSELWÖRTER: 59063, 59065, 59067, 59069, 59071, 59073, 59075, 59077

Jetzt tippe ich z.B. "590" in das Suchformular und erhalte folgendes Ergebnis:

Max Mustermann
Musterstrasse 123
59063 Hamm
Tel.: 01234 56789
Fax: 01234 56788
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Suche auf das Feld Schlüsselwörter begrenzen

Post by juergen »

Mit Kanonen auf Spatzen :D

da muss der Parser um [BR] erweitert werden .. müsste funktionieren... ist dann aber keine allgemeine lösung für keywords.. die will ich dann oben noch ausstauschen...

Das auswechseln von Links auf Anzeige ist kein Problem..
Post Reply