Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions CacheCIBlockElement.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?php

namespace CacheClasses;

class CacheCIBlockElement
{

/**
* Кешированный метод получения списка элементов инфоблока
*
* @param array $arOrder - поле для сортировки
* @param array $arFilter - фильтруемое поле
* @param bool $arGroupBy - Массив полей для группировки элемента
* @param bool $arNavStartParams - Параметры для постраничной навигации и ограничения количества выводимых элементов
* @param array $arSelectFields - Массив возвращаемых полей элемента
* @return object | bool - CIBlockResult или false - если работа с модулем инфоблоков не возможна.
*/

public static function GetList($arOrder = ["SORT" => "ASC"], $arFilter = [], $arGroupBy = false, $arNavStartParams = false, $arSelectFields = [])
{
if (\CModule::IncludeModule("iblock")) {
$obCache = new \CPHPCache;

// Время жизни кэша
$lifeTime = 60 * 10;
if (!empty($arFilter['IBLOCK_ID'])) {
$cacheID = $arFilter['IBLOCK_ID'];
} else {
$cacheID = "CacheCIBlockElementDefault";
}

if ($obCache->InitCache($lifeTime, $cacheID, "/")) {
$vars = $obCache->GetVars();
$DbResult = $vars["RESULT_ARRAY"];
} else {
$DbResult = \CIBlockElement::GetList($arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields);
}
if ($obCache->StartDataCache()) {
$obCache->EndDataCache([
"RESULT_ARRAY" => $DbResult,
]);
}
return $DbResult;
}
return false;
}

}
29 changes: 29 additions & 0 deletions getLastNews.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

$count = 0;
$rss = "https://lenta.ru/rss";
$resXml = @file_get_contents($rss);
if ($resXml === false) die('Error connect to RSS: ' . $rss);
$xml = new SimpleXMLElement($resXml);
if ($xml === false) die('Error parse RSS: ' . $rss);
foreach ($xml->channel->item as $item) {

if ($item->title) {
echo 'НАЗВАНИЕ: ' . $item->title . '<br>' . PHP_EOL;
}

if ($item->link) {
echo 'ССЫЛКА НА НОВОСТЬ: ' . '<a href="' . $item->link . '">' . $item->link . '</a><br>' . PHP_EOL;
}

if ($item->description) {
echo 'АНОНС: ' . $item->description . '<br>' . PHP_EOL;
}

echo '<hr>';
$count++;

if ($count >= 5) {
break;
}
}
14 changes: 14 additions & 0 deletions test.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
require_once($_SERVER["DOCUMENT_ROOT"] . "/test/CacheCIBlockElement.php");

$arSelect = ["ID", "NAME", "DATE_ACTIVE_FROM"];

$arFilter = ["IBLOCK_ID" => 1, "ID" => '3', "ACTIVE_DATE" => "Y", "ACTIVE" => "Y"];
if ($res = CacheClasses\CacheCIBlockElement::GetList([], $arFilter, false, ["nPageSize" => 50], $arSelect)) {
while ($arFields = $res->Fetch()) {
echo '<pre>' . print_r($arFields, 1) . '</pre>';
}
}

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php");