Комментарии

Пользовательское представление ленты новостей
( 0 Голосов )

К числу самых примечательных отличий пользовательской части компонента Weblinks от административной его части относится представление ленты новостей. В базовом компоненте Weblinks имеется возможность реализовать ленту новостей в представлении единственной категории. Лента новостей позволяет подписаться на данный пункт меню и автоматически получать обновления по мере смены страницы.

Такая возможность встроена в Joomla, а следовательно, ввести ленту новостей в любой компонент не составит особого труда. Напомним, что в экранной форме Edit Menu Item (Редактирование пункта меню) имеется возможность отображать ссылку на ленту подачи информации. Если проанализировать исходный код метода display () из файла views/category/view.html.php, то можно обнаружить, что в нем вызывается метод _prepareDocument (). В конце этого метода имеется следующий фрагмент кода:

//  добавить  альтернативную ссылку на ленту подачи информации

($this->params->get('show_feed_link', 1) ==1) { $link = '&format=feed&limitstart='; $attribs  =  array('type' => 'application/rss+xml', 'title' => VRSS  2.0'); $this->document->addHeadLink(JRoute::_($link.'&type=rss'), Valternate', 'rel', $attribs); $attribs = array('type' => 'application/atom+xml', 'title' => Atom 1.0') ; $this->document->addHeadLink(JRoute::_($link.'&type=atom'), 'alternate', 'rel', $attribs); }

Если для данного элемента выбрать отображение ссылки на ленту подачи информации, то в конечном итоге будут созданы две ссылки: одна — для подачи информации в формате RSS 2.0, а другая — в формате Atom 1.0. Для маршрутизации, как и прежде, используется метод JRoute:: _ (), а сама ссылка указывается в качестве аргумента метода addHeadLink () из класса JDocument. В итоге создается ссылка, требующаяся пользователю для подписки на ленту подачи информации. Например, в браузере Firefox эта ссылка отображается в виде пиктограммы с распространяющимися в эфир радиоволнами слева от закладки "Лента новостей".

Следует заметить, что в данной ссылке формат указывается следующим образом: f ormat=f eed. При загрузке URL это значение вводится в запрос. Когда для этого URL создается объект документа, то вместо обычного объекта типа JDocumentHTML фактически создается объект типа JDocumentFeed. В методе display () из класса JController переменной $viewType присваивается значение "feed". А при выполнении метода getView() вместо файла view.html.php загружается файл views/category/view, feed.php.

По своему содержимому файл view. feed. php похож на файл view. html. php. Прежде всего следует заметить, что в нем объявляется тот же самый класс Webl inks View-Category, что и в файле view. html. php, только информация в нем представлена в другом формате, и поэтому у этого класса такое же самое имя. Но в любом цикле запроса загружается только один из этих классов. У данного класса имеется единственный метод display () с очень простым исходным кодом. Сначала в нем получаются объекты приложения и документа и устанавливается URL для ссылки на ленту подачи информации с помощью методов JRoute::_() и WeblinksHelperRoute: rgetCategoryRoute (), а затем устанавливаются некоторые значения для представления, в том числе количество отображаемых элементов, адрес электронной почты веб-сайта и сведения для редактора. Все эти установки делаются в экранной форме Global Configuration.

Далее из модели получаются требующиеся элементы и их категория. К этим элементам происходит поочередное обращение в цикле, и для каждого из них формируется отдельный URL. Кроме того, из заглавия элемента удаляется любой присутствующий в нем код HTML, а дата преобразуется в строковый формат. После этого создается новый объект типа JFeedltem и в него вводится новая информация. И наконец объект типа JFeedltem вводится в документ с помощью метода addltem () из класса JDocumentFeed.

Вот, собственно, и все. Все специальное форматирование, требующееся для лент новостей, выполняется автоматически в классах JDocumentFeed и JFeedltem. Этим же способом ленту новостей можно добавить в любой другой компонент.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости