Картинки в результатах поиска в joomla
Да и не только изображения, но и любой html код. Дело в том, что joomla перед показом сниппета, заменяет неготорые теги на пробелы, и затем выполняет strip_tags. В joomla 1.5 с этим было сложнее, приходилось обходиться хаком, добавляя в strip_tags список допустимых тегов. В joomla 1.6 плагины типа content теперь вызываются не только для материалов, но так же могут вызываться для произвольных текстов.
1 | $text = JHtml::_('content.prepare', $text); |
Для поискового сниппета также вызываются плагины контента, самое главное после очистки от тегов. Что и даёт возможность добавить нужные теги для вывода в сниппет. Мне было необходимо добавить <br>. В поисковом плагине вместо перевода строки я выбрал комбинацию \x01\x01\x01, чтобы не было случайных срабатываний в других плагинах. А в контентном плагине просто заменю эту последовательность на <br>
пример
В поисковом плагине в методе
1 | function onContentSearch($text, $phrase='', $ordering='', $areas=null) |
при формировании массива результатов
1 2 3 4 5 6 | foreach($rows AS $key => $value) { if (searchHelper::checkNoHTML($value, $searchText, array('url', 'text', 'title'))) { $value->text = $value->text."\x01\x01\x01"; $return[] = $value; } } |
В конткнтном плагине
1 2 3 4 5 6 7 8 9 | public function onContentPrepare($context, &$row, &$params, $page = 0) { $canProceed = $context == 'text'; if (!$canProceed) { return; } $row->text = str_replace("\x01\x01\x01",'<br />',$row->text); return true; } |