0 Пользователей и 1 Гость просматривают эту тему.
  • 270 Ответов
  • 26158 Просмотров
*

zikkuratvk

  • Глобальный модератор
  • 4818
  • 344 / 2
  • Обслуживаем проекты - дорого.
Прошло уже довольно таки много времени, поля в целом оказались вполне рабочим инструментом.
Но к сожалению все существующие фильрации оказались платными, мало того, что платными, так это еще и отдельные виды фильрации материалов.

Мы решили исправить эту проблему и сделали собственную реализацию фильтров для полей Joomla.

Система состоит из плагина и модуля.

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

В общем тестируем предлагаем и наслаждаемся :-)

Официальная страница модуля:
https://joomline.ru/rasshirenija/moduli/jlcontentfieldsfilter.html

Ссылка на скачивание:
https://joomline.net/ru/downloads/jlcontentfieldsfilter.html

Ссылка на документацию:
https://joomline.ru/docs/99-jlcontentfieldsfilter.html

Перед тем как задать вопрос, по поводу того, что не работает проверьте системные требования и убедитесь, что системный плагин "Система — JlContentFieldsFilter" включен.

Демо версия фильтра


Минимальная версия Joomla для корректной работы фильтра - Joomla 3.8.0
Внимание!!! Если у вас Joomla ниже 3.8.3, то для получения корректного результаты не используйте значения по умолчанию для полей.
« Последнее редактирование: 27.12.2020, 20:26:17 от zikkuratvk »
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
$this->_getList глядеть не надо, с кэшем проблемы будут. Когда $store уже определен поздно что-то делать, все надо делать до него.
Ну значится не судьба, в этом есть + я окончательно решил написать мини каталог\шоп =)
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Biss

  • Давно я тут
  • 994
  • 101 / 0
 
А что мешает переопределить константы в языках жумла?
Кнопка *отправить запрос* - нет константы.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Ну значится не судьба
не судьба для чего?
типа, текущий вариант фильтрации перестанет работать или что?
переводите на русский, а то люди на радостях поставят, а оно перестанет робить через версию.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
типа, текущий вариант фильтрации перестанет работать или что?
Не судьба делать фильтры без велосипедов.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

zikkuratvk

  • Глобальный модератор
  • 4818
  • 344 / 2
  • Обслуживаем проекты - дорого.
не судьба для чего?
типа, текущий вариант фильтрации перестанет работать или что?
переводите на русский, а то люди на радостях поставят, а оно перестанет робить через версию.

Будет работать и дальше но не удастся избавится от велосипеда в виде плагина системного.
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
оке.
кстати, на забугорном форуме есть тема про фильтры и вообще инфу собирают.
у вас англоязычная версия есть? могу туда линк закинуть, или рано?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Будет работать и дальше но не удастся избавится от велосипеда в виде плагина системного.
Велосипед не в плагине, а в подмене модели  ^-^. И избавиться от нее можно, я уже придумал как, но репа сейчас в нерабочем состоянии, по этому сделать PR можно, но протестировать никто не сможет.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
но протестировать никто не сможет.
А этот момент я как-то уже придумал. Можно сделать тестовый плагин(все равно его надо делать для примера), который будет изменять запрос com_conent ну и выводит скажем удаленные материалы или только материалы суперадмина.

Но есть и другой фактор. Они опять этот PR не примут. Даже если код будет в порядке. Абсолютно новый тригер, да еще и позволяющий менять запрос в БД....
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

zikkuratvk

  • Глобальный модератор
  • 4818
  • 344 / 2
  • Обслуживаем проекты - дорого.
не судьба для чего?
типа, текущий вариант фильтрации перестанет работать или что?
переводите на русский, а то люди на радостях поставят, а оно перестанет робить через версию.

Уже собрали с английским языком еще только не тестировали все это дело для JED
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

zikkuratvk

  • Глобальный модератор
  • 4818
  • 344 / 2
  • Обслуживаем проекты - дорого.
Новая версия 1.0.4

Английский перевод.
Добавлены языковые константы.
Обновление списка материалов через AJAX
Настройка отправки через GET или POST.
Автоматическая фильтрация при изменении параметров.

Официальная страница: https://joomline.ru/rasshirenija/moduli/jlcontentfieldsfilter.html
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
А этот момент я как-то уже придумал. Можно сделать тестовый плагин(все равно его надо делать для примера), который будет изменять запрос com_conent ну и выводит скажем удаленные материалы или только материалы суперадмина.

Но есть и другой фактор. Они опять этот PR не примут. Даже если код будет в порядке. Абсолютно новый тригер, да еще и позволяющий менять запрос в БД....
Я на счет этого подумал, мы не будем менять сам запрос, мы будем менять состояния модели, а другие возможности манипуляции с моделью не дадим, а это уже безопасно, но позводит нам делать отборки материалов в рамках возможностей самой модели. 
Выглядеть это будет очень просто:
Код
	public function getItems()
{
$dispatcher = JDispatcher::getInstance();
$aStates=array();
$dispatcher->trigger( 'onBeforeGetItems', array( & $aStates) );
if(count($aStates)){
foreach ( $aStates as $key => $state ) {
$this->setState($key, $state);
}
}
// Get a storage key.
$store = $this->getStoreId();

// Try to load the data from internal storage.
if (isset($this->cache[$store]))
{
return $this->cache[$store];
}

try
{
// Load the list items and add the items to the internal cache.
$this->cache[$store] = $this->_getList($this->_getListQuery(), $this->getStart(), $this->getState('list.limit'));
}
catch (RuntimeException $e)
{
$this->setError($e->getMessage());

return false;
}

return $this->cache[$store];
}
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Я на счет этого подумал, мы не будем менять сам запрос, мы будем менять состояния модели, а другие возможности манипуляции с моделью не дадим, а это уже безопасно, но позводит нам делать отборки материалов в рамках возможностей самой модели. 
Проку 0,  на саму выборку из плагина будет не повлять. В своих компонентах я так фильтры и делаю ставлю state и фильтрую,
При таком раскладе уже проще просто сделать PR с фильтром в com_content в getListQuery
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Проку 0,  на саму выборку из плагина будет не повлять. В своих компонентах я так фильтры и делаю ставлю state и фильтрую,
При таком раскладе уже проще просто сделать PR с фильтром в com_content в getListQuery
Почему? отсюда можно обнулять state, изменять ранее назначенные state и добавлять новые. Все state, что доступны в модели для выборки ты можешь изменить, следовательно и саму выборку тоже.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Почему? отсюда можно обнулять state, изменять ранее назначенные state и добавлять новые. Все state, что доступны в модели для выборки ты можешь изменить, следовательно и саму выборку тоже.
Но фильра по новому state не будет. К примеру я напишу
Код
setState('filter_32', 'Приврет');
На результат выборки это ни как не повлияет, пока я не изменю функции _getListQuery в конкретной моделе, конкретного компонента.

Хотя я не совсем прав, можно поменять текущие, но добавить новую фильтрацию не выйдет. Потому толку весьма мало.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
ну например в модели articles есть state filter.id по моему, я его использую как раз для своих выборок, так с его помошью можно уменьшить кол-во материалов совершенно любым способом. Проблема только в том, что увеличить нельзя. Хотя и тут я не прав. Можно и увеличить. Вот как я в плагине мультикатегорий делаю
Код
            $itemsModel->setState('filter.category_id', '');
            $itemsModel->setState('filter.article_id.include', true);
            $itemsModel->setState('filter.article_id', $catArticles);
и все, из любой категории любой материал. Так-что при правильной модели выборки можно делать любые.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
из любой категории любой материал
Фильтр по категории\категориям там и так есть =)
https://github.com/joomla/joomla-cms/blob/staging/components/com_content/models/articles.php#L357


https://github.com/joomla/joomla-cms/blob/staging/components/com_content/models/articles.php#L179-L543
Можно конечно доп запрос делать, но....... это тот же костыль только в профиль уже лучше модель переопределить.
То бишь сначала получать все ids. И передавать в state, ну как у тебя в коде, но это не то.

Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Фильтр по категории\категориям там и так есть =)
Так у меня не фильтр по категориям а плагин мультикатегорий, позволяющий выводить материалы в других категориях, т.е. полностью меняющий логику выборки категории.
Можно конечно доп запрос делать, но....... это тот же костыль только в профиль уже лучше модель переопределить.
То бишь сначала получать все ids. И передавать в state, ну как у тебя в коде, но это не то.
Не факт, стремление сделать все в одном запросе зачастую приводит к повышенной нагрузке на сервер из-за непомерного кол-ва джойнов, сложных условий, и тем более подзапросов. В таких случаях разбивка на разные запросы только облегчает жизнь серверу. Это чисто практическое замечание, несколько раз пришлось разруливать такие ситуации.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Так у меня не фильтр по категориям а плагин мультикатегорий, позволяющий выводить материалы в других категориях, т.е. полностью меняющий логику выборки категории.
Ну так фильтроваться то все равно удобно именно по id категорий.
Не факт, стремление сделать все в одном запросе зачастую приводит к повышенной нагрузке на сервер из-за непомерного кол-ва джойнов, сложных условий, и тем более подзапросов. В таких случаях разбивка на разные запросы только облегчает жизнь серверу. Это чисто практическое замечание, несколько раз пришлось разруливать такие ситуации.
Есть такое дело, особенно когда делают по несколько субзапросов. Но в большестве случаем от пары джоинов проблемы не будет.

Так или иначе возможность изменять state полезна, но все таки это не так гибко, как изменять запрос целиком. Но уже хоть что-то. Как говориться попытка не пытка
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Изменять запрос целиком конечно гибче, но при кэшировании с этим будет проблема т.к. ключ кэша формируется из установленных состояний.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
PR с записью дефолтных значений полей в базу смержили в 3.8.3
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ага, мне тоже пришло уведомление. а ещё зеркало для обнов вроде как будет. так что двинули прогресс.
всем медальки  ;D
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
ага, мне тоже пришло уведомление. а ещё зеркало для обнов вроде как будет. так что двинули прогресс.
всем медальки  ;D
Пора дальше двигаться. Надо триггер для фильтрации по доп. полям внедрять. Алгоритм откатан, пиши иссую  ^-^
Без нее завернут опять, надо сначала шум поднять.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Так это уже чистый PR, бага-то нет никакого, по сути. Почему завернут? Выкладывайте фильтр на JED, надо лобби создать небольшое сначала :).
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Так это уже чистый PR, бага-то нет никакого, по сути. Почему завернут?
Там по моему не только ошибки, но и запросы доп. функционала можно делать. Или нет? Если да, то хочу фильтрацию по доп. полям и точка  ^-^.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Нет. Там только ошибки. Видимо для улучшений что-то другое есть.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
в смысле - другое?
сразу создаешь PR, типа "предлагаю оптимизировать фильтрацию по полям"
ссылку на JED, на демо.
типа, все работает уже, но можно круче и роднее. Дальше код.
чтобы видно было всем заинтересованным, что счастье - рядом, надо только галочку поставить  ;D
*

zikkuratvk

  • Глобальный модератор
  • 4818
  • 344 / 2
  • Обслуживаем проекты - дорого.
Я так понимаю что они не очень хотят этот функционал из коробки это сильно может ударить по коммерческим расширениям.
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ну это вопрос простой, имхо.
на JED вы и так заходите, для PR идея готова, я так понял.
так что потратить 10 минут времени на грамотный постинг и посмотреть реакцию зала  ;)
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Я так понимаю что они не очень хотят этот функционал из коробки это сильно может ударить по коммерческим расширениям.
Не только. Просто с ним начнуют юзать com_content для всяких каталогов, а он для этого не предназначался
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT Eternal admin - плагин "вечный админ" для Joomla

Автор sergeytolkachyov

Ответов: 0
Просмотров: 298
Последний ответ 21.12.2023, 09:25:25
от sergeytolkachyov
WT Amo CRM library - простая PHP библиотека для Joomla 4+ (для разработчиков)

Автор sergeytolkachyov

Ответов: 2
Просмотров: 1560
Последний ответ 17.10.2023, 12:38:52
от sergeytolkachyov
Плагин Tabs & Sliders & Spoilers для Joomla 2.5/3.x

Автор ELLE

Ответов: 290
Просмотров: 61135
Последний ответ 14.06.2023, 09:49:02
от Sergeych
Бесплатный плагин импорта экспорта данных в поля материалов Joomla - CFI

Автор zikkuratvk

Ответов: 8
Просмотров: 4285
Последний ответ 02.04.2023, 11:35:58
от Olg
А-ля корзина для материалов Joomla

Автор Efanych

Ответов: 150
Просмотров: 15216
Последний ответ 25.11.2022, 21:50:22
от zikkuratvk