Перейти к содержимому


Фотография
- - - - -

Поиск по пользовательскому полю - фильтр


Лучший Ответ SmetDenis , 04 December 2014 - 09:54

Думаю вам стоит разработать для артикула собственный элемент со всеми особенностями реализации.
Иначе хаки начинают конфликовать.

Начать можно с этого
http://jbzoo.ru/docs...e-element-basic
http://jbzoo.ru/docs...-item-additions Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 3

#1 axeld

axeld

Отправлено 03 December 2014 - 08:35

Здравствуйте.

Возможно ли дописать в функционал фильтра JBZoo Search следующие изменения.

есть пользовательское, поле где написано "123.45, 345-45, 675888, 456 888, и т.д."

Если ввести ,например, 123.45 - но все ok - если ввести 12345 - то такой товар не находит.

 

Нужно что бы искал товары по пользовательскому полю 

1 без точки (если она есть внутри символов)

2 без тире (если оно есть внутри символов)

3 без пробела (если он есть внутри символов)

 

Может где то "регулярку" дописать ?

 

 

PS

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

 


  • 0

#2 SmetDenis

SmetDenis

Отправлено 04 December 2014 - 08:44

Поиск проходит по тем значениям, которые вернутся из функции _getSearchData

В частности для обычного текстового поля

Скопируйте файл media\zoo\elements\text\text.php
сюда media\zoo\applications\jbuniversal\elements\text\text.php

Можно заменить на следующий вариант
    protected function _getSearchData()
    {
        if ($this->identifier == '<ELEMENT_ID>') { // указать id артикула
            $value = $this->get('value', $this->config->get('default'));
            return preg_replace('#[^0-9]#ius', '', $value);
        }
        return $this->get('value', $this->config->get('default'));
    }

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 axeld

axeld

Отправлено 04 December 2014 - 09:50

Так вообще перестал искать по полю аналоги 'be08ac54-524f-4a3f-b682-4b6d9e3f9f65'

	protected function _getSearchData() {
		
		
		 if ($this->identifier == 'be08ac54-524f-4a3f-b682-4b6d9e3f9f65') { // указать id артикула
            $value = $this->get('value', $this->config->get('default'));
            return preg_replace('#[^0-9]#ius', '', $value);
        }
		

		 return $this->get('value', $this->config->get('default'));
		
		
		
	} 

но до этого я , с вашей помощью, изменил этот файл и была дописана функция getSearchData()

 public function getSearchData() {
		
        $result = array();
        
        if ($this->identifier == 'be08ac54-524f-4a3f-b682-4b6d9e3f9f65') {
            $result[] = $this->getItem()->getElement('b0d2b218-87a9-4573-85b7-350d2eec1061')->getSearchData();
        }
        
		foreach ($this as $self) {
			$result[] = $this->_getSearchData();
		}

		return (empty($result) ? null : implode("\n", $result));
    }

поиск по двум полям


  • 0

#4 SmetDenis

SmetDenis

Отправлено 04 December 2014 - 09:54   Лучший Ответ

Думаю вам стоит разработать для артикула собственный элемент со всеми особенностями реализации.
Иначе хаки начинают конфликовать.

Начать можно с этого
http://jbzoo.ru/docs...e-element-basic
http://jbzoo.ru/docs...-item-additions
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!