0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 2060 Просмотров
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
Пожалуйста, подскажите
(у меня Joomla1.5 и VM1.9)

модуль mod_virtuemart_search - если не заполнено поле формы поиска к выдаче результата выдаются ВСЕ товары. В идеале хотелось бы - при клике на кнопку или enter с пустым полем поиска - выдавалось типа Введите текст..
*

fsv

  • Moderator
  • 2765
  • 402 / 2
\modules\mod_virtuemart_search\mod_virtuemart_search.php
Спойлер
[свернуть]
Сохранить в utf-8 без BOM.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, спасибо
я наверное не полностью задал вопрос, теперь подробнее

модуль mod_virtuemart_search ведет поиск ТОЛЬКО по артикулу
что я для этого сделал:

1. administrator\components\com_virtuemart\html\shop_browse_queries.php
строки (~114-117) привел к такому виду:
Код: php
//$sq .= "\n (`#__{vm}_product`.`product_name` LIKE '%$searchstring%' OR ";
  $sq .= "\n `#__{vm}_product`.`product_sku` LIKE '$searchstring'"; // убирал обрамление % в $searchstring, чтобы было точное совпадение, также убрал OR
//$sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
//$sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%') ";
2. administrator/components/com_virtuemart/classes/ps_main.php
в строке (~1274) вместо 2 набрал 0, строка стала выглядеть так:
Код: php
if( $strlen > 0 ) { // 2 - это минимум символов при вводе поиска, при вводе меньше трех символов поиск выдает все товары
3. modules/mod_virtuemart_search/mod_virtuemart_search.php
использовал атрибут required
Код: php
<form action="<?php $sess->purl( $mm_action_url."index.php?page=shop.browse" )?>" method="post" class="search">
<input name="keyword" type="search" class="input" id="keyword" placeholder="<?php echo $VM_LANG->_('PHPSHOP_SEARCH_TITLE_SKU')?>" required/>
<input class="submit" type="submit" name="" value="" />
</form>
В итоге, все почти хорошо, если поле поиска пустое, required или ваш JS запрос не отправляет, кроме - если поставить в поле формы поиска ПРОБЕЛ и после этого нажать submit или enter, то к выдаче результата выдаются все товары

пытался сделать так, но не помогло:
administrator/components/com_virtuemart/classes/ps_main.php
строка (~1269)
Код: php
$keywords = explode( "", $keyword, 10 ); // убрал пробел " "
administrator\components\com_virtuemart\html\shop_browse_queries.php
после строки (~111):
$numKeywords = count( $keywordArr );
поставил replace:
Код: php
$keywordArr = str_replace(' ','',$keywordArr); // заменить пробел, но как я уже писал выше не помогает
хотя replace работает, проверял, например заменяет 1 на 2
Код: php
$keywordArr = str_replace('1','2',$keywordArr);

вот мой сайт (форма поиска вверху слева Поиск по артикулу): www.glass-pgc.ru
поставьте в поле поиска пробел и после этого кликните на кнопку...
« Последнее редактирование: 21.02.2014, 04:43:21 от sashgera »
*

fsv

  • Moderator
  • 2765
  • 402 / 2
если поле поиска пустое, ... ваш JS запрос не отправляет, кроме - если поставить в поле формы поиска ПРОБЕЛ и после этого нажать submit или enter, то к выдаче результата выдаются все товары
Код: javascript
if( !$.trim( $('#keyword').val() ) ) {
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
Код: javascript
if( !$.trim( $('#keyword').val() ) ) {
fsv, скажите, куда этот код?
*

fsv

  • Moderator
  • 2765
  • 402 / 2
fsv, скажите, куда этот код?
мой код не смотрели?
замените в нем
Код
if( !$('#keyword').val() ) {
на
Код
if( !$.trim( $('#keyword').val() ) ) {
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, спасибо!
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, если в value есть текст по умолчанию, ваш js не срабатывает, считает что инпут заполнен, если можно, помогите, пожалуйста
Код: php
<input name="keyword" type="search"  class="input" id="keyword" 
onblur="if(this.value=='') this.value='<?php echo $VM_LANG->_('PHPSHOP_SEARCH_TITLE_SKU')?>'"
onfocus="if(this.value=='<?php echo $VM_LANG->_('PHPSHOP_SEARCH_TITLE_SKU')?>') this.value=''" 
value="<?php echo $VM_LANG->_('PHPSHOP_SEARCH_TITLE_SKU')?>"/>
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Попробуйте:
1)
Код: php
onblur="if(this.value=='') this.value='<?php echo $VM_LANG->_('PHPSHOP_SEARCH_TITLE_SKU')?>'" 
onfocus="if(this.value=='<?php echo $VM_LANG->_('PHPSHOP_SEARCH_TITLE_SKU')?>') this.value=''"
замените на
Код: php
data-placeholder="<?php echo $VM_LANG->_('PHPSHOP_SEARCH_TITLE_SKU')?>"

2) в начало js добавьте
Код: javascript
$("#keyword").on("focus", function() {
  if ( $(this).val() == $(this).attr("data-placeholder") ) {
    $(this).val("");
    $(this).css("color","#040404");
  }
}).on("blur", function() {
  if ( !$(this).val() ) {
    $(this).val( $(this).attr("data-placeholder") );
    $(this).css("color","#858585");
  }
}).focus().blur();
Цвет текста добавил для примера, замените на свой.
Не проверял.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, в input при фокусе текст не убирается, submit не активный, только enter, и перестала работать проверка на пустое поле (если текст, который по умолчанию, из поля стереть вручную)
см. спойлер
Спойлер
[свернуть]
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Цитировать
2) в начало js добавьте
имел в виду после
Код
jQuery(function($) {
, это обертка кода, одновременно и .ready(), и .noConflict().

Цитировать
// пробовал разделить на два js
не надо.

Если не получится, дайте ссылку на сайт с изменениями, проще будет.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
fsv, сделал, как вы сказали, без изменений..
поиск вверху страницы, артикулы с 1 по 500..

http://www.glass-pgc.ru
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
да, и слайдер в шапке перестал работать, наверное конфликт jquery
*

fsv

  • Moderator
  • 2765
  • 402 / 2
На сайте 2 раза jQuery, 2 мутулз, 2 jquery UI. Почистите.
Еще кофликт, связанный с использованием .on(), до версии 1.7 не будет работать. если оставите 1.6.2, замените
$("#keyword").on("focus", function() {
на
$("#keyword").focus(function() {
и
}).on("blur", function() {
на
}).blur(function() {
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
спасибо, все сделал, но все осталось по-прежнему:
по пустому полю enter или кнопка – срабатывает
в поле пробел, потом enter или кнопка – срабатывает
если просто кликнуть по кнопке - не срабатывает
в инпут value с текстом вообще убрал..
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Код: javascript
if( !$.trim( $('#keyword').val() ) ) {
замените на
Код: javascript
if( !$.trim( $('#keyword').val() ) || $('#keyword').val() == $('#keyword').attr("data-placeholder") ) {
Если и так не получится, завтра у себя посмотрю.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

sashgera

  • Захожу иногда
  • 113
  • 0 / 0
большое спасибо, все ок!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль авторизации пользователей убрать лишнее

Автор pautina

Ответов: 22
Просмотров: 11409
Последний ответ 20.01.2018, 06:08:46
от ElenaD
Модуль «VirtueMart Товары» вывод товаров по рейтингу

Автор myrka

Ответов: 0
Просмотров: 1227
Последний ответ 10.01.2017, 17:09:22
от myrka
Доработка стандартного поиска Joomla под VirtueMart

Автор mike_jag

Ответов: 38
Просмотров: 21070
Последний ответ 04.06.2016, 23:55:19
от SolopoV
Модуль или плагин для VirtueMart

Автор Stasweb

Ответов: 0
Просмотров: 988
Последний ответ 18.02.2015, 06:43:52
от Stasweb
Меню для VirtueMart, модуль "Accordion Menu - Offlajn.com" правка

Автор silversunrise

Ответов: 3
Просмотров: 5042
Последний ответ 07.02.2015, 09:13:29
от Stasweb