Suchmodul zeigt den CATNAME nicht an

Gesperrt
shi
Beiträge: 251
Registriert: Fr 5. Nov 2004, 14:12
Kontaktdaten:

Suchmodul zeigt den CATNAME nicht an

Beitrag von shi » Mo 6. Mär 2006, 14:11

Hallo Leute, habe das Suchmodul von der 4.6.4 version im Einsatz. Die Mandanteneinstellungnen habe ich gemacht und die Seiten werden auch durchsucht. Doch bei der Suchausgabe wird normalerweise die {NUM}, {CATNAME}, {HEADLINE} angezeigt. Doch leider wird bei mir der {CATNAME} nicht angezeigt. Woran kann das liegen?

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

Beitrag von Beleuchtfix » Mo 6. Mär 2006, 21:39

Schau mal im Template templates/suchausgabe.html nach, vielleicht hast du da etwas verändert. Man kann übrigens noch viel mehr ausgeben und im Template anpassen.

Viel Erfolg
Florian

shi
Beiträge: 251
Registriert: Fr 5. Nov 2004, 14:12
Kontaktdaten:

Beitrag von shi » Di 7. Mär 2006, 09:51

Ich habe nach geschaut und folgendes steht drin

Code: Alles auswählen

<div style="padding-top:.8em"> {NUM}. <a title="{TITLE}" href="{HREF}" target="{TARGET}">{CATNAME}</a><br/>
 {HEADLINE} </div>
. Ich habe nur des Layout angepasst. Das sollte doch aber nicht die Funktion beeinträchtigen?

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

Beitrag von Beleuchtfix » Di 7. Mär 2006, 10:43

hmmm.. :?
Vielleicht doch irgend etwas im Modul geändert (einmal Version-History nachschauen, ob da etwas drin steht.)

Viel Erfolg
Florian

rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist » Di 7. Mär 2006, 10:56

Sollte eigentlich auch nicht gehen denn:

Code: Alles auswählen

$aHeadline = $oSearchResults->getSearchContent($key, 'HTMLHEAD', 1);
hier holt er sich den HTMLHEAD

Code: Alles auswählen

$headline = capiStrTrimAfterWord($aHeadline[0], 200); # conflict with capiStrTrimAfterWord and setReplacement('<strong>', '</strong>')
hier wird aus $aHeadline ein $headline

Code: Alles auswählen

$tpl->set('d', 'CATNAME', $headline);
Und hier wird an das Template der Wert aus $headline weitergegeben.

Falls ich irre, bitte ich um korrektur :wink:
greets

shi
Beiträge: 251
Registriert: Fr 5. Nov 2004, 14:12
Kontaktdaten:

Beitrag von shi » Di 7. Mär 2006, 12:17

Im Suchmodul wurde nichts verändert. Ich habe für testzwecke mal den Mandenten mit Beispielmodule und Content installiert da funktioniert es.

Aber kann es sein das mit {CATNAME} gar nicht die Kategorienamen der Navigation gemeint sind sondern die Headline in den einzelnen Artikeln?

rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist » Di 7. Mär 2006, 12:21

rezeptionist hat geschrieben:

Code: Alles auswählen

$aHeadline = $oSearchResults->getSearchContent($key, 'HTMLHEAD', 1);
greets

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

Beitrag von Beleuchtfix » Di 7. Mär 2006, 14:11

Da fragt sich der User natürlich, wer diese tolle "Übersetzung" erfunden hat. Wahrscheinlich will man damit den Profi vom DAU trennen :wink:
Gruß
Florian

rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist » Di 7. Mär 2006, 14:13

Da gebe ich dir recht. Hatte am We auch so meine Probleme mit ner Suche dadurch ist mir das aufgefallen.
greets

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

Beitrag von Beleuchtfix » Di 7. Mär 2006, 14:23

Kann es sein, dass man die Suche noch optimieren kann :wink: So String suche wie "eins zwei" etc. Als Anhänger der Suchfraktion musst du dich da doch auskennen :wink:
Florian

McHubi
Beiträge: 1210
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Ausgabeoptionen

Beitrag von McHubi » Do 10. Apr 2008, 11:21

Hallo,

ich scheitere auf der ganzen Linie... :oops:

meine Artikel sehen so aus:
Modul HEADLINE
Modul SUBHEADLINE
Modul TEXT

Das Suchergebnis sieht so aus:
Nr. HEADLINE
TEXT "weiter"
...
Blätterfunktion

Funktioniert soweit alles, meine HEADLINE wird zu {CATNAME} und mein TEXT wird zu {HEADLINE}.

Jetzt bekomme ich's einfach nicht hin, dass auch die Subheadline meines Artikels ausgegeben wird, also das Suchergebnis so aussieht:
Nr. HEADLINE
SUBHEADLINE
TEXT "weiter"
...
Blätterfunktion

-----------------------------------------------------

Das Modul SUBHEADLINE sieht so aus:

Code: Alles auswählen

<?php

if (!$edit) {
    echo "<h2>".strip_tags("CMS_HTMLHEAD[2]")."</h2>";
} else {
    echo "<h2>"."CMS_HTMLHEAD[2]"."</h2>";
}
?>
-----------------------------------------------------

Was muss ich wo im Modul der Suchausgabe ändern?

Code: Alles auswählen

/***********************************************
* 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) {
	#Fix for PHP < 4.3
	if( !function_exists( 'html_entity_decode' ) )
	{
		function html_entity_decode( $given_html, $quote_style = ENT_QUOTES )
		{
			$trans_table = array_flip(get_html_translation_table( HTML_SPECIALCHARS, $quote_style ));
			$trans_table['''] = "'";
			return ( strtr( $given_html, $trans_table ) );
		}
	}

	#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." '".htmlspecialchars(strip_tags($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']) && is_numeric($_GET['page']) && $_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);

				$similarity = sprintf("%.0f", $similarity);

				#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." '".htmlspecialchars(strip_tags($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;
		}
	}
}
?> 
-----------------------------------------------------

Und hier das - unbearbeitete - Template "Suchausgabe.html":

Code: Alles auswählen

<p class="message">{MESSAGE}</p>
<div class="suchausgabe">
<!-- BEGIN:BLOCK -->
   <h2><span class="num">{NUM}.</span> <a title="{TITLE}" href="{HREF}" target="{TARGET}">{CATNAME}</a></h2>
   <p>{HEADLINE} <a title="{TITLE}" href="{HREF}" target="{TARGET}">{more}</a></p>
   <hr class="noshade"/>
<!-- END:BLOCK -->
</div>
<p class="result">{result_page} {PREV}{PAGES}{NEXT}</p>
-----------------------------------------------------

Version Contenido: 4.6.23

Lösungsansatz: Wenn ich mir $headline per echo ausgeben lasse, wird der Wert angezeigt. Wenn ich das Ganze mit $subheadline mache, erscheint nichts. Also irgendwie scheint die Variable keine Daten zu bekommen...

Wäre toll, wenn einer das dicke ? in meinem Hirn rauswerfen könnte...

Vielen Dank!
Zuletzt geändert von Oldperl am Mo 12. Jul 2010, 15:08, insgesamt 1-mal geändert.
Grund: Moderation: code-BBCode ergänzt.

Mario_m
Beiträge: 90
Registriert: Sa 24. Okt 2009, 22:57
Kontaktdaten:

Re: Suchmodul zeigt den CATNAME nicht an

Beitrag von Mario_m » Sa 10. Jul 2010, 14:36

Hat vielleicht jemand mittlerweile eine Lösung dazu? Unter 4.8 scheint das Gleiche vorzuliegen. Der Kategoriename wird im Suchergebnis nicht angezeigt, obwohl im Template CATNAME mit angegeben ist.

Mario_m
Beiträge: 90
Registriert: Sa 24. Okt 2009, 22:57
Kontaktdaten:

Re: Suchmodul zeigt den CATNAME nicht an

Beitrag von Mario_m » Mi 14. Jul 2010, 21:52

Lösung: Catname wird nur angezeigt, wenn es auch eine Headline gibt, also wenn z.B. das Modul Headline aktiv ist, da dies nicht immer der Fall ist, folgende Änderungen im output Modul der Suche (hier mit 4.8.12 getestet):

Im Output Modul muss ab ca. Zeile 277 (vor dem Variablenblock) folgender Code eingefügt werden:

Code: Alles auswählen

cInclude('classes', 'Contenido_Category/Contenido_Category.class.php');
                    $oConCat = new Contenido_Category($db, $cfg);
                    $oConCat->load($cat_id, true, $lang);
                    $sCat = $oConCat->getCategoryLanguage()->getName(); 
                    if ($headline != '')
                    {      
                       $catnames="Kategorie: ".$sCat." - Artikel: ".$headline;
                    }      
                    else
                    {                    
                       $titel=$oArt->getField('title');
                       $catnames="Kategorie: ".$sCat." - Artikel: ".$titel;
                    }
Im Variablenblock folgende Zeile ändern:
$tpl->set('d', 'CATNAME', $catnames);
Zuletzt geändert von Oldperl am Mi 14. Jul 2010, 22:08, insgesamt 1-mal geändert.
Grund: Moderation: code-BBCode ergänzt.

Gesperrt