Заблудился в MVC или Feed "с чистого листа" в Joomla

  • Автор темы Автор темы Fellix
  • Дата начала Дата начала

Fellix

Новичок
Такая задача возникла, создать feed с полностью своими тегами для стороннего компонента Joomla

Как я понимаю всё проходит через /libraries/joomla/document/feed/feed.php, а дальше подключаются atom.php или rss.php
но там свои правила и теги уже прописаны, а мне нужно "с чистого листа" со своими тегами.

Файл со всеми нужными переменными view.feed.php у компонента есть, но опять же, все передается в библиотеку Джумлы:

PHP:
    $item = new JFeedItem();
    $item->title         = $topname;
    $item->link         = $link;
    $item->description     = $desc;
    $item->date            = $this->escape($row->creatdate);
    $document->addItem( $item );

Направьте пожалуйста кто знает, не соображу с какой стороны подступиться ))
 
Пробовал. И очередной раз пожалел что вообще спросил.
Молчат как рыбы :(
 
Fellix
Такая задача возникла, создать feed с полностью своими тегами для стороннего компонента Joomla
Вот рецепт:
1. Прочитать книгу по PHP (хотя бы котерова и его 1280 стр. PHP5) на это уйдет максимум месяц, если выбирать самое нужное
2. Разобраться в Joomla
3. Закончить проект и перейти на FW
4. Программировать в удовольствие
5. ?????
6. PROFIT!!!
 
Спасибо, очень помогли...
Не обращайте внимание, тут у каждого второго ЧСВ шкалит.

а мне нужно "с чистого листа" со своими тегами
Ну т.е. вам нужен свой рендерер. Не знаю какую версию вы используете, но в 2.5 свой рендерер по-нормальному подключить нельзя. Можно выбрать только из предлагаемых.

Поэтому вариантов как бы два:
1) Встроить этот самый рендерер прямо во вью.
2) Использовать xml view вместо feed
 
В догонку: можно, кстати, еще отнаследоваться и от JFeedDocument и переопределить метод render.
 
lagoff, огромное спасибо!

1) Встроить этот самый рендерер прямо во вью.

Это думаю то что надо, так и хотел делать. Но по какому адресу потом будет доступен фид?
То есть я так понимаю, что в файле view.feed.php я отказываюсь от кода отправки данных в библиотеку джумла (приведенный выше) и организовываю фид прям в этом файле.
Но как я потом до него достучусь? Этот момент не соображу)
 
Ну а по какому адресу он исполняется в обычном случае?
 
Хвост урл выглядит так во всех случаях с фидом - site.ru/put_do_komponenta?format=feed&type=rss либо *?format=feed&type=atom
rss.php и atom.php как раз и подключаются в зависимости от урл
 
Fellix,

Придется вам поковырять исходники. Я давно с джумлой не работал, поэтому без четкого знания воркфлоу мне сложно отвечать. Но бегло глядя на application.php, а именно
PHP:
$document->setTitle($params->get('page_title'));
$document->setDescription($params->get('page_description'));
$contents = JComponentHelper::renderComponent($component);
$document->setBuffer($contents, 'component');
и далее
PHP:
// Render the document.
JResponse::setBody($document->render($caching, $params));
вполне понятны направления куда копать. Так что копайте, делайте, потом расскажете.
 
lagoff огромное спасибо!
Главное направление дали куда копать)) Разберусь.
Обязательно отпишусь как решу задачку))
 
Дошли руки, вроде решил проблему.

Реализовал на сколько позволяют мои скудные знания, так что сильно не пинайте ))

В файле:
/libraries/joomla/document/feed/feed.php
добавил после класса:
PHP:
class JFeedItem
свой:
PHP:
class JFeedItemNew
и прописал в нем нужные мне данные:
PHP:
	 var $markname;
	 var $modelname;
	 var $countryname;
	 var $bodytypename;
.........
	 var $userphone;
	 var $vincode;
	 var $imglink;
	 var $cityname;

В директории:
/libraries/joomla/document/feed/renderer/
рядом с имеющимися atom.php и rss.php добавил свой файл newsrss.php
с измененными по сравнению с rss.php всего двумя строчками:
PHP:
class JDocumentRendererNEWSRSS // новый класс
$syndicationURL =& JRoute::_('&format=feed&type=newsrss'); // путь к новому фиду

В файле компонента view.feed.php для которого это всё делается, после строк стандартной отправки в rss ленту:
PHP:
	$item = new JFeedItem();
	$item->title = $topname;
	$item->link = $link;
	$item->description = $desc;
	$item->date = $creatdate;
	$document->addItem( $item );

добавил свои:
PHP:
 $itm = new JFeedItemNew();

	$itm->imglink = $imglink;	
	$itm->userphone = $userphone;	
	$itm->username = $username;
	$itm->markname = $markname;
	$itm->modelname = $modelname;
........
	$itm->transname = $transname;
	$itm->mileage = $mileage;
	$itm->drivename = $drivename;
	$itm->date = $creatdate;
	$document->addItem( $itm );

Вот как-то так.
Остался и стандартный фид и появился новый.
Ну а построить тело фида для своих нужд уже дело техники в новом файле newsrss.php

Чуть не забыл, Joomla 1.5
Может кому пригодится...
 
Сверху