Hallo,
habe das Problem, dass wenn ich im Editor ein < eingebe, der Text in der Ausgabe nach der spitzen Klammer gelöscht wird. Dachte das liegt am strip_tags im Template.
{block name='frontend_listing_box_article_description'}
{$sArticle.description_long|strip_tags|truncate:240}
{/block}
Aber auch ohne den Filter gibt es das Problem in der Ausgabe.
Habt Ihr noch eine Idee?
Vielen Dank!
Scheint nicht am TinyMCE zu liegen. Der Text kommt korrekt in der Datenbank an. In der Datenbank steht der Inhalt mit HTML-Tags. In der Ausgabe werden diese HTML-Tags aber entfernt. Auch wenn man den “strip_tags” Filter entfernt.
Es handelt sich um den folgenden Block in der Datei THEME/frontend/listing/product-box/box-basic.tpl
{block name='frontend_listing_box_article_description'}
{$sArticle.description_long|truncate:240}
{/block}
Der Filter “strip_tags” wurde entfernt, aber das HTML wird trotzdem rausgefiltert. Sonstige Änderungen am Template werden problemlos übernommen.
R4M
May 14, 2019, 11:55am
5
Liegt an dieser Zeile:
$product['description_long'] = $this->sOptimizeText($product['description_long']);
$products = [];
foreach ($searchResult->getProducts() as $productStruct) {
$product = $this->legacyStructConverter->convertListProductStruct($productStruct);
if (!empty($categoryId) && $categoryId != $context->getShop()->getCategory()->getId()) {
$product['linkDetails'] .= "&sCategory=$categoryId";
}
if ($this->config->get('useShortDescriptionInListing') && strlen($product['description']) > 5) {
$product['description_long'] = $product['description'];
}
$product['description_long'] = $this->sOptimizeText($product['description_long']);
$products[$product['ordernumber']] = $product;
}
$products = $this->listingLinkRewriteService->rewriteLinks($criteria, $products, $context);
$pageSizes = explode('|', $this->config->get('numberArticlesToShow'));
$sPage = (int) $request->getParam('sPage', 1);
1 Like
Ah… ok.
public function sOptimizeText($text)
{
$text = html_entity_decode($text, ENT_NOQUOTES, 'UTF-8');
$text = preg_replace('@]*?>.*?\\1>@si', '', $text);
$text = preg_replace('!]*?>!u', ' ', $text);
$text = preg_replace('/\s\s+/u', ' ', $text);
$text = trim($text);
return $text;
}
Dann ist das strip_tags ja eigentlich überflüssig. Lässt sich das irgendwie deaktivieren oder überschreiben?