Фильтр нестандартных элементов
#1
Отправлено 11 August 2012 - 16:49
Добавил фильтр поинструкции. Модуль mod_jbzoo_search вывел только текстовые поля. Получается JBZoo 1.3.5 модуль фильтр работает только со стандартными элементами, что в папке \media\zoo\elements\ ?
#2
Отправлено 12 August 2012 - 12:50
в админке сделал переиндексацию ответ = JBZoo - total updated lines: 118..
но товаров у меня 14 тыщ индексов должно быть значительно больше, а в таблице jbzoo_zoo_jbzoo_index всего 118. значений
К примеру в таблице (что на демо сайте) в jbzoo_zoo_jbzoo_index 70 тыщ 762
тоесть переиндексация не работает и поиск/фильтр ради чего и купил тоже не работают
#3
Отправлено 13 August 2012 - 03:43
По самописным элемнтам искать не будет, если элемент ничего не сохраняет в таблицу индексов.
За это отвечает метод getSearchData() в коде элемента.
Хорошо, если ваши элементы сохраняют информацию в "value". Множественная информация должна разбиваться через "\n".
Если вы дадите мне доступ к вашему сайту, то я смогу сказать более точно, что у вас случилось.
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#4
Отправлено 13 August 2012 - 09:23
элемент (сделан на основе relatedcategories ) выводит в админе список категорий (из другой app где бренды с картинками - bosch makita , etc ),
а во фронте в карточке товара логотип из категории другой app(bosch makita , etc )
так он не записывается в базу поиска
возможно что используется не поле value а category
<select id="elements0994f030-aef0-4e78-9386-52fa2cb053fbcategory" name="elements[0994f030-aef0-4e78-9386-52fa2cb053fb][category][]">
Прикрепленные файлы
#5
Отправлено 13 August 2012 - 09:33
скрин

в модуле поиска/фильтра выбрал его вывод как выпадающий список - но список состоит из значений (value)=>(value)
а должен по идее (value)=> (text)
#6
Отправлено 13 August 2012 - 10:28
В файле relatedcatoppo.php не хватает метода getSearchData().
Примеров реализаций полно, например тут - /media/zoo/elements/..
Соответственно после того как он появится, нужно пересохранить все материалы, чтобы данные попали в таблицы поискового индекса.
Чтобы сделать собственный фильтр по вашему полю, вам нужно по аналогии сделать:
/media/zoo/applications/jbuniversal/config/mod_jbzoo_search/ - настройки для фильтра
/media/zoo/applications/jbuniversal/framework/render/filter/ - рендер поля в форме фильтра
/media/zoo/applications/jbuniversal/framework/models/ - модель поиска (хотя должно хватить того что по умолчанию)
/media/zoo/applications/jbuniversal/framework/helpers/jbfilter.php - мапинг в методе _getRender()
Без понимания общей картины работы JBZoo, довольно сложно будет сделать фильтр по произвольному полю. Хотя на самом деле там "все по полочкам лежит"
Если вас устроит обычное текстовое поле в форме поиска, то хватит только сделать "getSearchData()"
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#7
Отправлено 13 August 2012 - 12:54
protected function _getSearchData() { $categories = $this->app->table->category->getById($this->get('category', array()), true); return (empty($categories) ? null : implode("\n", $categories)); }персохранил в админе статью товара
в таблицу jos_zoo_jbzoo_index по-прежнему ничего не добавилось
#8
Отправлено 13 August 2012 - 13:02
добавил
пробывал так и такcase 'relatedcatoppo':
case 'itemcategory':
$renderMethod = 'category';
break;
#9
Отправлено 13 August 2012 - 17:24
подчеркивание только в случае если у вас повторяющийся элемент.
Отключайте проверку лицензий как можно скорее!
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
#10
Отправлено 13 August 2012 - 17:44
вы можете написать логику сохранения итема в jos_zoo_item и добавления параллельно в jos_zoo_jbzoo_index. я думаю через event но потом куда ?
\media\zoo\applications\jbuniversal\framework\models\jbmodel.searchindex.php тут
в function _getData($row)
писал if ($elementType == 'relatedcatoppo'){echo jutility::dump($row);jexit();} но элемент мой relatedcatoppo сюда не доходит