Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2014-08-13

Plone sticky news

Недавно мне пришлось порешать одну проблему, связанную с коллекцией новостей (News Collection) в Plone.
Интересное дело, каждый второй пользователь хочет управлять порядком вывода новостей (News Item) в ленте (коллекции) и, соответственно, в портлете. В нашем случае надо, чтобы всегда верхней новостью болтался прогноз погоды. Другие пользователи хотят видеть сверху featured news. Почти как рекламные баннеры.

Несмотря на то, что это довольно частое требование к блоку новостей, разработчики Plone пока не встроили в коробочную версию никаких решений, помогающих справиться с такой задачей.
Из сторонних модулей нашлось:
Спасибо Стаковерфлоу за подсказку.

Если подумать, то универсальное решение проблемы может быть таким. Поскольку агрегатор новостей это просто коллекция, почему бы не сделать составные коллекции? Берем две традиционные коллекции, где в одной собраны/отфильтрованы featured новости а в другой все остальные, склеиваем их в одну, составную коллекцию. И, что важно, эту составную коллекцию не сортируем! Вуаля, используем составную коллекцию как агрегатор (ленту) новостей.

Я же решил проблему в лоб. Как уже сказано, агрегатор новостей это просто коллекция (это хорошо видно, если перейти на вкладку «содержание» раздела новостей). После поиска новостей в каталоге по заданным критериям, полученный список сортируется по заданному полю. Обычно это «эффективная» дата. Я же выбрал сортировку по полю тегов (категорий).
После чего достаточно в публикуемых новостях прописывать тег типа «2014-07-30». Тогда новость с таким тегом окажется между «2014-07-29» и «2014-07-31». А sticky/featured news надо пометить тегом типа «горячее, как пирожки» и сортировка их поставит вверху списка.
Потенциальных проблем две: если у новости не указать тег, в ленте ее видно не будет; со временем тегов наберется много или очень много, что может тормозить UI и вредить UX.

Если портлет новостей не хочет отражать новый порядок сортировки, можно заменить его на портлет коллекции, что дает дополнительные возможности настройки.

Выходит, в мой todo список попала еще одна задача: сделать аддон – составные/комбинированные коллекции для Plone.

Кстати, нашел интересный аддон http://plone.org/products/contentwellportlets/
позволяет портлеты поместить в любое место страницы.

И еще один интересный продукт:
мощная система фильтрации и поиска для больших коллекций, выглядит впечатляюще.


UPD.
Только что нашел интересный текст:

Related items aren't as normal criterion results. Related items are added to the resultset of the Collection, but:
They are not sorted using the choosen sorting criteria
They are not mixed with normal results
They are always returned first
So related items are always used first, then other results are displayed. This can be good (because you can use this feature to put an high important news as first item of your Collection) but not simple to understand. However this is not a bug... mix related items and other results sorting them all can be complex and expensive for Plone.


Это выходит так, что можно добавить related объекты к результату выдаваемому коллекцией, и эти объекты будут выведены первыми? Так именно этого нам и надо!
Проверю.




original post http://vasnake.blogspot.com/2014/08/plone-sticky-news.html

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)