Joomla

Joomla: Как сделать "чистый" вывод данных компонента для вебсервиса

Если Вам понадобилось разработать компонент для организации вебсервиса, который отвечает в формате XML, JSON и т.п., то возможно это материал съэкономит Вам некоторое время.

Постановка задачи: необходимо разработать компонент, который на запрос возвращает некоторые текстовые данные (пишем REST сервис). Проблема заключается в том, что вывод компонента производится в рамках шаблона сайта. То есть помимо данных компонента, там будет HTML меню и прочего содержимого.  А нам надо "чистый" вывод данных.

Для решения этой задачи можно применить следующий трюк. В Joomle 2.5 "правильные" компоненты построенны по технологии MVC. За вывод данных компонента отвечает метод display класса JViewLegacy, который необходимо переопределить. Для блокировки вывода данных шаблона сайта после вызова parent::display вызываем exit.

class ServiceViewService extends JViewLegacy {

	function display($tpl = null) {
		parent::display($tpl);
		exit; /* блокируем вывод сайта */ 
	}
}

Вот так просто, когда знаешь.