Виджет показывается на страницах списка контента.
В нем нужно вывести список значений полей записей контента, допустим, — заголовки (title).
Например, мы находимся на странице списка объявлений в категории — Недвижимость -> Квартиры, отфильтрованного по цене.
В виджете нужно вывести весь отфильтрованный список заголовков из текущей категории.
Что можно написать в файле widget.php, чтобы записать этот список в переменную для передачи в шаблон?
Люди, помогите? )
Делаю виджет.
Виджет показывается на страницах списка контента.
В нем нужно вывести список значений полей записей контента, допустим, — заголовки (title).
Например, мы находимся на странице списка объявлений в категории — Недвижимость -> Квартиры, отфильтрованного по цене.
В виджете нужно вывести весь отфильтрованный список заголовков из текущей категории.
Что можно написать в файле widget.php, чтобы записать этот список в переменную для передачи в шаблон?
Можно написать всё что угодно. Но много зависит, где вы делаете свой виджет. В content, в каком-то другом контроллере или вообще без контроллера.Что можно написать в файле widget.php
Тут github.com/instantsoft/icms2/blob/master/system/controllers/content/widgets/list/widget.php есть пример того, что можно написать в файле widget.php. В вашем случае надо будет определить текущую категорию через
getCategoryBySLUG($ctype_name, $slug)
Спасибо за помощь! Но что-то не получается.
Можно написать всё что угодно. Но много зависит, где вы делаете свой виджет. В content, в каком-то другом контроллере или вообще без контроллера.
Тут github.com/instantsoft/icms2/blob/master/system/controllers/content/widgets/list/widget.php есть пример того, что можно написать в файле widget.php. В вашем случае надо будет определить текущую категорию через
и задать ее вместо этого блока github.com/instantsoft/icms2/blob/master/system/controllers/content/widgets/list/widget.php#L54
getCategoryBySLUG($ctype_name, $slug)
Виджет пока без контроллера. Но потом, может, запихну в контроллер контента, или создам отдельный.
По сути, мне надо получить то же, что и выводится в стандартном списке контента, только без пагинации.
Записал на видео, может понятней будет вопрос? )
youtu.be/MHvygibNamQ
Чтобы убрать ограничения на количество записей в списке виджета, надо тут github.com/instantsoft/icms2/blob/master/system/controllers/content/widgets/list/widget.php#L14 поставитьПо сути, мне надо получить то же, что и выводится в стандартном списке контента, только без пагинации.
$limit = 0;
Посмотрел видео и думаю вы хотите сделать что-то такое prefitchi.ru/hotels ?Записал на видео
Там всё непросто и на пальцах это не объяснить.
Для начала фильтрация количества записей всё таки будет нужна. Как минимум при >3000 записей на ПК и при >1000 записей на мобилках у вас карта и страница с ней будут страшно тормозить.
Затем вы столкнетесь с ограничениями Яндекса на карте (25000 запросов в сутки и эта цифра не такая и большая как многим кажется). И это тоже вам надо будет как-то обходить.
Из-за этих ограничений потом вам надо будет решить задачу "Как вывести на карте только те записи, которые входят в область карты при ее прокрутке?".
Остальные мелочи по работе с картой Яндекса (объединение меток в кластеры, масштабирование области карты по содержимому и т. п.), вполне можете осилить.
В общем могу лишь пожелать удачи в этом деле.
Может быть проще сделать?В виджете нужно вывести весь отфильтрованный список заголовков из текущей категории.
Что можно написать в файле widget.php, чтобы записать этот список в переменную для передачи в шаблон?
Создать набор в типе контента, отфильтровать по цене
Тогда может хук content_list_filter?Ris, вся фишка в том, что категория должна автоматически определяться и записи должны фильтроваться по фильтру набранному пользователем на сайте.
В нём получаем категорию из урла, фильтр из POST и вперёд?
Я попробовал это сделать с \system\controllers\content\widgets\list\widget.phpВсунете виджет в контроллер content, тогда заработает.
Никаких изменений его поведения не обнаружил.
Скорее как здесь — move.ru, ну или как на Авито, в Циане и т.д. Доска объяв недвижимости специфична, в отличие от простых объяв. Нужно активно работать с адресами и картой. Пока в инстанте никто еще не реализовал этот функционал, а зря. Приходится самому делать, хоть я и не прогер )Посмотрел видео и думаю вы хотите сделать что-то такое prefitchi.ru/hotels ?
Уже обошел ) Ключ у меня используется только единожды при добавлении объявления. Там идет проверка введенного адреса и если он есть, то вычисляются координаты. Которые потом, при просмотре списка и записи контента выводятся в отдельном шаблоне уже без ключа — он им не нужен.Затем вы столкнетесь с ограничениями Яндекса на карте (25000 запросов в сутки и эта цифра не такая и большая как многим кажется). И это тоже вам надо будет как-то обходить.
Так что в день можно загружать минимум 5-10 тыс объяв. Сам просмотр их на сайте — "бесплатный" ))
Да, по идее надо, но думаю пока обойдусь. Так как не планирую размещать тысячи объяв. А для ускорения, можно выводить только минимальную информацию — заголовок, цена и координаты. Остальное можно подгружать (фото и прочее) аяксом при клике пользователем по метке на карте. (Уже работает).Из-за этих ограничений потом вам надо будет решить задачу "Как вывести на карте только те записи, которые входят в область карты при ее прокрутке?".
Да, все верно.вся фишка в том, что категория должна автоматически определяться и записи должны фильтроваться по фильтру набранному пользователем на сайте.
Сегодня именно этот файл исследовал. Чувствую, что в нем разгадка. Но не могу понять (нет знаний) как это все втыкнуть в виджет? )В типе контента список формируется тут github.com/instantsoft/icms2/blob/master/system/controllers/content/frontend.php#L217. Там можете увидеть и как фильтрация сделана из фильтра.