Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Продвинутый поиск для шаблона default

Создаешь два файла с такм названием box_search_top.html, advanced_search.php

далее содержимое этих файлов

box_search_top.html
------------------------------------------------------------------------

{config_load file="$language/lang.conf" section="advanced_search"}
{$FORM_ACTION}
<table width="100%" border="0" class="formArea">
  <tr>
    <td>
<table border="0" align="right">
  <tr>
    <td>{$INPUT_KEYWORDS}</td><td></td>
    <td>{$SELECT_CATEGORIES}</td><td></td>
    <td>{$SELECT_MANUFACTURERS}</td>
    <td>{$BUTTON_SUBMIT}</td>
  </tr>
</table>
</td>
  </tr>
</table>
{$FORM_END}

---------------------------------------------------------------------
advanced_search.php
---------------------------------------------------------------------
<?php
/*
#####################################
# ShopOS: Скрипты интернет-магазина
#  Copyright (c) 2008-2009
# http://www.shopos.ru
# Ver. 1.0.1
#####################################
*/

$box = new osTemplate;
$box->assign('tpl_path', _HTTP_THEMES_C);
$box_content = '';
$box->assign('FORM_ACTION', os_draw_form('advanced_search', os_href_link(FILENAME_ADVANCED_SEARCH_RESULT, '', 'NONSSL', false), 'get', 'onsubmit="return check_form(this);"').os_hide_session_id());
$box->assign('INPUT_KEYWORDS', os_draw_input_field('keywords', '', ''));
$box->assign('HELP_LINK', 'javascript:popupWindow(\''.os_href_link(FILENAME_POPUP_SEARCH_HELP).'\')');
$box->assign('BUTTON_SUBMIT', os_image_submit('button_add_quick.gif', IMAGE_BUTTON_SEARCH));
$box->assign('SELECT_CATEGORIES',os_draw_pull_down_menu('categories_id', os_get_categories(array (array ('id' => '', 'text' => TEXT_ALL_CATEGORIES)))));
$box->assign('ENTRY_SUBCAT',os_draw_checkbox_field('inc_subcat', '1', true));
$box->assign('SELECT_MANUFACTURERS',os_draw_pull_down_menu('manufacturers_id', os_get_manufacturers(array (array ('id' => '', 'text' => TEXT_ALL_MANUFACTURERS)))));
$error = '';
if (isset ($_GET)) {
if (($_GET & 1) == 1) {
$error .= str_replace('\n', '<br />', JS_AT_LEAST_ONE_INPUT);
}
if (($_GET & 10) == 10) {
$error .= str_replace('\n', '<br />', JS_INVALID_FROM_DATE);
}
if (($_GET & 100) == 100) {
$error .= str_replace('\n', '<br />', JS_INVALID_TO_DATE);
}
if (($_GET & 1000) == 1000) {
$error .= str_replace('\n', '<br />', JS_TO_DATE_LESS_THAN_FROM_DATE);
}
if (($_GET & 10000) == 10000) {
$error .= str_replace('\n', '<br />', JS_PRICE_FROM_MUST_BE_NUM);
}
if (($_GET & 100000) == 100000) {
$error .= str_replace('\n', '<br />', JS_PRICE_TO_MUST_BE_NUM);
}
if (($_GET & 1000000) == 1000000) {
$error .= str_replace('\n', '<br />', JS_PRICE_TO_LESS_THAN_PRICE_FROM);
}
if (($_GET & 10000000) == 10000000) {
$error .= str_replace('\n', '<br />', JS_INVALID_KEYWORDS);
}
}

$box->assign('error', $error);
$box->assign('FORM_END', '</form>');

$box->assign('language', $_SESSION);
// set cache ID
if (!CacheCheck()) {
$box->caching = 0;
$box_searchtop = $box->fetch(CURRENT_TEMPLATE.'/boxes/box_search_top.html');
} else {
$box->caching = 1;
$box->cache_lifetime = CACHE_LIFETIME;
$box->cache_modified_check = CACHE_CHECK;
$cache_id = $_SESSION;
$box_searchtop = $box->fetch(CURRENT_TEMPLATE.'/boxes/box_search_top.html', $cache_id);
}

$osTemplate->assign('box_SEARCHTOP', $box_searchtop);
?>
---------------------------------------------------------------------------
1 закидываешь в папку themes\default\boxes\box_search_top.html
2 закидываешь в папку themes\default\source\boxes\advanced_search.php

Затем отрыть themes\default\source\boxes.php
и вставь перед
--------------------------------------------------
if (VIS_BOX_SEARCH == 'true')
{
  require(DIR_WS_BOXES . 'search.php');
}

--------------------------------------------------
такой код
--------------------------------------------------
if (VIS_BOX_SEARCH == 'true')
{
  require(DIR_WS_BOXES . 'advanced_search.php');
}

--------------------------------------------------
и теперь вызываешь из файла themes\default\index.html
таким макаром
--------------------------------------------------
{$box_SEARCHTOP}

--------------------------------------------------


это подойдет только для горизонтального расположения или же для вертикального тоже подойдет???


в смысле ? если я вас правильно понял то просто редактируете файл box_search_top.html под дизайн


у вас на сайте поисковый блок стоит горизонтально в 3 поля ввода и выбора?

а у меня стоит блок в колонке справа в один поле ввода.
они будут распологаться у меня вниз или в линию?


Вертикальное отображение:

замените содержимое в файле box_search_top.html

{config_load file="$language/lang.conf" section="advanced_search"}
{$FORM_ACTION}
<table width="100%" border="0" class="formArea">
 <tr>
   <td>
<table border="0" align="right">
 <tr>
   <td>{$INPUT_KEYWORDS}</td></tr><tr>
   <td>{$SELECT_CATEGORIES}</td></tr><tr>
   <td>{$SELECT_MANUFACTURERS}</td>
   <td>{$BUTTON_SUBMIT}</td>
 </tr>
</table>
</td>
 </tr>
</table>
{$FORM_END}


блин )))
как я раньше не догадался )))
совсем уже голова не варит от этих переделок )))

спс ОГРОМНОЕ за подсказку )))


возник следующий вопрос )))

как уменьшить размер поля

в прикрепленном файле сами увидите какое

{config_load file="$language/lang.conf" section="advanced_search"}
{$FORM_ACTION}
<table width="190px" border="0" class="formArea">
  <tr>
    <td>
<table width="190px" border="0" align="left">
  <tr>
    <td>{$INPUT_KEYWORDS}</td><td></td><tr>
    <td width="190px">{$SELECT_CATEGORIES}</td><td></td><tr>
    <td>{$SELECT_MANUFACTURERS}</td>
    <td>{$BUTTON_SUBMIT}</td>
  </tr>
</table>
</td>
  </tr>
</table>
{$FORM_END}


таким макаром не получается это сделать, а в програмировании я немного туповат


никак так как у вас название категорий слишком длинный


жалко )))
придется пихать в другое место )))

а то я уже голову сломал )))


Заметил, что функция error в поиске не работает, если кто больше разбирается в php по правте код  ;)


А как сделать фиксированный размер поля?!


попробовать добавить в теге style="width:200px"


этот код можно убрать, он итак не работает
$error = '';
if (isset ($_GET)) {
if (($_GET & 1) == 1) {
$error .= str_replace('\n', '<br />', JS_AT_LEAST_ONE_INPUT);
}
if (($_GET & 10) == 10) {
$error .= str_replace('\n', '<br />', JS_INVALID_FROM_DATE);
}
if (($_GET & 100) == 100) {
$error .= str_replace('\n', '<br />', JS_INVALID_TO_DATE);
}
if (($_GET & 1000) == 1000) {
$error .= str_replace('\n', '<br />', JS_TO_DATE_LESS_THAN_FROM_DATE);
}
if (($_GET & 10000) == 10000) {
$error .= str_replace('\n', '<br />', JS_PRICE_FROM_MUST_BE_NUM);
}
if (($_GET & 100000) == 100000) {
$error .= str_replace('\n', '<br />', JS_PRICE_TO_MUST_BE_NUM);
}
if (($_GET & 1000000) == 1000000) {
$error .= str_replace('\n', '<br />', JS_PRICE_TO_LESS_THAN_PRICE_FROM);
}
if (($_GET & 10000000) == 10000000) {
$error .= str_replace('\n', '<br />', JS_INVALID_KEYWORDS);
}
}

$box->assign('error', $error);


но и ошибок же не выдает :)


нуда вводишь одну букву, нажимаешь поиск, должна быть ошибка или предупреждение, что запрос должен состоять из больше букв


Подскажите, возможно ли в расширенном поиске ввести дополнительные поля (аналоги цены) по дополнительным полям товара? Пример: есть допустим база телевизоров у которых в доп. поле товара указана диагональ экрана и для этого доп. поля - диагональ экрана необходимо организовать поиск дополнительно к имеющимся - производитель, цена от и цена до.


нет. там дописывать нужно.

или можно попробовать на free-lance.ru заказать



нет. там дописывать нужно.

стоить будет 20-~$

или можно попробовать на free-lance.ru заказать


Можете назвать конкретную сумму за которую Вы сделали бы данную доработку?


лучше на free-lance.ru

сейчас времени совсем нет.


Даю наводку как это сделать, используйте GET, а именно keywords, так же добавляйте нужные поля в файлы отвечающее за вывод бокса. Реализовывал это для размеров на счет доп. полей сказать не могу если не получится то копайте в advanced_search_result.php. Снова не получится обращайтесь посмотрим что можно сделать.


так сделать не сложно.

любой горе программист справится.



Подскажите, возможно ли в расширенном поиске ввести дополнительные поля (аналоги цены) по дополнительным полям товара? Пример: есть допустим база телевизоров у которых в доп. поле товара указана диагональ экрана и для этого доп. поля - диагональ экрана необходимо организовать поиск дополнительно к имеющимся - производитель, цена от и цена до.


Пару дней назад столкнулся с подобным желанием заказчика. Без проблем реализовал, и по пути починил  вот это:


этот код можно убрать, он итак не работает
$error = '';
if (isset ($_GET)) {
if (($_GET & 1) == 1) {
$error .= str_replace('\n', '<br />', JS_AT_LEAST_ONE_INPUT);
}
if (($_GET & 10) == 10) {
$error .= str_replace('\n', '<br />', JS_INVALID_FROM_DATE);
}
if (($_GET & 100) == 100) {
$error .= str_replace('\n', '<br />', JS_INVALID_TO_DATE);
}
if (($_GET & 1000) == 1000) {
$error .= str_replace('\n', '<br />', JS_TO_DATE_LESS_THAN_FROM_DATE);
}
if (($_GET & 10000) == 10000) {
$error .= str_replace('\n', '<br />', JS_PRICE_FROM_MUST_BE_NUM);
}
if (($_GET & 100000) == 100000) {
$error .= str_replace('\n', '<br />', JS_PRICE_TO_MUST_BE_NUM);
}
if (($_GET & 1000000) == 1000000) {
$error .= str_replace('\n', '<br />', JS_PRICE_TO_LESS_THAN_PRICE_FROM);
}
if (($_GET & 10000000) == 10000000) {
$error .= str_replace('\n', '<br />', JS_INVALID_KEYWORDS);
}
}

$box->assign('error', $error);


kdv1978, если вы ищете исполнителя, могу выполнить за вас эту работу. О цене договоримся в личке.


Доброго времени суток! Подскажите плиз как добавить строку выпадающего списка Подкатегория? Есть такая строчка в файле advanced_search.php $box->assign('ENTRY_SUBCAT',os_draw_checkbox_field('inc_subcat', '1', true));как из неё сделать выпадающий список?
И всё таки,как задать фиксированную ширину выпадающего списка,всё перепробовал не получается?



возник следующий вопрос )))

как уменьшить размер поля

в прикрепленном файле сами увидите какое

{config_load file="$language/lang.conf" section="advanced_search"}
{$FORM_ACTION}
<table width="190px" border="0" class="formArea">
  <tr>
    <td>
<table width="190px" border="0" align="left">
  <tr>
    <td>{$INPUT_KEYWORDS}</td><td></td><tr>
    <td width="190px">{$SELECT_CATEGORIES}</td><td></td><tr>
    <td>{$SELECT_MANUFACTURERS}</td>
    <td>{$BUTTON_SUBMIT}</td>
  </tr>
</table>
</td>
  </tr>
</table>
{$FORM_END}


таким макаром не получается это сделать, а в програмировании я немного туповат


А вот таким макаром:
<style>
/*<!]>*/
</style>


Жаль, что вопрос с расширенным поиском по дополнительным параметрам так и не реализован. Я про общедоступный вариант


как сделать зависимыми выпадающие списки от результата выбора значения в другом выпадающем списке?


присоединяюсь, как сделать зависимость?


в нете читал примеры - самый адекватный вроде как с использованием jquery, но я пока не осилил ...


выпадающие списки чего? при выборе категории выводить товары или какие-то связи категорий->производителей?


ну не только категории. у меня используется куча доп полей. допустим
бренд модель  агрегат
это для поиска.
сами ввыпадающие списки я сформировал, но не могу понять как сделать их зависимыми от резалуьтаты выбранного в предыдущем выпадающем листе.


зависит от того, что нужно выводить.
Если Категория->Подкатегория - то зависимость будет id=parent_id
если Категория->Производитель - то уже иная зависимость. нужно получать все товары категории, собирать производителей и делать из них зависимый селект
Если Доп. поля. То опять же, нужно в зависимости от категории брать все товары, получать доп. поля, собирать доп. поля и их значения и делать зависимый селект.
В некоторых случаях не сложно, в некоторых уйдет не мало времени на реализацию.


Источник



Copyright ShopOS