Многие сталкивались с ситуацией, когда необходимо выводить изображения материалов на странице результатов поиска в Joomla. К сожалению стандартными средствами вывести изображение не представляется возможным, приходится прибегать к помощи сторонних плагинов. Из этой статьи Вы узнаете метод, который позволит отобразить изображение в результатах поиска Joomla.
Важно: описанный ниже метод не идеален, а также он не предназначен для вывода первого изображения вставленного в текст материала.
Как это работает?
Для начала Вам необходимо определиться, какие изображения будут выводиться в результатах поиска. Перейдите в редактор материалов Joomla, справа в области настроек материала откройте вкладку «Изображения и ссылки» и загрузите изображение в одно из полей: «Изображение для вступительного текста» или «Изображение полного текста», всё зависит от Вашего метода наполнения сайта:
Сохраните материал после произведенных изменений.
Теперь нам необходимо немного отредактировать некоторые файлы Joomla. Откройте файл plugins/search/content/content.php и найдите в нем строки:
$query->select('a.title AS title, a.metadesc, a.metakey, a.created AS created, a.language');
Замените эту строку на следующую:
$query->select('a.title AS title, a.metadesc, a.metakey, a.created AS created, a.language, a.images AS image');
Как видите, к текущему запросу мы добавили выборку изображения из базы a.images AS image. Важно помнить, что в случае обновления Joomla произведенные изменения в данном файле пропадут, поэтому будьте предельно внимательны.
Выборку мы сделали, теперь необходимо вывести само изображение на странице результатов поиска, поэтому откройте файл components/com_search/views/search/tmpl/default_results.php или templates/ИМЯ_ВАШЕГО_ШАБЛОНА/html/com_search/search/default_results.php если у Вас используется индивидуальный шаблон.
Совет: чтобы при обновлении Joomla изменения в данном файле не пропали, скопируйте содержимое директории components/com_search/views/search/tmpl/ в директорию templates/ИМЯ_ВАШЕГО_ШАБЛОНА/html/com_search/search/ и Вы сможете производить изменения не опасаясь.
Итак, в найденном файле необходимо добавить следующие строки:
<?php
$image = json_decode($result->image)->image_intro;
if (isset($image) && $image != '') {
echo '<div style="float: left; margin: 5px 10px;" ><img src="/'. $image .'" alt="" /></div>';
}
?>
Например, перед кратким описанием материала:
<?php echo $result->text; ?>
Обратите внимание, что в данном случае будет выводиться изображение из вступительного текста, если Вы хотите сделать вывод изображения полного текста, Вам следует заменить в текущем коде image_intro на image_fulltext
И последнее, что здесь необходимо, это сбросить выравнивание, для этого перед выводом даты создания материала:
<?php if ($this->params->get('show_date')) : ?>
Добавьте следующий код:
<?php if (isset($image) && $image != '') {
echo '<div style="clear:both"></div>';
} ?>
Какой никакой, но всё же метод и он работает.
не выводится изображения в поиске
прощу помочь, это очень сильно нужно
спасибо жду ответа
Обратите внимание на вставку кода в шаблон default_results.php
$image = json_decode($result->image)->image_intro;
Здесь выводится вступительное изображение, если Вы для материала задаете изображение для полного текста, то строка должна быть следующей:
$image = json_decode($result->image)->image_fulltext;
Также убедитесь, что Вы редактируете верный шаблон результатов вывода, т.е. если он у Вас переопределен в шаблоне, то править файл нужно здесь /templates/ИМЯ_ВАШЕГО_ШАБЛОНА/html/com_search/search/default_results.php
Либо если все действия приводят к какой-либо ошибке, напишите ее в комментариях. Также Вы можете отправить мне бекап сайта на info@blog-about.ru посмотрю что может быть не так.
Откройте файл plugins/search/content/content.php и примерно в 287-ой строке найдите:
$query->select('a.title AS title, a.metadesc, a.metakey, a.created AS created, a.language, a.catid')
Замените эту строку на следующую:
$query->select('a.title AS title, a.metadesc, a.metakey, a.created AS created, a.language, a.catid, a.images AS image')
Здесь в конце добавили a.images AS image
Протестировано, работает.
Спасибо за Ваш отзыв, так бы не обратил внимание на изменения, надо будет обновить статью.