Простой динамический экспортер в Яндекс.новости для Битрикс. Версия 1.0
Битрикс Добавить комментарийДинамически экспортирует содержимое всех инфоблоков сайта на Битриксе за последние сутки, включая все необязательные элементы rss-формата Яндекс.новости. Не забываем указывать в фильтре ID экспортируемых инфоблоков. Если ограничение снять, то будут экспортироваться все инфоблоки. При этом стоит учесть следующее правило Яндекс.новостей: об изменении рубрикации издания или добавлении в экспортный файл материалов новых рубрик необходимо сообщать по адресу info@news.yandex.ru. Без такого уведомления сообщения, принадлежащие ранее не существовавшим или переименованным рубрикам издания, не индексируются. Именно поэтому ID лучше всего указывать жестко. В программе реализовано простейшее вырезание html-тэгов, перевод заголовка из верхнего регистра в нижний, удаление точек в заголовках.
Простой динамический экспортер в Яндекс.новости для Битрикс
[php]
require($_SERVER["DOCUMENT_ROOT"].”/bitrix/modules/main/include/prolog_before.php”);
echo “
“;
function formatTime($time)
{
return date(“D, d M Y H:i:s +0400″, $time);
}
function parseTime($str)
{
list($date, $time) = explode(‘ ‘, $str);
list($day, $month, $year) = explode(‘.’, $date);
list($hour, $minute) = explode(‘:’, $time);
$timestamp = mktime($hour, $minute, 0, $month, $day, $year);
return $timestamp;
}
function str_to_upper($str){
return strtr($str,
“абвгдеёжзийклмнопрстуфхцчшщъыьэюя”,
“АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ”);
}
function str_to_lower($str){
return strtr($str,
“АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ”,
“абвгдеёжзийклмнопрстуфхцчшщъыьэюя”);
}
$today = time();
$date_time_array = getdate($today);
$hours = $date_time_array['hours'];
$minutes = $date_time_array['minutes'];
$seconds = $date_time_array['seconds'];
$month = $date_time_array['mon'];
$day = $date_time_array['mday'];
$year = $date_time_array['year'];
$yesterday1 = mktime($hours,$minutes,$seconds,$month,$day-1,$year);
$yesterday = strftime(‘%d.%m.%Y’,$yesterday1);
$symbols = array(“&”, “\”", “<", ">“, “‘”);
$zamena = array(“&”, “”", “<”, “>”, “'”);
$symbols1 = array(“&”, “\”", “<", ">“, “‘”, “.”);
if (CModule::IncludeModule(“iblock”)) {
$infblock = Array();
$res = CIBlockElement::GetList(Array(“ID”=>”ASC”), Array(“ACTIVE”=>”Y”));
while ($arr = $res->Fetch()) {
$infblock[$arr["ID"]] = $arr["NAME"];
}
$SORT = Array(“DATE_CREATE”=>”DESC”, “ID”=>”ASC”);
$FILTER = Array(“IBLOCK_ID”=>Array(“31″, “32″, “33″, “51″, “52″, “53″, “55″, “56″),”APPROVED”=>”Y”, “STATE”=>”Y”, “>=DATE_CREATE”=>”$yesterday”, “!=PROPERTY_PODRAZDEL_VALUE”=>”статья”);
if (intval($_REQUEST["BID"]) > 0) $FILTER["IBLOCK_ID"] = intval($_REQUEST["BID"]);
$FIELDS = Array (“NAME”, “ID”, “DATE_CREATE”, “IBLOCK_ID”, “PREVIEW_TEXT”, “DETAIL_TEXT”, “PROPERTY_PODRAZDEL”, “DETAIL_PAGE_URL”, “PROPERTY_AUTHOR”);
$res = CIBlockElement::GetList($SORT, $FILTER, false, false, $FIELDS);
while ($arr = $res->Fetch()) {
$newstitle=strip_tags($arr["NAME"]);
$res1 = CIBlock::GetByID($arr["IBLOCK_ID"]);
if($ar_res1 = $res1->GetNext())
if (!strcmp($newstitle, str_to_upper($newstitle)))
$newstitle=str_to_lower($newstitle);
if ($arr["PROPERTY_PODRAZDEL_VALUE"]!=”")
$dir=”articles/”;
else
$dir=”news/”;
echo “
if ($arr["PROPERTY_AUTHOR_VALUE"]!=”")
echo “
echo “
“;
}
}
echo “
“;
require($_SERVER["DOCUMENT_ROOT"].”/bitrix/modules/main/include/epilog_after.php”);
?>[/php]


Последние комментарии