Seite 3 von 5

Verfasst: Do 10. Feb 2005, 10:36
von swelpot
Versuchs mal mit der Zeile

Code: Alles auswählen

cInclude("classes", "class.template.php");
vor der Zeile

Code: Alles auswählen

$tpl = new Template;

Verfasst: Do 10. Feb 2005, 10:48
von Eriador
ergibt wieder einen error bei der Suche,
nach dem Modul wird aber schonmal alles wieder angezeigt :)

Verfasst: Do 10. Feb 2005, 10:53
von swelpot
was besagt der "error" den konkret?

Verfasst: Do 10. Feb 2005, 10:55
von Eriador
error=1
Es wird einfach die Startseite angezeigt

Verfasst: Do 10. Feb 2005, 10:59
von swelpot
dann leere doch nochmal den errorlog, führe einmal die suche aus und poste nochmal den neuen errorlog-inhalt.
sonst wäre ich dann auch am ende...

Verfasst: Do 10. Feb 2005, 11:14
von Eriador
[10-Feb-2005 11:07:08] Invalid SQL: SELECT level FROM WHERE idcat=1<br><br>
[10-Feb-2005 11:07:08] next_record called with no query pending.

Verfasst: Do 10. Feb 2005, 11:24
von swelpot
ich denke, dass komme aus einem anderen modul...
denn auf ein feld "level" wird in der suche in keiner sql-abfrage zugegriffen...

Verfasst: Do 10. Feb 2005, 12:18
von Eriador
Soll ich dir mal den Link zur Seite geben ?

Verfasst: Do 10. Feb 2005, 12:31
von swelpot
kannst du gerne machen.
wird aber vermutlich nicht viel bringen...
schau dir doch mal alle modul-outputs an und suche nach einem sql-statement mit "select level", wenn du das hast kannst du es ja mal posten

Re: Rücksprung auf die Suchergebnisse klappt nicht

Verfasst: Mo 21. Mär 2005, 10:48
von m2Designer
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
Ich habe das gleiche Problem hat jemand ein Lösung dazu? :?

Verfasst: Mo 21. Mär 2005, 10:53
von Cyclist
Das Problem hatte ich auch. Hier gibt es die Lösung

Verfasst: Mo 21. Mär 2005, 11:23
von m2Designer
Cyclist hat geschrieben:Das Problem hatte ich auch. Hier gibt es die Lösung
/cheer :D Danke für die schnelle Antwort hat wunderbar geklappt!

Problem mit Volltextsuche und W3concepts.form.v1

Verfasst: Mo 21. Mär 2005, 13:20
von AlexG
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:

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

Verfasst: Mo 21. Mär 2005, 13:32
von emergence
m2Designer hat geschrieben:
Cyclist hat geschrieben:Das Problem hatte ich auch. Hier gibt es die Lösung
/cheer :D Danke für die schnelle Antwort hat wunderbar geklappt!
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...

Verfasst: Mo 21. Mär 2005, 13:52
von m2Designer
Klar - also hier der 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&nbsp;</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>
Modul Volltextsuche:

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=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&nbsp;</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; 
?> 
Nur IDCAT und IDCATART ändern und fedisch :D


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>