24.03.2021
17:19
24.03.2021 17:19:43
Это для меня. Всякие мелкие сниппеты |
фото обрезать
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"], ['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 = [
"IBLOCK_ID"=>$arParams["IBLOCK_ID"],
"ACTIVE"=>"Y"
];
$arSelect = ["ID", "NAME", "DATE_ACTIVE_FROM"];
$res = CIBlockElement::GetList(["sort"=>"asc"], $arFilter, false, ["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 = [
"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); |
добавить элемент инфоблока
global $USER;
$arParamsCode = ["replace_space" => "-", "replace_other" => "-" ];
$el = new CIBlockElement;
$arProps = array();
$arProps[$propId] = $propValue;
//или
$arProps[$propCode]= $propValue;
$arItemNew = [
"NAME" => $arArticle["title"],
"DETAIL_TEXT" => $arArticle["text"],
"DETAIL_TEXT_TYPE"=>"html", //"text"
"IBLOCK_ID" => $iblockId,
"PROPERTY_VALUES" => $arProps,
"IBLOCK_SECTION_ID" => false,
"ACTIVE" => "Y",
"MODIFIED_BY" => $USER->GetID(),
"CODE" => Cutil::translit( $arArticle["title"], "en", $arParamsCode )
];
if($id = $el->Add($arItemNew)) {
echo "New ID: ".$id;
}
else {
echo "Error: " . $el->LAST_ERROR." ";
} |
api d7 getList
\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) {
// ...
}
|
api d7 аналог 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 = [
'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(['left_margin' => 'asc'],$arFilter,$bShowCount,$arSelect);
while ($arSect = $rsSect->GetNext()){
//
} |
получить значение множественного свойства для элемента
$res = CIBlockElement::GetProperty($iblockId, $elemId, "sort", "asc", ["ID" => $propId]);
while ($arValue = $res->GetNext()){
//
} |
получить значения списочного свойства
$propertyEnum = CIBlockPropertyEnum::GetList(["DEF"=>"DESC", "SORT"=>"ASC"], ["IBLOCK_ID"=>369, "CODE"=>"STAGE"]);
$arStages = [];
while($arStage = $propertyEmum->GetNext()){
$arStages[$arStage["XML_ID"]] = $arStage["ID"];
} |
для 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'); |
d7
use Bitrix\Main\Page\Asset;
Asset::getInstance()->addCss($this->GetFolder() . '/dealer_client_choose.css');
Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/assets/js/script.js', true); |
пути
<?=$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> |
24.03.202117:1924.03.2021 17:19:43