Сниппет поиска по товарам - Drupal 6
Данный сниппет поиска по товарам основан на примере создания блока популярных товаров.
Итак что делает данный скрипт:
- Выводит форму поиска;
- Поиск производится по тайтлу и анонсу ноды;
- После отправки запроса, выдает 50 нод, в которых присутствует текст запроса;
- Выводит картинку, тайтл, анонс, sell_price;
- Выделяет при выводе текст запроса жирным в анонсах;
Саму форму поиска можно расположить где угодно, главное не забыть указать корректный action для формы, у меня в примере это "/node/10". Расписывать подробно не буду все практически также, как в примере сниппета, который выводит блок популярных товаров.
<form action="/node/10" accept-charset="UTF-8" method="post" id="search-theme-form">
<div class="form-item" id="edit-search-theme-form-1-wrapper">
<input type="text" maxlength="128" name="search_search_word" id="edit-search-theme-form-2" size="15" value=" Поиск по сайту" class="search_form_word" onfocus="if (this.value == ' Поиск по сайту') {this.value = ' '}" onblur="if (this.value == ' ') {this.value = ' Поиск по сайту'}" />
</div>
<input type="image" name="op" value="Поиск" id="edit-submit-1" class="form-submit customclass" src="/drupal620/themes/mebel/images/search_s.png" />
</form>
<?php
$type = 'product';
$num_nodes = '50';
if(isset($_POST['search_search_word']))
{
$search_word = $_POST['search_search_word'];
}
$search_word = trim($search_word);
$search_word = stripslashes($search_word);
$search_word = strip_tags($search_word);
$search_word = htmlspecialchars($search_word);
if(isset($search_word) AND $search_word !='' AND $search_word !='b*')
{
$sql = 'SELECT node.nid,
node_revisions.nid,
node.type,
node_revisions.title,
node_revisions.teaser,
uc_products.nid,
uc_products.sell_price,
content_type_product.nid,
content_type_product.field_bigimg_fid
FROM node
LEFT JOIN node_revisions ON node.nid = node_revisions.nid
LEFT JOIN uc_products ON node.nid = uc_products.nid
LEFT JOIN content_type_product ON node.nid = content_type_product.nid
WHERE node.type = "product" AND node_revisions.teaser LIKE "%'.$search_word.'%"
OR node.type = "product" AND node.title LIKE "%'.$search_word.'%"
ORDER BY node.nid DESC';
$result = db_query_range($sql, $type, 0, $num_nodes);
print '<table class="views-table cols-1">
<tbody>';
while ($n = db_fetch_array($result))
{
$n_nid = $n['nid'];
$n_title = $n['title'];
$n_price = $n['sell_price'];
$n_teaser = $n['teaser'];
$n_teaser = strip_tags($n_teaser);
$n_teaser = str_replace($search_word, '<B>'.$search_word.'</B>', $n_teaser);
$file_fid = $n['field_bigimg_fid'];
$sql_fid = "SELECT fid, filepath FROM files WHERE fid ='".$file_fid."'";
$result_fid = db_query($sql_fid);
$n_fid = db_fetch_array($result_fid);
$filepath = $n_fid['filepath'];
$n_price_row = strpos($n_price, ".");
$n_price = substr($n_price, 0, $n_price_row);
print '<tr class="odd views-row-first views-row-last">
<td class="views-field views-field-field-bigimg-fid">
<a href="/product/'.$n_nid.'" class="imagecache imagecache-product_list imagecache-linked imagecache-product_list_linked"><img src="'.$filepath.'" alt="'.$n_title.'" title="" class="imagecache imagecache-product_list" width="100" height="67" /></a>
</td>
<td class="views-field views-field-teaser-search">
<a href="/product/'.$n_nid.'">'.$n_title.'</a>
<p class="search-teaser">'.$n_teaser.'</p>
</td>
<td class="views-field views-field-sell-price">
<span class="uc-price-product uc-price-sell_price uc-price">'.$n_price.'</span>
</td>
</tr>';
}
print '</tbody>
</table>';
}
?>