Warning: Undefined array key "orderhash" in /home/labreunis/maxkuku.ru/docs/webmaster/index.php on line 177
Список полезных функций
(☞ຈل͜ຈ)☞ Главная  Статьи  Загрузчик Домой


Warning: Undefined variable $name in /home/labreunis/maxkuku.ru/docs/webmaster/index.php on line 209

Warning: Undefined array key "orderhash" in /home/labreunis/maxkuku.ru/docs/webmaster/index.php on line 224

Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in /home/labreunis/maxkuku.ru/docs/webmaster/index.php on line 224

Warning: Undefined variable $name in /home/labreunis/maxkuku.ru/docs/webmaster/index.php on line 224

Warning: Undefined variable $name in /home/labreunis/maxkuku.ru/docs/webmaster/index.php on line 294
Ok!
Ok!
319
  # Удаляем index.php из адреса
  RewriteCond %{THE_REQUEST} ^GET.*index.php [NC]
  # Не применяем к админке, иначе перестает работать страница Highload-блоки
  RewriteCond %{REQUEST_URI} !/bitrix/admin/.* [NC]
  RewriteCond %{REQUEST_URI} !^/bitrix/tools/ [NC]
  RewriteRule (.*?)index.php/*(.*) https://%{HTTP_HOST}/$1$2 [R=301,NE,L]
htaccess, rewrite, bitrix395Удалить index.php из УРЛ редиректом, кроме админки Битрикс
316
'cache' => array(
       'value' => array (
          'type' => 'memcache',
          'memcache' => array(
              'host' => 'localhost',
              'port' => '11211'
          ),
          'sid' => $_SERVER["DOCUMENT_ROOT"]."#01"
       ),
    ),
memcached, bitrix300настройка memcached в bitrix в файле .settings.php
314
$ipropValues = new BitrixIblockInheritedPropertyElementValues(
    $arParams['IBLOCK_ID'],
    $arResult["ID"]
);
$arResult["IPROPERTY_VALUES"] = $ipropValues->getValues();
meta values, bitrix28005Получить в Битрикс метаданные элемента
313
// определим константу LOG_FILENAME, в которой зададим путь к лог-файлу
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/mylog-6665444.txt");
//дебаг почты
function custom_mail($to, $subject, $message, $additional_headers='', $additional_parameters='')
{
   AddMessage2Log(
            'To: '.$to.PHP_EOL.
            'Subject: '.$subject.PHP_EOL.
            'Message: '.$message.PHP_EOL.
            'Headers: '.$additional_headers.PHP_EOL.
            'Params: '.$additional_parameters.PHP_EOL
         );
   if ($additional_parameters!='') {
      return @mail($to, $subject, $message, $additional_headers, $additional_parameters);
   } else {
       return @mail($to, $subject, $message, $additional_headers);
   }
}
mail, php, log, bitrix19005mail log bitrix
310
CFile::ShowImage($img, $width, $height);
bitrix, img, image, битрикс, изображение460Как вывести в Битрикс картинку по размерам. $img - ID картинки или путь к файлу
308
system('tail -n 100 /home/bitrix/.msmtprc')
почта, bitrixvm, log mail300Посмотреть в php строке Битрикс лог почты
306
<div><?=(new CBXSanitizer)->sanitizeHtml($foo);?></div>

$login = $DB->ForSql($_REQUEST['login']);
$res = $DB->Query("SELECT * FROM b_user WHERE LOGIN='$login'");

$arInsert = $DB->PrepareInsert("b_user", ["LOGIN" => $_REQUEST["login"]]);
$sql = "INSERT INTO b_user (".$arInsert[0].") VALUES (".$arInsert[1].")";
$res = $DB->Query($sql);
sanitize, bitrix100Обработать переменную в Битрикс
304
$assetManager->addJs( "https://cdn.ampproject.org/v0.js");
amp, bitrix30090Скрипт загрузки АМП
283
CJSCore::Init(['masked_input']);
maskedinput, bitrix, Битрикс, маска1290Аналог maskedinput в Битрикс
274
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
use BitrixMainDataCache;
$elems = [];
$cash_key = md5("hdgbchdch383787lkokcodcjj8773asas_"); 
$cache = Cache::createInstance(); // получаем экземпляр класса
if ($cache->initCache(360000, $cash_key)) { // проверяем кеш и задаём настройки
    $elems = $cache->getVars(); // достаем переменные из кеша
}
elseif ($cache->startDataCache()) {

	...вычисления

    $cache->endDataCache($elems); // записываем в кеш
}
cache, bitrix, кеширование23600Кеширование блоков в битрикс
273
function webpImage($source, $quality = 100, $removeOld = false)
{
    if(strpos('http', $source) !== false) {
        //define scheme
        $scheme = CMain::IsHTTPS() ? "https" : "http"; // http
        //replace http://server with nothing
        $source = str_replace([$scheme . '://'. $_SERVER['HTTP_HOST']], [""], $source);

    }

    if(strpos('http', $source) === false) {
        $source = '/home/bitrix/www' . $source;
    }

    $dir = pathinfo($source, PATHINFO_DIRNAME);
    $name = pathinfo($source, PATHINFO_FILENAME);
    $destination = $dir . DIRECTORY_SEPARATOR . $name . '.webp';

    
    
    $info = getimagesize($source);
    $isAlpha = false;
    
    echo $info['mime'];
    if ($info['mime'] == 'image/jpeg'){
        $image = imagecreatefromjpeg($source);
        echo $source;
        var_dump($image);
    } elseif ($isAlpha = $info['mime'] == 'image/gif') {
        $image = imagecreatefromgif($source);
    } elseif ($isAlpha = $info['mime'] == 'image/png') {
        $image = imagecreatefrompng($source);
    } else {
        return $source;
    }
    if ($isAlpha) {
        imagepalettetotruecolor($image);
        imagealphablending($image, true);
        imagesavealpha($image, true);
    }

    

    imagewebp($image, $destination, $quality);
    imagedestroy($image);


    if ($removeOld)
        unlink($source);

    return $destination;
}
webp, convert image, bitrix10900Функция для Битрикс конвертации картинок в webp
268
$pdf = new CSalePdf('P', 'pt', 'A4');
print_r( $pdf );
pdf, bitrix170В Битрикс сделать ПДФ pdf
253
$iterator = CIBlockElement::GetList(
				array("ID"=>"DESC"),
				array('IBLOCK_ID' => 26, '=ACTIVE' => 'Y', 'IBLOCK_SECTION_ID', ['LOGIC' => 'OR', 'PREVIEW_TEXT' => false, 'DETAIL_TEXT' => false]),
				false,
				false,
				array('ID', 'NAME', 'CODE', 'IBLOCK_SECTION_ID')
			);


while($item = $iterator->Fetch()) { 
	$was_id = 0; 
	$nav = CIBlockSection::GetNavChain(false, $item['IBLOCK_SECTION_ID'], array(), false);
	$url = "";
	while($nav->Fetch()){
		if($was_id != $item['ID']){
			$url_length = count($nav->arResult);
	
	
			$url .= $nav->arResult[$url_length - 1]['CODE'] . "/";
	
	
			echo $item['ID'] . ';"' . $item['NAME'] . '";"https://lamaree.ru/catalog/' . $url . $item['CODE'] . '/"' . "
";
			$was_id = $item['ID'];
		}
	}
}
url, bitrix, catalog980Выбрать из каталога Битрикс товары без описаний с URL
238
"SECTION_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["section"],
bitrix, catalog.section.list500Путь секции для catalog.section.list
236
//ADD SECTION CANONICAL URL
$canonicalScheme = CMain::IsHTTPS() ? "https" : "http";
$APPLICATION->AddHeadString('<link rel="canonical" href="' . $canonicalScheme . '://' . SITE_SERVER_NAME . $arCurSection["PATH"][$arCurSection["ID"]]["SECTION_PAGE_URL"] . '" />', true);
bitrix, section9008ADD SECTION CANONICAL URL
232
if(preg_match('/[A-Z]/', $_SERVER['REQUEST_URI'])){
	LocalRedirect(strtolower($_SERVER['REQUEST_URI']), 0, "301 Moved permanently"); 
}
bitrix, редирект, localredirect9000Битрикс редирект в обход htaccess с заглавных букв в УРЛ на маленькие
231
$scheme = CMain::IsHTTPS() ? "https" : "http";
https, bitrix9090Определить https в Битрикс
223
public function convertImage(&$content)
    {
        if (defined('ADMIN_SECTION') || defined('WIZARD_SITE_ID')) {
            return;
        }

        preg_match_all('/"(/upload/[^"]*.(jpg|jpeg|png))"/i', $content, $matches1);
        self::convertImageToWebp($content, $matches1);
        preg_match_all("/'(/upload/[^']*.(jpg|jpeg|png))'/i", $content, $matches2);
        self::convertImageToWebp($content, $matches2);
    }

    private static function convertImageToWebp(&$content, $matches) {
        if (!empty($matches[1])) {
            foreach ($matches[1] as $i => $imageUrl) {
                $root = $_SERVER['DOCUMENT_ROOT'];
                $type = $matches[2][$i];
                $newName = str_replace($type, 'webp', $imageUrl);
                if (file_exists($root . $newName)) {
                    $content = str_replace($imageUrl, $newName, $content);
                    continue;
                }
                if (!file_exists($root . $imageUrl)) {
                    continue;
                }
                $type = strtolower($type);
                switch ($type) {
                    case 'jpeg':
                    case 'jpg':
                        $img = imagecreatefromjpeg($root . $imageUrl);
                        break;
                    case 'png':
                        $img = imagecreatefrompng($root . $imageUrl);
                        imagepalettetotruecolor($img);
                        imagealphablending($img, true);
                        imagesavealpha($img, true);
                        break;
                }
                if (isset($img)) {
                    $result = imagewebp($img, $root . $newName, 75);
					
					if (!$result) {
						continue;
					}

                    $content = str_replace($imageUrl, $newName, $content);
                    imagedestroy($img);
                    unset($img);
                }
            }
        }
    }
bitrix, webp, convert20030convert image to webp bitrix
200
"CUSTOM_FILTER" => "{"CLASS_ID":"CondGroup","DATA":{"All":"AND","True":"True"},"CHILDREN":[{"CLASS_ID":"CondIBSection","DATA":{"logic":"Equal","value":995}}]}",
custom filter, bitrix100Пример заполнения custom_filter в Битрикс
149
<?$APPLICATION->IncludeFile(SITE_DIR."catalog/sidebar_".$arResult['ID'].".php",Array(),Array("MODE"=>"php"));?>
include, bitrix, включаемая область120Включаемая область
148
$arFilter = Array("IBLOCK_ID"=>GOODS, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "=PROPERTY_CML2_ARTIKUL_VALUE"=>$p_title);
bitrix filter value, filter bx, value1290Свойство элемента в Битрикс фильтре
144
$iterator = CIBlockElement::GetList(
   array(),
   array('IBLOCK_ID' => 2, '=AVAILABLE' => 'Y', '=TYPE' => 1, '>=PRICE' => 100, '<=PRICE' => 200, 'CURRENCY_FOR_SCALE' => 'USD'),
   false,
   false,
   array('ID', 'NAME', 'IBLOCK_ID')
);
итератор, iterator bitrix, iterator140Выборка элементов Битрикс из каталога или другого инфоблока. Итерация.
142
array("LOGIC"=>"OR","NAME"=>$q,"PREVIEW_TEXT"=>$q, "PROPERTY_CML2_ARTIKUL"=>$q),
фильтр с логикой, логика, битрикс, bitrix, logic500Фильтр с логикой в Битрикс
131
<? $APPLICATION->IncludeFile( SITE_TEMPLATE_PATH . "/bespl_kons.php", Array(), Array( "MODE" => "html" ) ); ?>
include, bitrix, включаемая область90Вставка включаемой области из html файла в Битрикс
122
$component = new CBitrixComponent();
$component->InitComponent('redesign:menu', 'mobile');
$component->initComponentTemplate();
$path = $component->__template->GetFolder();
путь к компоненту, битрикс, bitrix120Путь к шаблону компонента в папке components
105
<a id="ajaxaction=add&ajaxaddid=<?=$ar_fields['ID'];?>" rel="nofollow" class="catalog-item-buy input-basket-submit" href="?action=ADD2BASKET&id=<?=$ar_fields['ID'];?>">В корзину</a>
bitrix, в корзину560Код кнопки добавления в корзину итрикс
101
/bitrix/modules/main/include.php replace OLDSITEEXPIREDATE by (exmpl) time() + 86400 * 3
bitrix100replace old site expire date
79
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$widthPreview = 300;
$heightPreview = 200;
$widthPreviewBig = 300*2;
$heightPreviewBig = 200*2;
foreach($arResult['ITEMS'] as $i => $arItem) {

        $file = CFile::ResizeImageGet($arItem['FIELDS']["DETAIL_PICTURE"]['ID'], array('width' => $widthPreviewBig, 'height' => $heightPreviewBig), BX_RESIZE_IMAGE_EXACT, true);
        $arResult['ITEMS'][$i]["FIELDS"]["DETAIL_PICTURE"]["SRC"] = $file["src"];
        $arResult['ITEMS'][$i]["FIELDS"]["DETAIL_PICTURE"]["WIDTH"] = $file["width"];
        $arResult['ITEMS'][$i]["FIELDS"]["DETAIL_PICTURE"]["HEIGHT"] = $file["height"];

        $file = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"]['ID'], array('width' => $widthPreview, 'height' => $heightPreview), BX_RESIZE_IMAGE_EXACT, true);
        $arResult['ITEMS'][$i]["PREVIEW_PICTURE"]["SRC"] = $file["src"];
        $arResult['ITEMS'][$i]["PREVIEW_PICTURE"]["WIDTH"] = $file["width"];
        $arResult['ITEMS'][$i]["PREVIEW_PICTURE"]["HEIGHT"] = $file["height"];
}
resizeImageGet, resize, bitrix2300Ресайз
76
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

use BitrixIblock;

$sectionsID = array();
foreach ($arResult["ITEMS"] as $arItem) {
    if ($arItem["IBLOCK_SECTION_ID"]) {
        $sectionsID[] = $arItem["IBLOCK_SECTION_ID"];
    }
}
$sectionsID = array_unique($sectionsID);

$result = IblockSectionTable::getList(array(
    "select" => array(
        "ID",
        "NAME",
    ),
    "filter" => array(
        "ID" => $sectionsID,
        "IBLOCK_ID" => $arResult["IBLOCK_ID"],
    ),
));

$arResult["SECTIONS"] = array();
while ($row = $result->fetch()) {
    $arResult["SECTIONS"][$row["ID"]] = $row;
}

sections, bitrix, sections by id120Выбор секций каталога Битрикс по ID элемента
75
$widthPreview = 200;
$heightPreview = 200;

if ($arResult["DETAIL_PICTURE"]) {
    $file = CFile::ResizeImageGet($arResult["DETAIL_PICTURE"], array('width'=> $widthPreview, 'height'=> $heightPreview), BX_RESIZE_IMAGE_EXACT, true);
    $arResult["PREVIEW_PICTURE"]["SRC"] = $file["src"];
    $arResult["PREVIEW_PICTURE"]["WIDTH"] = $file["width"];
    $arResult["PREVIEW_PICTURE"]["HEIGHT"] = $file["height"];
} elseif($arResult["PREVIEW_PICTURE"]) {
    $file = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], array('width'=> $widthPreview, 'height'=> $heightPreview), BX_RESIZE_IMAGE_EXACT, true);
    $arResult["PREVIEW_PICTURE"]["SRC"] = $file["src"];
    $arResult["PREVIEW_PICTURE"]["WIDTH"] = $file["width"];
    $arResult["PREVIEW_PICTURE"]["HEIGHT"] = $file["height"];
}
resizeImageGet, resize, bitrix250result_modifier для кеширования и ресайза картинок
45
<?
$str = "1234567890";
echo TruncateText($str, 7);
// результатом будет строка "1234567..."
?>
bitrix, truncate, text, truncate text3100Обрезка текста в Битрикс
17
if($arParams["PREVIEW_TRUNCATE_LEN"] > 0 && strlen($arItem["PREVIEW_TEXT"])>5)
            $arItem["PREVIEW_TEXT"] = $obParser->html_cut($arItem["PREVIEW_TEXT"], $arParams["PREVIEW_TRUNCATE_LEN"]);
truncate, bitrix, prewiew text400Функция Битрикс для обрезки превью текста, если обрезка автоматически не работает
12
$items_sel =  (new CIBlockElement())->GetList([], $filter, 0, 0, ['ID']);
$arResult['ITEMS_SELECTED'] = $items_sel->SelectedRowsCount();

if(!$arResult['ITEMS_SELECTED'])
    $ids = [];
else
    while($item = $items_sel->Fetch())
        $ids[] = $item['ID'];
select, iblock, bitrix100Выбор айблоков в Битрикс