Shortdesc aus longdesc

Hallo Leute,

sagt mal ist es einfach möglich in der Product.tpl statt der Kurzbeschreibung einen Teil der longdesc Beschreibung anzeigen zu lassen?

Ich meine das so:

Longdesc im Artikel:
Der Zauber der “grünen Fee” (das heisst Absinth übersetzt) ist mal wieder legal! Keiner weiss so genau, was sich hinter den wilden Geschichten verbirgt. Schon viele Intellektuelle vor dir, von Hemingway bis Oscar Wild, haben sich seit dem 18. Jahrhundert von dem teuflischen Getränk um den Verstand bringen lassen. Alles für das sehr spezielle Trink-Ritual und noch einige Rezepte dazu, stecken in unserem Barset ABSINTH. All inclusive sozusagen.

Ausgabe in der product.tpl:
Der Zauber der “grünen Fee” (das heisst Absinth übersetzt) ist mal wieder legal! Keiner weiss so genau, was sich hinter den wilden Geschichten verbirgt. Schon viele Intellektuelle vor dir, von…

LG Maik

Schau dir mal die Smarty-Dokumentation an. Das geht mit truncate:
[{$product->oxarticles__oxlongdesc->value|truncate:200}] schneidet nach 200 Zeichen ab.

Allerdings könnten dann auch html-Tags abgeschnitten werden. Ich habe dafür noch das Smarty-Plugin CloseTags installiert. Das prüft die html-Tags ab.

Ist ne coole Sache das truncate. :slight_smile: Schneidet ab wo ich will. Jedoch sind nun einige Tags auch weg wie du schon sagtest.

Wo finde ich das Plugin Close Tags?

So habe jetzt schon ein gutes Ergebnis. Aber jetzt noch eine Frage. Ich habe ab und zu Grafiken oder Videos vor einem Text im Longdesc. Wie mache ich meinem Code

<div id="test_shortDesc_[{$testid}]" class="desc">[{$product->oxarticles__oxlongdesc->value|oxtruncate:420|strip_tags}]</div> 

begreiflich, das er dieses nicht laden soll sondern nur reinen Text?

Grüße

Hat denn keiner eine Idee wie ich closeTags installiere bzw. ich den Code so modifizieren kann das nur bei dieser Kurzbeschreibung die html tags übersehen werden? :frowning:

Google-Suche?
Artikel dazu hier: http://www.gunnart.de/tipps-und-tricks/truncate-wenn-html-code-zerschnitten-wird/

Wenn du die Videos komplett raushaben willst, musst du wohl noch ein Plugin nutzen, um das per preg_replace oder so rauszulöschen.

Datei modifier.CloseTags.php in core/smarty/plugins/

<?php /*



Author: dima.exe <dima [dot] exe [at] gmail [dot] com>



	Additional Programming: Gunnar Tillmann, 

	http://www.gunnart.de?p=353

	März 2008

	Einige Fehlerkorrekturen 

	<del> und andere Tags wurden nicht geschlossen

	HTML-Tags in Großbuchstaben nicht beachtet...



Example usage:



code:



$smarty = new Smarty;

$smarty->assign('string', '<b><i>This is test string</i></b>.');

template:



{$string|truncate:10|CloseTags}

truncate output: "<b><i>This"



CloseTags output: "<b><i>This</i></b>"



*/



/**

* Smarty plugin

*

* @package Smarty

* @subpackage plugins

*/



/**

* Smarty close all unclosed xhtml tags

*

* Type:   modifier<br>

* Name:   CloseTags<br>

*

* @param  string

* @return string

*/



function smarty_modifier_CloseTags($string) {



	// GUNNAR: Andere Vorgehensweise

	$tags = 'a|b|p|i|u|h1|h2|h3|h4|h5|h6|em|strong|code|pre|del|font|span|div|center|table|tr|td|th|form|ul|ol|li|caption|small|dd|dl|dt|fieldset|option|select'; 



	// match opened tags

	//if(preg_match_all('/<([a-z\:\-]+)[^\/]>/', $string, $start_tags)){

	if(preg_match_all('/<('.$tags.')[^\/>]*>/i', $string, $start_tags)){ // <-- GUNNAR

		$start_tags = $start_tags[1];

	

		// match closed tags

		//if(preg_match_all('/<\/([a-z]+)>/', $string, $end_tags)){

		if(preg_match_all('/<\/('.$tags.')>/i', $string, $end_tags)){ // <-- GUNNAR

			$complete_tags = array();

			$end_tags = $end_tags[1];

	

			foreach($start_tags as $key => $val){   

				$posb = array_search($val, $end_tags);

				if(is_integer($posb)){

					unset($end_tags[$posb]);

				} else {

					$complete_tags[] = $val;

				}

			}



		} else {



			$complete_tags = $start_tags;

		}



		$complete_tags = array_reverse($complete_tags);



		for($i = 0; $i < count($complete_tags); $i++){

			$string .= '</' . $complete_tags[$i] . '>';

		}

	}

	return $string;

}

?>

Hallo,

danke dir für den Tip. Habe es erstmal lösen können. Trotzdem Danke. :slight_smile: