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


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

Настройка фильтра по тексту


Лучший Ответ SmetDenis , 01 September 2015 - 13:57

Просто создайте тему в этом разделе с кратким описанием задачи.
http://forum.jbzoo.c...-komandy-jbzoo/ Перейти к сообщению


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

#1 zeus07

zeus07

Отправлено 15 August 2015 - 20:27

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

 

Ссылка для примера: http://vision.artcol...ogramma/antioks

 

Объясню суть.

 

Необходимо сделать фильтр товаров по составу, а именно по списку ингредиентов, входящих в состав препарата. В фильтре надо сделать список с чекбоксами, но как-то можно сделать так, чтобы эти ингредиенты он искал как текст? То есть не хотелось бы в карточке товара дублировать информацию, создавать отдельно список и в карточке чекбоксами отмечать необходимые ингредиенты, которые есть в данном препарате. 

 

Поэтому вот хотелось бы, чтобы вывод в фильтре был чекбоксами, а искало по тексту. Если так можно сделать, подскажите пожалуйста как? 


  • 0

#2 SmetDenis

SmetDenis

Отправлено 17 August 2015 - 07:27

С помощи настроек такого не добиться.
Точнее можно, но придется использовать не самый красивый и удобный вариант с дублирование контента.

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

media\zoo\applications\jbuniversal\config\mod_jbzoo_search\textarea.xml

Сюда добавить строку со своим название шаблона
cjrg_200x0.png

Далее сделать копию класса, который отвечает за вывод
media\zoo\applications\jbuniversal\framework\render\filter\element.text.php

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



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


#3 zeus07

zeus07

Отправлено 17 August 2015 - 22:04

Денис, спасибо. Такой вопрос. В каком формате прописать свою строку с шаблоном в этом коде: 

  1. <param name="jbzoo_filter_render"
  2. type="list"
  3. label="JBZOO_ELEMENT_TEMPLATE"
  4. description="JBZOO_ELEMENT_TEMPLATE_DESC"
  5. default="_auto_"
  6. >
  7. <option value="_auto_">JBZOO_ELEMENT_TEMPLATE_AUTO</option>
  8. <option value="text">JBZOO_ELEMENT_TEMPLATE_TEXT</option>
  9. <option value="hidden">JBZOO_ELEMENT_TEMPLATE_HIDDEN</option>
  10. </param>

То есть какой параметр value дать? 


  • 0

#4 SmetDenis

SmetDenis

Отправлено 19 August 2015 - 08:18

  1. <option value="mytemplate">My template</option>
Соответственно алиас "mytemplate" нужно использовать в названии файла и класса в этом файле.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



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


#5 zeus07

zeus07

Отправлено 19 August 2015 - 12:13

SmetDenis сказал(а) 17 Ауг 2015 - 06:27:

Далее сделать копию класса, который отвечает за вывод media\zoo\applications\jbuniversal\framework\render\filter\element.text.php Там вывести список чекбоксов или список как вам нужно Пример вывода можно найти в любом файле в этой же папке с названием checkbox или select

 

Получается в файле  media\zoo\applications\jbuniversal\framework\render\filter\element.text.php я скопировал класс, дал ему название, как в предыдущем файле, и теперь вместо функции, которая там сейчас, мне надо вставить функцию из element,checkbox.php? Ну если я хочу чекбоксами.\

Вот это надо скопировать и вставить?

  1. public function html()
  2. {
  3. $this->_isMultiple = true;
  4.  
  5. $values = $this->_getValues();
  6.  
  7. return $this->app->jbhtml->checkbox(
  8. $this->_createOptionsList($values),
  9. $this->_getName(''),
  10. $this->_attrs,
  11. $this->_value,
  12. $this->_getId()
  13. );
  14. }
  15.  
  16. /**
  17. * Get DB values
  18. * @param null $type
  19. * @return array|mixed|null
  20. */
  21. protected function _getValues($type = null)
  22. {
  23. return $this->_getDbValues();
  24. }

  • 0

#6 SmetDenis

SmetDenis

Отправлено 21 August 2015 - 07:57


Все что вернет метод html() появится в фильтре.
Метод _createOptionsList - создает список опций, который выведется в виде checkbox'ов c помощью хелпера jbhtml.

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



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


#7 zeus07

zeus07

Отправлено 25 August 2015 - 13:07

Денис, я извиняюсь, что постоянно задаю вопросы, и не всё понимаю. Но сейчас файл media\zoo\applications\jbuniversal\framework\render\filter\element.text.php у меня выглядит вот так:

  1. <?php
  2. /**
  3. * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
  4. *
  5. * @package jbzoo
  6. * @version 2.x Pro
  7. * @author JBZoo App http://jbzoo.com
  8. * @copyright Copyright (C) JBZoo.com, All rights reserved.
  9. * @license http://jbzoo.com/license-pro.php JBZoo Licence
  10. * @coder Denis Smetannikov <denis@jbzoo.com>
  11. */
  12.  
  13. // no direct access
  14. defined('_JEXEC') or die('Restricted access');
  15.  
  16.  
  17. /**
  18. * Class JBFilterElementText
  19. */
  20. class JBFilterElementText extends JBFilterElement
  21. {
  22. /**
  23. * Get main attrs
  24. * @param array $attrs
  25. * @return array
  26. */
  27. protected function _getAttrs(array $attrs)
  28. {
  29. $attrs = parent::_getAttrs($attrs);
  30.  
  31. $attrs['maxlength'] = '255';
  32. $attrs['size'] = '60';
  33.  
  34. $attrs = $this->_addPlaceholder($attrs);
  35.  
  36. return $attrs;
  37. }
  38.  
  39. }
  40.  
  41. class Vision extends JBFilterElement
  42. {
  43. /**
  44. * Get main attrs
  45. * @param array $attrs
  46. * @return array
  47. */
  48. public function html()
  49. {
  50. $this->_isMultiple = true;
  51. $values = $this->_getValues();
  52. return $this->app->jbhtml->checkbox(
  53. $this->_createOptionsList($values),
  54. $this->_getName(''),
  55. $this->_attrs,
  56. $this->_value,
  57. $this->_getId()
  58. );
  59. }
  60. /**
  61. * Get DB values
  62. * @param null $type
  63. * @return array|mixed|null
  64. */
  65. protected function _getValues($type = null)
  66. {
  67. return $this->_getDbValues();
  68. }
  69.  
  70. }

Это правильно? Вставил функцию, чтобы выводилось чекбоксами. Если верно, то как сам фильтр теперь настроить?


  • 0

#8 SmetDenis

SmetDenis

Отправлено 27 August 2015 - 08:14

Вы изменили название класса
Оно должно соответствовать названию файла + префикс.

В настройках поля появится опция, которую вы добавили в xml. Её нужно выбрать в настройках поля фильтра.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



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


#9 zeus07

zeus07

Отправлено 27 August 2015 - 14:52

То есть в данный момент мне надо файл element.text.php переименовать в element.vision.php ? Правильно?


Сообщение отредактировал zeus07: 27 August 2015 - 14:52

  • 0

#10 SmetDenis

SmetDenis

Отправлено 27 August 2015 - 15:02

И название класса JBFilterElementVision/

Все по аналогии. Как взять готовый элемент checkbox и использовать другое ключевое слово.


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



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





Click to return to top of page in style!