Suchausgabe inclusive Pfad der Keywords

Gesperrt
peanut
Beiträge: 247
Registriert: Do 25. Nov 2004, 19:34
Kontaktdaten:

Suchausgabe inclusive Pfad der Keywords

Beitrag von peanut »

Hallo zusammen

ich hab nun alles hier gelesen was es mit der bzw. über die Suche gibt aber leider hab ich das nicht gefunden.

Und zwar bräuchte ich die Suche so das es die eingegebenen Keywords im Browser anzeigt bei der Suchausgabe so wie bei der alten Version.

Ich nutze diesen Ausgabecode:

Code: Alles auswählen

<?php
/***********************************************
* Suchausgabe Output
*
* Author      :     Willi Man
* Copyright   :     four for business AG
* Created     :     05-04-2004
* Modified    :     12-07-2005, Andreas Lindner
************************************************/

#System properties in use:
#Type: searchrange, Name: include
#Contains comma-separated list of cats to be included into search (sub-cats are included automatically)

#Logical combination of search terms with AND or OR

#Includes
cInclude('classes', 'class.search.php');
cInclude('classes', 'class.artspec.php');
cInclude('classes', 'class.template.php');
cInclude('includes', 'functions.api.string.php');
cInclude("frontend", "includes/functions.navigation.php");
cInclude('classes', 'class.article.php');

#Initiliaze template object
if (!is_object($tpl)) {
   $tpl = new Template;
}
$tpl->reset();

#Settings
$oArticleProp = new Article_Property(& $db, & $cfg);
$iArtspecReference = 2;

$cApiClient = new cApiClient($client);
$sSearchRange = $cApiClient->getProperty('searchrange', 'include');
$aSearchRange = explode(',', $sSearchRange);

#Multilingual settings
$sYourSearchFor = mi18n("Ihre Suche nach");
$sMore = mi18n("weiter");

#Get search term and pre-process it
if (isset ($_GET['searchterm'])) {
   $searchterm = urldecode(strip_tags(htmlentities(stripslashes($_GET['searchterm']))));
}
elseif (isset ($_POST['searchterm'])) {
   $searchterm = urldecode(strip_tags(htmlentities(stripslashes($_POST['searchterm']))));
}
$searchterm = str_replace(' + ', ' AND ', $searchterm);
$searchterm = str_replace(' - ', ' NOT ', $searchterm);
$searchterm_display = $searchterm;

#Get all article specs
$sql = "SELECT
      idartspec, artspec
   FROM
      ".$cfg['tab']['art_spec']."
   WHERE
      client=$client AND
      lang=$lang AND
      online=1";

$db->query($sql);
$rows = $db->num_rows();
$aArtspecOnline = array ();
$aArtSpecs = array ();
$c = 1;
$d = 1;
$e = 1;
while ($db->next_record()) {
   $aArtSpecs[] = $db->f('idartspec');
}
$aArtSpecs[] = 0;

$action = $sess->url('front_content.php');

if (strlen(trim($searchterm)) > 0) {

   #Parse search term and set search options
   $searchterm = html_entity_decode($searchterm);

   if (stristr($searchterm, ' or ') === FALSE) {
      $combine = 'and';
   } else {
      $combine = 'or';
   }
   $searchterm = str_replace(' and ', ' ', strtolower($searchterm));
   $searchterm = str_replace(' or ', ' ', strtolower($searchterm));

      $options = array ('db' => 'regexp', // use db function regexp
      'combine' => $combine, // combine searchterms with and
      'exclude' => false, // => searchrange specified in 'cat_tree', 'categories' and 'articles' is excluded, otherwise included (exclusive)
      'cat_tree' => $aSearchRange, // searchrange
      'artspecs' => $aArtSpecs, // array of article specifications => search only articles with these artspecs
   'protected' => true); // => do not search articles or articles in categories which are offline or protected

   $search = new Search($options);

   $cms_options = array ("head", "html", "htmlhead", "htmltext", "text"); // search only in these cms-types
   $search->setCmsOptions($cms_options);

   #Execute search
   $aSearchResults = $search->searchIndex($searchterm, '');

   #Build results page
   if (count($aSearchResults) > 0) {
      $tpl->set('s', 'result_page', mi18n("Ergebnis-Seite").':');

      #Build meessage
      $message = $sYourSearchFor." '".$searchterm_display."' ".mi18n("hat $$$ Treffer ergeben").":";
      $message = str_replace('$$$', count($aSearchResults), $message);
      $tpl->set('s', 'MESSAGE', $message);

      #Number of results per page
      $number_of_results = 10;
      $oSearchResults = new SearchResult($aSearchResults, $number_of_results);

      $num_res = $oSearchResults->getNumberOfResults() + $pdf_count;
      $num_pages = $oSearchResults->getNumberOfPages();
      $oSearchResults->setReplacement('<strong>', '</strong>'); // html-tags to emphasize the located searchterms

      #Get current result page
      if (isset ($_GET['page']) AND is_numeric($_GET['page']) AND $_GET['page'] > 0) {
         $page = $_GET['page'];
         $res_page = $oSearchResults->getSearchResultPage($page);
      } else {
         $page = 1;
         $res_page = $oSearchResults->getSearchResultPage($page);
      }

      #Build links to other result pages
      for ($i = 1; $i <= $num_pages; $i ++) {
         $nextlink = $sess->url('front_content.php?idcat='.$idcat.'&idart='.$idart.'&searchterm='.$searchterm_display.'&page='.$i.$sArtSpecs);
         if ($i == $page) {
            $nextlinks .= '<nobr>&nbsp<strong>'.$i.'</strong>&nbsp;</nobr>';
         } else {
            $nextlinks .= '<nobr>&nbsp;<a href="'.$nextlink.'" title="'.$i.'. '.mi18n("Ergebnisseite anzeigen").'">'.$i.'</a>&nbsp;</nobr>';
         }
      }
      $tpl->set('s', 'PAGES', $nextlinks);

      #Build link to next result page
      if ($page < $num_pages) {
         $n = $page +1;
         $next = $sess->url('front_content.php?idcat='.$idcat.'&idart='.$idart.'&searchterm='.$searchterm.'&page='.$n.$sArtSpecs);
         $nextpage .= '&nbsp;<a href="'.$next.'" title="'.mi18n("nächste Ergebnisseite anzeigen").'">'.mi18n("vor").' ></a>';
         $tpl->set('s', 'NEXT', $nextpage);
      } else {
         $tpl->set('s', 'NEXT', '');
      }

      #Build link to previous result page
      if ($page > 1) {
         $p = $page -1;
         //$pre = $sess->url('index-c-'.$idcat.'-'.$p.'-0.html');
         $pre = $sess->url('front_content.php?idcat='.$idcat.'&idart='.$idart.'&searchterm='.$searchterm.'&page='.$p.$sArtSpecs);
         $prevpage .= '<a href="'.$pre.'" title="'.mi18n("vorherige Ergebnisseite anzeigen").'">< '.mi18n("zurück").'</a>&nbsp;';
         $tpl->set('s', 'PREV', $prevpage);
      } else {
         $tpl->set('s', 'PREV', '');
      }

      if (count($res_page) > 0) {
         $i = 1;
         #Build single search result on result page
         foreach ($res_page as $key => $val) {
            $num = $i + (($page -1) * $number_of_results);
            $oArt = new Article($key, $client, $lang);
            #Get publishing date of article
            $pub_system = $oArt->getField('published');
            $pub_user = trim(strip_tags($oArt->getContent('HEAD', 90)));
            if ($pub_user != '') {
               $show_pub_date = "[".$pub_user."]";
            } else {
               $show_pub_date = '';
               if ($pub_system[8] != '0') {
                  $show_pub_date .= $pub_system[8];
               }
               $show_pub_date .= $pub_system[9].'.';
               if ($pub_system[5] != '0') {
                  $show_pub_date .= $pub_system[5];
               }
               $show_pub_date .= $pub_system[6].".".$pub_system[0].$pub_system[1].$pub_system[2].$pub_system[3]."]";
               $show_pub_date = "[".$show_pub_date;
            }
         
            #Get text and headline of current article
            $iCurrentArtSpec = $oArticleProp->getArticleSpecification($key, $lang);
            $aHeadline = $oSearchResults->getSearchContent($key, 'HTMLHEAD', 1);
            $aSubheadline = $oSearchResults->getSearchContent($key, 'HTMLHEAD', 2);
            $text = $oSearchResults->getSearchContent($key, 'HTML', 1);
            $text = capiStrTrimAfterWord($text[0], 200);
            $headline = capiStrTrimAfterWord($aHeadline[0], 200); # conflict with capiStrTrimAfterWord and setReplacement('<strong>', '</strong>')
            $subheadline = capiStrTrimAfterWord($aSubheadline[0], 200);

            $cat_id = $oSearchResults->getArtCat($key);
            $sCatName = getCategoryName($cat_id, & $db);
            $similarity = $oSearchResults->getSimilarity($key);

            ob_start();
            printf("%.0f", $similarity);
            $similarity = ob_get_contents();
            ob_end_clean();

            #Send output to template
            $href = $sess->url("front_content.php?idcat=$cat_id&idart=$key");
            $tpl->set('d', 'more', $sMore);
            $tpl->set('d', 'HREF', $href);
            $tpl->set('d', 'TITLE', mi18n("Link zu Suchergebnis").' '.$i);
            $tpl->set('d', 'NUM', $num);
            $tpl->set('d', 'CATNAME', $headline);
            $tpl->set('d', 'HEADLINE', $text);
            $tpl->set('d', 'SUBHEADLINE', $subheadline);
            $tpl->set('d', 'SIMILARITY', $similarity);
            $tpl->set('d', 'TARGET', '_self');
            $tpl->set('d', 'PUB_DATE', $show_pub_date);
            $tpl->next();
            $i ++;

         }
         $tpl->generate('templates/suchausgabe.html');
      }
   } else {
      #No results
      $tpl->set('s', 'MESSAGE', $sYourSearchFor." '".$searchterm."' ".mi18n("hat leider keine Treffer ergeben").".");
      $tpl->set('s', 'NEXT', '');
      $tpl->set('s', 'PREV', '');
      $tpl->set('s', 'PAGES', '');
      $tpl->set('s', 'result_page', '');
      $tpl->generate('templates/suchausgabe.html');
   }

}

class Article_Property {
   var $globalConfig;
   var $oDBInstance;

   /**
    * Constructor
    * Hint: Call constructor with Article_Property(&$db, &$cfg);
    * @param  oDBInstance instance of class DB_Contenido
    * @param  globalConfig
    */
   function Article_Property($oDBInstance, $globalConfig) {
      $this->globalConfig = $globalConfig;
      $this->oDBInstance = $oDBInstance;
   }

   /**
    * Get specification of an article
    *
    * @param     $iArticleId
    * @return  id of article specification
    */
   function getArticleSpecification($iArticleId, $iLangId) {

      $sqlString = "   
                 SELECT
                     artspec
                  FROM
                     ".$this->globalConfig['tab']['art_lang']."
                  WHERE
                     idart = '".$iArticleId."' AND
                  idlang = '".$iLangId."'
                  ";

      #echo "<pre>$sqlString</pre>";
      $this->oDBInstance->query($sqlString);

      if ($this->oDBInstance->next_record()) {
         return $this->oDBInstance->f('artspec');
      } else {
         return false;
      }
   }
}
?>




Danke
Gruss
Peanut

du liest nie ein Buch und weisst weise der Bildung auszuweichen ....
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Suchausgabe inclusive Pfad der Keywords

Beitrag von emergence »

peanut hat geschrieben:Und zwar bräuchte ich die Suche so das es die eingegebenen Keywords im Browser anzeigt bei der Suchausgabe so wie bei der alten Version.
heisst was ?
*** make your own tools (wishlist :: thx)
Gesperrt