Услуги профессионального Битрикс-программиста

Сниппеты для работы


Это для меня. Всякие мелкие сниппеты

фото обрезать
https://dev.1c-bitrix.ru/api_help/main/reference/cfile/resizeimageget.php
  • BX_RESIZE_IMAGE_EXACT - масштабирует в прямоугольник $arSize c сохранением пропорций, обрезая лишнее;
  • BX_RESIZE_IMAGE_PROPORTIONAL - масштабирует с сохранением пропорций, размер ограничивается $arSize;
  • BX_RESIZE_IMAGE_PROPORTIONAL_ALT - масштабирует с сохранением пропорций за ширину при этом принимается максимальное значение из высоты/ширины, размер
Пережимка
$file = CFile::ResizeImageGet($arSection["PICTURE"], array('width'=>150, 'height'=>150), BX_RESIZE_IMAGE_PROPORTIONAL, true);
//$arItem["PREVIEW_PICTURE"],  $arItem["DETAIL_PICTURE"]

элементы инфоблока получить
https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php
$arFilter = Array(
  "IBLOCK_ID"=>$arParams["IBLOCK_ID"], 
   "ACTIVE"=>"Y"
);
$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM");
$res = CIBlockElement::GetList(Array("sort"=>"asc"), $arFilter, false, Array("nPageSize"=>50,"iNumPage"=>1), $arSelect);
while($arItem = $res->Fetch()){
  //самый быстрый
}
while($arItem = $res->GetNext()){
 //обрабатывает детальную страницу из шаблона пути
}
while($ob = $res->GetNextElement()){
  $arFields = $ob->GetFields();  
}
обновить
$el = new CIBlockElement;
$arProps = array();
$arProps[$propId]= $propValue;
//или
$arProps[$propCode]= $propValue;


$arItem = Array( 
 "MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
  "IBLOCK_SECTION" => false,          // элемент лежит в корне раздела
  "PROPERTY_VALUES"=> $arProps,
  "NAME"           => "Элемент",
  "ACTIVE"         => "Y",            // активен
  "PREVIEW_TEXT"   => "текст для списка элементов",
  "DETAIL_TEXT"    => "текст для детального просмотра",
  "DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
  );
$res = $el->Update($id, $arItem);

api d7
\Bitrix\Main\Loader::includeModule('iblock');

$element = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
   'select' => ['ID', 'NAME'],
   'filter' => [
      'ID' => $elementId,
   ],
   "cache" => ["ttl" => 3600], //кэширование
   "limit" => 10
])->fetchObject();
foreach ($elements as $element) {
    // ...
}
 
аналог CIBlockElement::GetByID
$element = \Bitrix\Iblock\Elements\ElementCatalogTable::getByPrimary($elementId, [
    'select' => ['ID', 'NAME', 'DETAIL_TEXT', 'DETAIL_PICTURE', 'ARTNUMBER'],
])->fetch(); 
var_dump($element); //массив


разделы инфоблока получить
https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblocksection/getlist.php
$arFilter = array(
   'IBLOCK_ID' => $arParams['IBLOCK_ID'],
   '>LEFT_MARGIN' => $arParentSection['LEFT_MARGIN'],
    '<RIGHT_MARGIN' => $arParentSection['RIGHT_MARGIN'],
    '>DEPTH_LEVEL' => $arParentSection['DEPTH_LEVEL']
); // выберет потомков без учета активности
$bShowCount = false; //количество элементов в разделе
$arSelect = ["UF_NAME_EN"]; //список полей

$rsSect = CIBlockSection::GetList(array('left_margin' => 'asc'),$arFilter,$bShowCount,$arSelect);
while ($arSect = $rsSect->GetNext()){
       // 
}
получить значение множественного свойства для элемента
$res = CIBlockElement::GetProperty($iblockId, $elemId, "sort", "asc", array("ID" => $propId));
while ($arValue = $res->GetNext()){                            
//
 } 

для init.php
use Bitrix\Main; 
use \Bitrix\Main\Loader;
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/log.txt");

AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "MyOnBeforeIBlockElementAdd");
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "MyOnBeforeIBlockElementUpdate");

AddEventHandler("catalog", "OnBeforeProductAdd", "MyOnBeforeProductAdd");
AddEventHandler("catalog", "OnBeforeProductUpdate", "MyOnBeforeProductUpdate");


function MyOnBeforeIBlockElementAdd(&$arFields){      
}

function MyOnBeforeIBlockElementUpdate(&$arFields){    
}

function MyOnBeforeProductAdd(&$arFields){
    if (@$_REQUEST['mode']=='import'){//импорт из 1с          
    }
    return true;
}
function MyOnBeforeProductUpdate($id,&$arFields){
    if (@$_REQUEST['mode']=='import'){//импорт из 1с          
    }
    return true;
}
подключить пролог
require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");
проверка подключения пролога
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
в шаблоне подключение своих стилей, скриптов
$APPLICATION->AddHeadScript('/bitrix/templates/.default/js/jquery.min.js');
$APPLICATION->AddHeadScript($this->GetFolder() . '/script.js');
$APPLICATION->SetAdditionalCSS('/bitrix/templates/.default/css/jquery-ui.css');
пути
<?=$component->GetPath()?>/component.php
<?=$this->GetFolder()?>/ajax.php //обращение из template.php к файлу ajax.php в папке шаблона

$templateFile –  путь к шаблону относительно корня сайта,
$arResult –  массив результатов работы компонента,
$arParams – массив входящих параметров компонента,
$arLangMessages – массив языковых сообшений шаблона (для php шаблонов не устанавливается),
$templateFolder – папка шаблона, если он лежит в папке (с дополнительными ресурсами),
$parentTemplateFolder – папка родительского шаблона,
$component – объект текущего компонента.
Кроме того внутри PHP шаблона объявлены глобальными переменные $APPLICATION, $USER, $DB
SITE_TEMPLATE_PATH - путь шаблона сайта
<?ob_start();?>
Hello Nika
<?
$hello = ob_get_contents();
ob_end_clean();
?>
Before hello text
<?=$hello?>
файл лога
echo LOG_FILENAME;

//получить содержимое
$data = file_get_contents(LOG_FILENAME); 
var_dump($data);

//очистить
file_put_contents(LOG_FILENAME,""); 
норм вставка из YouTube
<iframe 
   style="width:100%;height:325px;" 
   frameborder="0" 
   allowfullscreen="1" 
   allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
   title="Video Title" 
   width="640" 
   height="365" 
   src="https://www.youtube.com/embed/MisjXqBpKdg? --тут не надо переноса
     controls=1&modestbranding=1&rel=0&showinfo=0&loop=0&fs=1&hl=en&enablejsapi=1& --тут не надо переноса
     origin=https%3A%2F%2Fmysite.ru&widgetid=1">
</iframe>
Вероника Малышева
Битрикс-программист
+7 (953) 585-13-09

Если пост был полезным, можете угостить меня "чашечкой кофе" :)
Сбер, Альфа: по номеру телефона +7 (953) 585-13-09.
Спасибо!
Смотреть все посты