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


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

Помогите разобраться c API JBZoo


Сообщений в теме: 14

#1 azazello

azazello

Отправлено 30 March 2017 - 18:27

Всем привет! Вот в документации есть такая функция:

// произвольная фильтрация на основе индекса JBZoo
// массив $elements полностью совпадает со структурой запроса из фильтра.
$elements = array(
'<ELEMENT_ID>' => 'Значение',
);
$items = JBModelFilter::model()->filter($elements);

Вот я хочу найти все элементы с определенным значением свойства. Известен id Element-a и его значение ( тип его TEXT ). Пишу:

$elements = array(
'51a9c783-25af-4d94-8d41-d6d76575b7b7' => '1',
);
$items = JBModelFilter::model()->filter($elements);

Ничего не возвращает. В чем может быть дело ??? 


#2 usersJbzoo

usersJbzoo

Отправлено 28 June 2017 - 08:29

Похоже ошибка в документации, нет функции filter в модели JBModelFilter.

Используйте функцию search

$searchModel = JBModelFilter::model();
$items      = $searchModel->search($elements, $logic, $type, $appId);

  • 0

#3 Rivermc

Rivermc

Отправлено 07 December 2017 - 09:16

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

вот такой вариант не работает 

  1. '51a9c783-25af-4d94-8d41-d6d76575b7b7' => '1, 2, 3',

  • 0

#4 MOKEV

MOKEV

Отправлено 07 December 2017 - 10:39

вот такой вариант не работает

 

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

$elements = array(
'51a9c783-25af-4d94-8d41-d6d76575b7b7' => '1',
'51a9c783-25af-4d94-8d41-d6d76575b7b7' => '2',
'51a9c783-25af-4d94-8d41-d6d76575b7b7' => '3',
);

  • 0

#5 Rivermc

Rivermc

Отправлено 07 December 2017 - 12:23

 

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

$elements = array(
'51a9c783-25af-4d94-8d41-d6d76575b7b7' => '1',
'51a9c783-25af-4d94-8d41-d6d76575b7b7' => '2',
'51a9c783-25af-4d94-8d41-d6d76575b7b7' => '3',
);

Я так пробовал, выдавал не верный результат.


  • 0

#6 mmth

mmth

Отправлено 07 December 2017 - 13:46

Я так пробовал, выдавал не верный результат.

вторую переменную $logic нужно "AND" указать


  • 0

#7 Rivermc

Rivermc

Отправлено 07 December 2017 - 14:50

вторую переменную $logic нужно "AND" указать

Это не работает. Вот кусок кода

$elements = array(
    '698cf832-7ee4-4e1f-ade3-0145d9a2caa0' => '#сайт',
    '698cf832-7ee4-4e1f-ade3-0145d9a2caa0' => '#логотип'
);
 
$searchModel = JBModelFilter::model();
$items      = $searchModel->search($elements, 'AND', 'portfolio', 1, false, $offset, $count + 1, 'name');
 
а результат тут http://wowow.solomonkb.ru/portfolio
 
он выбирает только по последнему условию, вывел материалы с хештегом #логотип, второе условие он просто не учитывает

  • 0

#8 CB9TOIIIA

CB9TOIIIA

Отправлено 07 December 2017 - 17:16

#делайпроще

 

https://www.regularl...ponentsanywhere

 

Модулем фильтра - делаешь как надо - далее просто урл без SEF обрамляешь шорткодом от компонента - готово.


  • 0

#9 Rivermc

Rivermc

Отправлено 08 December 2017 - 06:25

#делайпроще

 

https://www.regularl...ponentsanywhere

 

Модулем фильтра - делаешь как надо - далее просто урл без SEF обрамляешь шорткодом от компонента - готово.

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

Я думаю что мою проблему можно решить путем добавления цикла обхода массива элемента в процедуру search если элемент таковым является, но я почти не понимаю как работает этот код и не знаю как его доделать :( Святоша пАмАгИ

 

P.S. Предпочитаю для загрузки модулей джумлы в любом месте использовать вот такую конструкцию, а не сторонний компонент

 

jimport( 'joomla.application.module.helper' ); // подключаем нужный класс, один раз на странице, перед первым выводом
$module = JModuleHelper::getModules('inline_cat_opis_price'); // получаем в массив все модули из заданной позиции
$attribs['style'] = 'xhtml'; // задаём, если нужно, оболочку модулей (module chrome)
echo JModuleHelper::renderModule($module[0], $attribs); // выводим первый модуль из заданной позиции

Сообщение отредактировал Rivermc: 08 December 2017 - 08:30

  • 0

#10 CB9TOIIIA

CB9TOIIIA

Отправлено 08 December 2017 - 09:57

У меня тоже - но в профиль:

<?php $pos = "test123";
$modules = JModuleHelper::getModules($pos);
$attribs['style'] = 'xhtml';
foreach ($modules as $module){
    echo JModuleHelper::renderModule($module, $attribs);
} ?>

По поводу Выше: jbdump - смотреть какие методы есть (функции) и как они работают.


  • 0




Click to return to top of page in style!