DEMETR Создание сайтов в Казани

Опубликовано

Drupal — вывод картинок в результатах поиска

Drupal - вывод картинок в результатах поискаПоявилась задача на странице результатов поиска выводить изображения к найденным статьям. Подразумевается, что изображения к материалам были прикреплены с помощью модуля CCK.

Итак, для этого нам понадобиться поправить файл template.php, который лежит в папке с нашей темой. Если этого файла нет — создавайте.

Для примера: у нас есть два типа материалов (Заведение, Событие). У каждого из них есть поле CCK, в которое создатель ноды будет грузить изображение. Запоминаем имена этих полей. field_placeavatar и field_eventavatar.

Теперь возвращаемся к нашему файлу template.php, добавляем в нем следующие строки:

function mytheme_preprocess_search_result(&$vars, $hook) {
  $n = node_load($vars['result']['node']->nid);
  $n && ($vars['node'] = $n);
}

mytheme — меняем на название своей темы.

Копируем файл search-result.tpl.php из папки \www\modules\search\ в папку с нашей темой.
И начинаем смотреть его.

<dt class="title">
  <a href="<?php print $url; ?>"><?php print $title; ?></a>
</dt>
<dd>
  <?php if ($snippet) : ?>
    <p class="search-snippet"><?php print $snippet; ?></p>
  <?php endif; ?>
  <?php if ($info) : ?>
  <p class="search-info"><?php print $info; ?></p>
  <?php endif; ?>
</dd>

Переменная $snippet хранит текст, в котором найдено совпадение из поискового запроса, но в ней нет картинки. Сейчас добавим свой кусок кода.

<? if (isset($node->field_placeavatar[0]['filepath'])) { ?>
	<a href="<?php print $url; ?>" class="imagecache">
        <?php print theme('imagecache', 'image100', $node->field_placeavatar[0]['filepath']); ?>
        </a>
<?php } ?>

Проверяем есть ли загруженная картинка у статьи. Если да, то обрамляем ее в ссылку на эту самую статью, а картинку выводим с помощью модуля Imagecache, с заранее подготовленным презетом (image100).

Этот код можно оформить в свои блоки, и облагородить вывод результатов поиска.

Рубрики КодМетки

Drupal — вывод картинок в результатах поиска: 2 комментария

  • I_CaR — 15.11.2014 в 16:50 #

    Ни фига не работает.
    На форме пусто и файл «search-result.tpl.php» из каталога темы не подхватывается системой.

    [Ответить]

    Demetr - Ноябрь 15th, 2014 в 21:02

    Может дело в версии друпала. В статье для 6 версии.

    [Ответить]