Я бы делал через xml-файл.
Например, если Вы знаете, что переодичность добавления новых материалов 1 раз в сутки, ставите на cron задачу с такой же переодичностью, в которой прямым запросом в БД выбираете нужные материалы из нужной категории. Результаты записываете в xml-файл.
Пример выгрузки из JoomShopping
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe = JFactory::getApplication('site');
require_once (JPATH_SITE.'/components/com_jshopping/lib/factory.php');
require_once (JPATH_SITE.'/components/com_jshopping/lib/functions.php');
$query = "SELECT prod.product_id, pr_cat.category_id, prod.`name_cs-CZ` as name, prod.`short_description_cs-CZ` as short_description, prod.product_ean, prod.image, prod.product_price, prod.currency_id, prod.product_tax_id as tax_id, prod.product_old_price, prod.product_weight, prod.average_rating, prod.reviews_count, prod.hits, prod.weight_volume_units, prod.basic_price_unit_id, prod.label_id, prod.product_manufacturer_id, prod.min_price, prod.product_quantity, prod.different_prices, prod.delivery_times_id FROM `#__jshopping_products` AS prod INNER JOIN `#__jshopping_products_to_categories` AS pr_cat ON pr_cat.product_id = prod.product_id LEFT JOIN `#__jshopping_categories` AS cat ON pr_cat.category_id = cat.category_id WHERE prod.product_publish = '1' AND cat.category_publish='1' AND prod.access IN (1,1) AND cat.access IN (1,1) GROUP BY prod.product_id ORDER BY prod.product_id DESC";
$db = JFactory::getDBO();
$db->setQuery($query);
$gmData = $db->loadObjectList();
$homeURL = substr(JURI::base(), 0, -1);
$imgURL = $homeURL.'/components/com_jshopping/files/img_products/';
//get Brand's name
$brandQuery = "SELECT #__jshopping_manufacturers.manufacturer_id as brandID, #__jshopping_manufacturers.`name_cs-CZ` as brandName FROM #__jshopping_manufacturers";
$db->setQuery($brandQuery);
$brandList = $db->loadAssocList();
$xml = '<SHOP>';
foreach($gmData as $product) {
$price = round($product->product_price, 2);
$productURL = $homeURL.SEFLink('index.php?option=com_jshopping&controller=product&task=view&category_id='.$product->category_id.'&product_id='.$product->product_id, 1);
// get current category name
$curretCatQuery = "SELECT #__jshopping_categories.category_id as catID, #__jshopping_categories.category_parent_id as parentID, #__jshopping_categories.`name_cs-CZ` as catName FROM #__jshopping_categories WHERE #__jshopping_categories.category_publish = '1' AND #__jshopping_categories.category_id = '".$product->category_id."'";
$db->setQuery($curretCatQuery);
$curretCat = $db->loadRow();
$cName_1 = $curretCat[2];
if ($curretCat[1] != 0) {
$cName_2_Query = "SELECT #__jshopping_categories.category_id as catID, #__jshopping_categories.category_parent_id as parentID, #__jshopping_categories.`name_cs-CZ` as catName FROM #__jshopping_categories WHERE #__jshopping_categories.category_publish = '1' AND #__jshopping_categories.category_id = '".$curretCat[1]."'";
$db->setQuery($cName_2_Query);
$cName_2_res = $db->loadRow();
$cName_2 = $cName_2_res[2].' | ';
if ($cName_2_res[1] != 0) {
$cName_3_Query = "SELECT #__jshopping_categories.category_id as catID, #__jshopping_categories.category_parent_id as parentID, #__jshopping_categories.`name_cs-CZ` as catName FROM #__jshopping_categories WHERE #__jshopping_categories.category_publish = '1' AND #__jshopping_categories.category_id = '".$cName_2_res[1]."'";
$db->setQuery($cName_3_Query);
$cName_3_res = $db->loadRow();
$cName_3 = $cName_3_res[2].' | ';
if ($cName_3_res[1] != 0) {
$cName_4_Query = "SELECT #__jshopping_categories.category_id as catID, #__jshopping_categories.category_parent_id as parentID, #__jshopping_categories.`name_cs-CZ` as catName FROM #__jshopping_categories WHERE #__jshopping_categories.category_publish = '1' AND #__jshopping_categories.category_id = '".$cName_3_res[1]."'";
$db->setQuery($cName_4_Query);
$cName_4_res = $db->loadRow();
$cName_4 = $cName_4_res[2].' | ';
}
}
}
$product_type = $cName_4.$cName_3.$cName_2.$cName_1;
$xml .= '<SHOPITEM>';
$xml .= '<PRODUCT>'.htmlspecialchars($product->name).'</PRODUCT>';
$xml .= '<DESCRIPTION>'.$product->short_description.'</DESCRIPTION>';
$xml .= '<URL>'.$productURL.'</URL>';
$xml .= '<IMGURL>'.$imgURL.$product->image.'</IMGURL>';
$xml .= '<PRICE>'.$price.'</PRICE>';
$xml .= '<VAT>0,21</VAT>';
$xml .= '<DELIVERY_DATE>0</DELIVERY_DATE>';
foreach ($brandList as $row) {
if($row['brandID'] == $product->product_manufacturer_id) {
$productBrand = $row['brandName'];
}
}
if (!isset($productBrand)) {
$productBrand = 'Brand';
}
$xml .= '<MANUFACTURER><![CDATA['.$productBrand.']]></MANUFACTURER>';
$xml .= '<ITEM_TYPE>new</ITEM_TYPE>';
if ((is_numeric($product->product_ean)) && ((strlen($str) > 7) && (strlen($str) < 14 ))) {
$xml .= '<EAN>'.$product->product_ean.'</EAN>';
}
$xml .= '<CATEGORYTEXT>'.$product_type.'</CATEGORYTEXT>';
$xml .= '</SHOPITEM>';
}
$xml .= '</SHOP>';
$sxe = simplexml_load_string($xml);
if ($sxe === false) {
echo 'Error while parsing the document';
}
$dom_sxe = dom_import_simplexml($sxe);
if (!$dom_sxe) {
echo 'Error while converting XML';
}
$dom = new DOMDocument('1.0', 'UTF-8');
$dom_sxe = $dom->importNode($dom_sxe, true);
$dom_sxe = $dom->appendChild($dom_sxe);
echo $dom->save('xmldata/seznam.xml');
?>
Ну и на нужном сайте читаете нужный xml-файл и либо выводите данные напрямую, либо пишите в БД и работаете с данными уже из нее.