Добрый День уважаемые коллеги!
У меня стоит задача сделать что-то на подобии грабера для новостей!
У нас в 4 сайта, все сайты с одной базой!Нужно сделать чтобы новости брались из всех инфоблоков по типу news
и выводились в блок 5 новостями начиная с самой последней по дате создания.
Задумка такая, что Java-скрипт должен вызвать PHP скрипт, в котором параметром GET будут передаваться данные.
Вот есть скрипт, который делает, что-то похожее, но как сделать тоже только с новостями ума не приложу!
Привожу скрипт:
А вот это java ссылка которая вызывает этот скрипт:
Подскажите как лучше сделать?
Вот моя наработка, но не уверен, что тут правильно:
У меня стоит задача сделать что-то на подобии грабера для новостей!
У нас в 4 сайта, все сайты с одной базой!Нужно сделать чтобы новости брались из всех инфоблоков по типу news
и выводились в блок 5 новостями начиная с самой последней по дате создания.
Задумка такая, что Java-скрипт должен вызвать PHP скрипт, в котором параметром GET будут передаваться данные.
Вот есть скрипт, который делает, что-то похожее, но как сделать тоже только с новостями ума не приложу!
Привожу скрипт:
Код |
---|
<? /* Параметры: referer1 - название csv-файла без расширения. Если файл не найден, то в качестве источника берется файл default.csv count - кол-во выводимых баннеров isset(test) - вывод всех записей из csv-файла isset(php) - вывод html-кода !isset(php) - вывод java-script-кода */ $site = "http://www.site.ru"; $suffix = "?".$_SERVER['QUERY_STRING']; function js_write($text) { $s = ""; if (!isset($_GET['php'])) $s = "document.write('"; $s .= $text; if (!isset($_GET['php'])) $s .= "');"; return $s; } function gen_banner($data) { GLOBAL $site, $suffix; //Если указан относительный путь, то подставляем $site if(strpos($data[1], 'http') === false) $data[1] = $site.$data[1]; if(strpos($data[3], 'http') === false) $data[3] = $site.$data[3]; $img_attr = ''; if(isset($_GET["w"])) $img_attr .= ' width="' . $_GET["w"] . '" '; if(isset($_GET["h"])) $img_attr .= ' height="' . $_GET["h"] . '" '; $a_attr = ' '; if(isset($_GET["t"])) $a_attr .= ' target="' . $_GET["t"] . '" '; $alt_attr = ''; $title_attr = ''; if(!isset($_GET["noalts"])) { $alt_attr = ' title = "Посмотреть ' . $data[2] . '" '; $title_attr = ' alt = "' . $data[2] . '" '; } return js_write('<a href="' . $data[1] . $suffix . '"' . $title_attr . $a_attr . '><img src="' . $data[3] . '" ' . $alt_attr . 'border="0"' . $img_attr . '></a>') . "\n"; } $count = 1; if(isset($_GET["count"])) $count = $_GET["count"]; $dir = getcwd()."/banner/"; // текущая директория if(isset($_GET["referer1"])) $csv_file = $_GET["referer1"].".csv"; else $csv_file = "default.csv"; if (!file_exists($dir.$csv_file)) $csv_file = "default.csv"; if (!file_exists($dir.$csv_file)) { echo "Файл не существует: ".$dir.$csv_file; return 0; } $csv_file_full = $dir.$csv_file; $fp = file($csv_file_full); $item_no = rand(2, count($fp)) - 1; $row = 0; $step = 0; $handle = fopen($csv_file_full, "r"); //echo "<pre>"; while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { $row++; if (isset($_GET["test"])) // вывод всех строк { if ($row > 1) echo gen_banner($data).js_write("<br />")."\n"; continue; } // Доправить кол-во выводимых баннеров для get-параметра count if(($row > $item_no) || (count($fp) - $count <= $step)) { echo gen_banner($data); $step++; if($step < $count) echo js_write("<br />")."\n"; } if($step >= $count) break; } //echo "</pre>"; fclose($handle); ?> |
А вот это java ссылка которая вызывает этот скрипт:
Код |
---|
<script charset="utf-8" type="text/javascript" src="http://www.site.ru/good.php?referer1=uchmet&referer2=good&referer3=10aug2011&partner=2" ></script> |
Подскажите как лучше сделать?
Вот моя наработка, но не уверен, что тут правильно:
Код |
---|
$site = "http://www.uchmag.ru"; $suffix = "?".$_SERVER['QUERY_STRING']; function js_write($text) { $s = ""; if (!isset($_GET['php'])) $s = "document.write('"; $s .= $text; if (!isset($_GET['php'])) $s .= "');"; return $s; } $arResult = array( "NEWS" => array(), "SITE" => SITE_ID, "CNT" => Array("nPageSize"=>5), ); if(CModule::IncludeModule("iblock")) { GLOBAL $site, $suffix; if(strpos($data[1], 'http') === false) $data[1] = $site.$data[1]; if(strpos($data[3], 'http') === false) $data[3] = $site.$data[3]; $arFilter = Array( "SITE_ID"=>$arResult["SITE"], "IBLOCK_TYPE"=>"news", "ACTIVE"=>"Y", "ACTIVE_DATE"=>"Y", ">DATE_ACTIVE_FROM"=>date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT")), mktime(0,0,0,8,22,2011)), ); $res = CIBlockElement::GetList(Array("SORT"=>"ASC"), $arFilter, false, $arResult["CNT"]); while($ar_fields = $res->GetNext()) { //echo $ar_fields["DATE_ACTIVE_FROM"].": ".$ar_fields["CNT"]."<br>"; //tpk_print_r($ar_fields,$ar_fields["ID"],'28751'); $arResult["NEWS"][$ar_fields["ID"]] = $ar_fields; echo js_write('<a href="'.$ar_fields["DETAIL_PAGE_URL"].'" >'.$ar_fields["NAME"].'</a>');echo '<br>'; } tpk_print_r($arResult,$arResult["ID"],'28751'); } else return 0; ?> <style> .block_content .list_blocks { margin-top: -4px;} .list_blocks, .list_blocks li, .list_blocks ul { list-style: none outside none; margin: 0; padding: 0;} .mak {padding: 5px; list-style-type: none;} </style> <?foreach ($arResult["NEWS"] as $arID){?> <div class="block_content"> <span><?=$arResult["NEWS"][$arID["ID"]]["DATE_ACTIVE_FROM"]?></span> <ul class="mak"> <li><a href="<?=$arResult["NEWS"][$arID["ID"]]["DETAIL_PAGE_URL"]?>"><?=$arResult["NEWS"][$arID["ID"]]["NAME"]?></a></li> </ul> </div> <?}?> |