Ресайз картинок
$path = CFile::GetPath($arFields['UF_FILE']);
$arFileArr = CFile::MakeFileArray($path);
$img_new = CAllFile::ResizeImage($arFileArr, array( "width" => 100, "height" => 100 ), BX_RESIZE_IMAGE_EXACT, false);
$fileId = CFile::SaveFile($arFileArr, '/new_imgs/' );
$new_arr = CFile::MakeFileArray($fileId);
Файлы в поле со свойством Множественное
$file1 = $_FILES['fileselect'];
$files = [];
if(count($file1['name']) > 0){
foreach ($file1['error'] as $key => $err) {
if($err == UPLOAD_ERR_OK){
$name = basename($file1['name'][$key]);
$path = $_SERVER["DOCUMENT_ROOT"].'/upload/my_files/'.$name;
$res2 = move_uploaded_file($file1['tmp_name'][$key], $path);
if($res2 == true)
$files[] = cfile::makefilearray($path);
}
}
}
JSON в тег
<div class="" data-gabarites-sum='<?=json_encode($arResult['GABARITES_SUM'], false); ?>'>
Куки
// должен быть подключен хедер, иначе не запишеться
$APPLICATION->set_cookie("user_profile_open", 'reg,personal,work,admin,user_properties', time()+60*60*24*30*12*2, "/");
$arResult["COOKIE_PREFIX"] = COption::GetOptionString("main", "cookie_name", "BITRIX_SM");
if (strlen($arResult["COOKIE_PREFIX"]) <= 0)
$arResult["COOKIE_PREFIX"] = "BX";
var_dump($_COOKIE[$arResult["COOKIE_PREFIX"]."_user_profile_open"]);
Количество записей
CDBResult::SelectedRowsCount()
Купоны и скидки
\Bitrix\Main\Loader::includeModule('sale');
\Bitrix\Sale\DiscountCouponsManager::clear(true);
\Bitrix\Sale\DiscountCouponsManager::clearApply(true);
$sCoupon = $_REQUEST['COUPON'];
\Bitrix\Sale\DiscountCouponsManager::add($sCoupon);
$oBasket = \Bitrix\Sale\Basket::loadItemsForFUser(
\Bitrix\Sale\Fuser::getId(),
\Bitrix\Main\Context::getCurrent()->getSite()
);
$oDiscounts = \Bitrix\Sale\Discount::loadByBasket($oBasket);
$oBasket->refreshData([ 'PRICE' , 'COUPONS']);
$oDiscounts->calculate();
$result = $oDiscounts->getApplyResult();
$oBasket->save();
Обновление basket.basket.line
BX.onCustomEvent('OnBasketChange');
Кеширование
$obCache = new CPHPCache();
$cacheLifetime = 86400*7;
$cacheID = 'AllItemsIDs';
$cachePath = '/'.$cacheID;
// удалить кеш
// $obCache->CleanDir($cachePath);
if( $obCache->InitCache($cacheLifetime, $cacheID, $cachePath) )
{
$vars = $obCache->GetVars();
extract($vars);
// или же
$arAllItemsIDs = $vars['arAllItemsIDs'];
}
elseif( $obCache->StartDataCache() )
{
$rs = CIBlockElement::GetList(array(), array(), false, false, array('ID'));
while( $ar = $rs->Fetch() )
$arAllItemsIDs[] = $ar['ID'];
$obCache->EndDataCache(array('arAllItemsIDs' => $arAllItemsIDs));
}
print_r(count($arAllItemsIDs));
Ядро
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");
Передать переменные из result_modifier.php в component_epilog.php
$this->__component->arResultCacheKeys = array_merge($this->__component->arResultCacheKeys, array('PROPERTIES') );
И таких специальных файликов по битриксу разбросано огромное множество. С одной стороны, это дает определенную гибкость при работе с системой. С другой — это может превратиться в муку как для разработчика, так и для менеджера сайта. Файлы страниц иногда превращаются в кашу из php кода, верстки, и подключаемых компонентов. В результате визуальный редактор может некорректно распарсить этот файл, и при редактировании он запросто может экранировать php теги в некоторых местах, что приведет к неработоспособности страницы. Вы скажете — не надо писать php код в таких файлах? Да, я знаю. Но битрикс очень часто и безальтернативно заставляет так поступить. Да и в голове нужно держать постоянно информацию о том, что это за файлы такие, и какие данные они могут содержать. В разных файлах должны содержаться разные данные с разной структурой, и нужно ее помнить для каждого варианта. В документации искать это каждый раз — тяжелый труд.
согласен с вами. кто этим не грешит?)