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


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

Фильтр нестандартных элементов


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

#1 svizina

svizina

Отправлено 11 August 2012 - 16:49

На своем  сайте  - Joomla 2.5 / zoo 2.6.2/ JBZoo 1.3.5 -  карточка товара выводиться в том числе несколько самописными элементами
Добавил фильтр поинструкции. Модуль mod_jbzoo_search вывел только текстовые поля. Получается JBZoo 1.3.5 модуль фильтр работает только со стандартными элементами, что в папке \media\zoo\elements\ ?
  • 0

#2 svizina

svizina

Отправлено 12 August 2012 - 12:50

добавлю нет ответа полез в код
в админке сделал переиндексацию ответ = JBZoo - total updated lines: 118..
но товаров у меня 14 тыщ  индексов должно быть значительно больше,  а в таблице jbzoo_zoo_jbzoo_index всего  118.  значений
К примеру в таблице (что на демо сайте) в  jbzoo_zoo_jbzoo_index 70 тыщ 762
тоесть  переиндексация не работает и  поиск/фильтр ради чего и купил тоже не работают
  • 0

#3 SmetDenis

SmetDenis

Отправлено 13 August 2012 - 03:43

Вся информация для поиска берется из таблицы индекса Zoo.
По самописным элемнтам искать не будет, если элемент ничего не сохраняет в таблицу индексов.
За это отвечает метод getSearchData() в коде элемента.
Хорошо, если ваши элементы сохраняют информацию в "value". Множественная информация должна разбиваться через "\n".

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

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



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


#4 svizina

svizina

Отправлено 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][]">

Прикрепленные файлы

  • Прикрепленный файл  270_.zip   4.58К   95 Количество загрузок:

  • 0

#5 svizina

svizina

Отправлено 13 August 2012 - 09:33

также есть самописный элемент атрибуты (из 2_х полей ) кот. добавляет произвольный текст (text) + его значение (value) и во фронте выводит таблицу характеристик
скрин Изображение
в модуле поиска/фильтра  выбрал его вывод как выпадающий список - но список состоит из  значений (value)=>(value)
а должен по идее (value)=> (text)
  • 0

#6 SmetDenis

SmetDenis

Отправлено 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()"



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



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


#7 svizina

svizina

Отправлено 13 August 2012 - 12:54

добавил в элемент relatedcatoppo (Торговая марка) метод  _getSearchData
    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 по-прежнему ничего не добавилось
  • 0

#8 svizina

svizina

Отправлено 13 August 2012 - 13:02

в файле  /media/zoo/applications/jbuniversal/framework/helpers/jbfilter.php - мапинг в методе _getRender()
добавил

case 'relatedcatoppo':
case 'itemcategory':
                    $renderMethod = 'category';
                    break;

пробывал так и так
  • 0

#9 SmetDenis

SmetDenis

Отправлено 13 August 2012 - 17:24

не так "_getSearchData" а так "getSearchData"

подчеркивание только в случае если у вас повторяющийся элемент.

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



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


#10 svizina

svizina

Отправлено 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 сюда не доходит

  • 0




Click to return to top of page in style!