Content Management System - CMS : eXV2 
Home
News
Forum
Downloads
Download Module
Sitemap
Partnerseiten
RSS News
Kontakt/Info
Sprache
EnglishFrench
Suchen
Login
Nickname
Passwort

Registrieren?
Passwort?
Navigation
 Home News  Forum Neueste Beiträge  Downloads Download Module eXV² Themes  Weblinks Tutorial Changelog 2.3.1 Jobcenter Gebrauchtmarkt OSMap  Sponsor Kalendersystem Sitemap Partnerseiten RSS News Kontakt/Info Webseiten Wetter
Willkommen im Free Web CMS : eXV² Forum!
  Forenarchiv
     eXV2 Module
  Suchbegriff in Modulen (BB) farbig darstellen

Forum : eXV2 Module

Titel : Suchbegriff in Modulen (BB) farbig darstellen

© 2004-2012 www.exv2.de
http://www.exv2.de

URL dieser Diskussion
http://www.exv2.de/modules/newbb_plus/viewtopic.php?topic_id=457&forum=7


 FrankP :

28.06.2003 10:59
 Hallöle,

ich möchte, dass die Suchbegriffe der Benutzer im Falle des gefunden werden im Forumsbeitrag farbig anders dargestellt werden als der normale Text.
Ich scheitere aber bereits an der Übergabe des Suchterms an die folgeseite von search.php. Wenn ich den Aufruf der Viewtopic.php einfach erweitere um: Code:
<a href='modules/".$module->dirname()."/".$results[$i]['link']."&amp;query=".$query."'>
steht im Link dann Code:
http://www.beautyjunkies.de/modules/newbb/viewtopic.php?topic_id=87&amp;forum=1#777&amp;query=suchbegriff
, und ich befürchte dass alles nach dem #177 nicht mehr sauber interpretiert wird, da auf der aufgerufenen Seite der $HTTP_POST_VARS['query'] nicht initialisiert wurd. Ich habe keine Ahnung, wie ich das $results Array so aufbohren kann, dass der Suchbegriff übergeben wird.

Sollte das aber gehen, graut mir schon jetzt vor dem ereg_replace() in class.forumposts.php auf die $text Variable, Surprised um die Farbcodierung hinzu zu fügen.

Hat denn niemand diese Funktionalität bisher reingehackt? Ich kenn' das aus anderen Boards, und unsere User rufen bereits danach, da will man doch helfen, gelle Wink ?

Also, vielen lieben Dank im voraus für die Hilfe.

bye
Frank

p.s.: Hat jemand Interesse an einem "Modul" über das sich auch nicht registrierte Benutzer für einen Newsletter eintragen lassen können? Ist etwas extrem schlicht gestricktes, und jeder hier wird bestimmt viele Lücken finden, geschweige denn Halfdead und Nobse die über den "Code" die Hände über den Kopf zusammenschlagen werden Wink.

Das Frontend läuft auf unserer Site, und ist aktiv. Wer sich also einträgt nicht über den sehr spezifischen Newsletter aufregen bzw. bitte gleich wieder austragen.

Bei Interesse bündele ich das Paket dann so, wie es sich gehört und stell es hier ein.

[ Geändert von FrankP an 28.06.2003 10:00 ]

 FrankP :

29.06.2003 10:56
 Also, für das Forum klappt es nun.

Wer am Hack interessiert ist:
Code:

search.inc.php [newbb/include]

change:
for ($i=1; $i<$count; $i++) {
$sql .= " $andor ";
$sql .= "(p.subject LIKE '%$queryarray[$i]%' OR p.post_text LIKE '%$queryarray[$i]%')";
}

into
for ($i=1; $i<$count; $i++) {
$sql .= " $andor ";
$sql .= "(p.subject LIKE '%$queryarray[$i]%' OR p.post_text LIKE '%$queryarray[$i]%')";
$searchterm .= " ";
$searchterm .= $queryarray[$i];
}


change:
$ret[$i]['link'] = "viewtopic.php?topic_id=".$myrow['topic_id']."&amp;forum=".$myrow['forum_id']."#".$myrow['post_id']."";

into:
$ret[$i]['link'] = "viewtopic.php?query=".$searchterm."&amp;topic_id=".$myrow['topic_id']."&amp;forum=".$myrow['forum_id']."#".$myrow['post_id']."";


viewtopic.php:

insert before:
$forum = intval($forum);
$topic_id = intval($topic_id);


the following:
// if GET/POST is set, set Query for Searchresult highlighting..
if ( isset($HTTP_POST_VARS['query']) ) {
$query = $HTTP_POST_VARS['query'];
} elseif ( isset($HTTP_GET_VARS['query']) ) {
$query = $HTTP_GET_VARS['query'];
}


change:
$obj->showPost($viewmode, $order, $can_post, $forumdata['topic_status'], $forumdata['allow_sig'], $adminview, $row_color, $start);

into:
$obj->showPost($viewmode, $order, $can_post, $forumdata['topic_status'], $forumdata['allow_sig'], $adminview, $row_color, $start, $query);



class.forumposts.php

change:
function showPost($viewmode, $order, $can_post, $topic_status, $allow_sig, $adminview=0, $color_num=1, $start)

into:
function showPost($viewmode, $order, $can_post, $topic_status, $allow_sig, $adminview=0, $color_num=1, $start, $searchterm)


after:
$text = $this->text();


insert:
if (!empty($searchterm)) {
//if more than one term, put in array
$searchterms = explode(" ", $searchterm);
// count terms in array
$numterms = count($searchterms);
//Now, for every count start replace
$x=0;
for ($x=0;$x<$numterms;$x++){
$search = $searchterms[$x];
$replace = "<font color='FF0000'>".$search."</font>";
$text= str_replace($search, $replace, $text);
//Because highlighting is case sensitive, iff all lower convert 1st to upper
$search = ucfirst($searchterms[$x]);
$replace = "<font color='FF0000'>".$search."</font>";
$text= str_replace($search, $replace, $text);
}
}

That's it.


Ist garantiert nicht ganz sauber, vor allem bin ich mir sicher dass str_replace eigentlich nicht zweimal aufgerufen werden muss, aber str_ireplace gibt's erst ab PHP5, und eine Funktion die ich dafür gefunden habe, wandelt einfach alles in lower case um.

Hauptsache für mich: Es funzt! Very Happy

bye
Frank

 Nobse :

29.06.2003 20:27
 Na also geht doch.
Weiter so und das erste Modul ist nicht mehr weit. Very Happy
Partnerseiten
http://service.bama-webdesign.de/

Vote für eXV2
php
Kontakt/Info
  Kontakt
  Impressum
  Link zu uns
  AGB
  Datenschutzhinweis
Downloads
  eXV² Core
  Core Sprachfiles
eXV² Filecenter
  Downloads
  Download Module
  eXV² Themes
  Multilanguage Module
  Sprachfiles eXV² Module
eXV² Support
  France