Делаю виджет.
Виджет показывается на страницах списка контента.
В нем нужно вывести список значений полей записей контента, допустим, - заголовки (title).
Например, мы находимся на странице списка объявлений в категории - Недвижимость -> Квартиры, отфильтрованного по цене.
В виджете нужно вывести весь отфильтрованный список заголовков из текущей категории.
Что можно написать в файле widget.php, чтобы записать этот список в переменную для передачи в шаблон?
Как вывести отфильтрованный список контента? 2.X
Посетитель Сообщений: 12 |
| ||
Посетитель Сообщений: 12 |
Андрей В:
Люди, помогите? )Делаю виджет. Виджет показывается на страницах списка контента. В нем нужно вывести список значений полей записей контента, допустим, - заголовки (title). Например, мы находимся на странице списка объявлений в категории - Недвижимость -> Квартиры, отфильтрованного по цене. В виджете нужно вывести весь отфильтрованный список заголовков из текущей категории. Что можно написать в файле widget.php, чтобы записать этот список в переменную для передачи в шаблон? | ||
Реклама
![]() |
|
||
Посетитель Сообщений: 4074 |
Андрей В:
Можно написать всё что угодно. Но много зависит, где вы делаете свой виджет. В content, в каком-то другом контроллере или вообще без контроллера.Что можно написать в файле widget.php Тут https://github.com/instantsoft/icms2/blob/master/system/controllers/content/widgets/list/widget.php есть пример того, что можно написать в файле widget.php. В вашем случае надо будет определить текущую категорию через Код PHP: и задать ее вместо этого блока https://github.com/instantsoft/icms2/blob/master/system/controllers/content/widgets/list/widget.php#L54
| ||
Посетитель Сообщений: 12 |
Loadырь:
Спасибо за помощь! Но что-то не получается.Можно написать всё что угодно. Но много зависит, где вы делаете свой виджет. В content, в каком-то другом контроллере или вообще без контроллера. Тут https://github.com/instantsoft/icms2/blob/master/system/controllers/content/widgets/list/widget.php есть пример того, что можно написать в файле widget.php. В вашем случае надо будет определить текущую категорию через Код PHP: и задать ее вместо этого блока https://github.com/instantsoft/icms2/blob/master/system/controllers/content/widgets/list/widget.php#L54
Виджет пока без контроллера. Но потом, может, запихну в контроллер контента, или создам отдельный. По сути, мне надо получить то же, что и выводится в стандартном списке контента, только без пагинации. Записал на видео, может понятней будет вопрос? ) https://youtu.be/MHvygibNamQ | ||
Посетитель Сообщений: 4074 |
Не сработало и не сработает. Так как тот код завязан на контроллере content, а вы пытались без контроллера его запустить. Всунете виджет в контроллер content, тогда заработает. Либо переписывать все запросы с учетом безконтрольности. Андрей В:
Чтобы убрать ограничения на количество записей в списке виджета, надо тут https://github.com/instantsoft/icms2/blob/master/system/controllers/content/widgets/list/widget.php#L14 поставитьПо сути, мне надо получить то же, что и выводится в стандартном списке контента, только без пагинации. Код PHP: В типе контента список формируется тут https://github.com/instantsoft/icms2/blob/master/system/controllers/content/frontend.php#L217. Там можете увидеть и как фильтрация сделана из фильтра.
Андрей В:
Посмотрел видео и думаю вы хотите сделать что-то такое https://prefitchi.ru/hotels ?Записал на видео Там всё непросто и на пальцах это не объяснить. Для начала фильтрация количества записей всё таки будет нужна. Как минимум при >3000 записей на ПК и при >1000 записей на мобилках у вас карта и страница с ней будут страшно тормозить. Затем вы столкнетесь с ограничениями Яндекса на карте (25000 запросов в сутки и эта цифра не такая и большая как многим кажется). И это тоже вам надо будет как-то обходить. Из-за этих ограничений потом вам надо будет решить задачу "Как вывести на карте только те записи, которые входят в область карты при ее прокрутке?". Остальные мелочи по работе с картой Яндекса (объединение меток в кластеры, масштабирование области карты по содержимому и т. п.), вполне можете осилить. В общем могу лишь пожелать удачи в этом деле. Редактировалось: 1 раз (Последний: 3 апреля 2021 в 20:42) | ||
Посетитель Сообщений: 3374 |
Андрей В:
Может быть проще сделать?В виджете нужно вывести весь отфильтрованный список заголовков из текущей категории. Что можно написать в файле widget.php, чтобы записать этот список в переменную для передачи в шаблон? Создать набор в типе контента, отфильтровать по цене
Спойлер
| ||
Посетитель Сообщений: 4074 |
Ris, вся фишка в том, что категория должна автоматически определяться и записи должны фильтроваться по фильтру набранному пользователем на сайте. | ||
Посетитель Сообщений: 3374 |
Loadырь:
Тогда может хук content_list_filter ? Ris, вся фишка в том, что категория должна автоматически определяться и записи должны фильтроваться по фильтру набранному пользователем на сайте. В нём получаем категорию из урла, фильтр из POST и вперёд? | ||
Посетитель Сообщений: 4074 |
slug и фильтр есть в request, по slug найти категорию не сложно, остальное дело техники. | ||
Посетитель Сообщений: 12 |
Loadырь:
Я попробовал это сделать с \system\controllers\content\widgets\list\widget.php Всунете виджет в контроллер content, тогда заработает. Никаких изменений его поведения не обнаружил. Loadырь:
Скорее как здесь - https://move.ru, ну или как на Авито, в Циане и т.д. Доска объяв недвижимости специфична, в отличие от простых объяв. Нужно активно работать с адресами и картой. Пока в инстанте никто еще не реализовал этот функционал, а зря. Приходится самому делать, хоть я и не прогер )Посмотрел видео и думаю вы хотите сделать что-то такое https://prefitchi.ru/hotels ? Loadырь:
Уже обошел ) Ключ у меня используется только единожды при добавлении объявления. Там идет проверка введенного адреса и если он есть, то вычисляются координаты. Которые потом, при просмотре списка и записи контента выводятся в отдельном шаблоне уже без ключа - он им не нужен.Затем вы столкнетесь с ограничениями Яндекса на карте (25000 запросов в сутки и эта цифра не такая и большая как многим кажется). И это тоже вам надо будет как-то обходить. Так что в день можно загружать минимум 5-10 тыс объяв. Сам просмотр их на сайте - "бесплатный" )) Loadырь:
Да, по идее надо, но думаю пока обойдусь. Так как не планирую размещать тысячи объяв. А для ускорения, можно выводить только минимальную информацию - заголовок, цена и координаты. Остальное можно подгружать (фото и прочее) аяксом при клике пользователем по метке на карте. (Уже работает).Из-за этих ограничений потом вам надо будет решить задачу "Как вывести на карте только те записи, которые входят в область карты при ее прокрутке?". Loadырь:
Да, все верно.вся фишка в том, что категория должна автоматически определяться и записи должны фильтроваться по фильтру набранному пользователем на сайте. Loadырь:
Сегодня именно этот файл исследовал. Чувствую, что в нем разгадка. Но не могу понять (нет знаний) как это все втыкнуть в виджет? )В типе контента список формируется тут https://github.com/instantsoft/icms2/blob/master/system/controllers/content/frontend.php#L217. Там можете увидеть и как фильтрация сделана из фильтра. | ||
Посетитель Сообщений: 12 |
Вопрос актуален. Кто-нибудь может дать рабочий код? Или, если есть готовый сайт объявлений недвижимости по типу перечисленных выше, готов купить. |
В начало страницы |
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.