Git Hub
коротко
50 заметок с тегом

Bitrix

Магазин: Корзина

17 ноября 2016, 10:00

Корзина


Bitrix   Cart

Получить минимальную цену товара в разделе

7 ноября 2016, 15:04
function getMinPriceBySectionID($sectionID){

    $CATALOG_ID = 4;
    $rsProducts = CIBlockElement::GetList(
        Array('CATALOG_GROUP_1' => 'ASC'),
        Array('IBLOCK_ID' => $CATALOG_ID, 'SECTION_ID' => $sectionID),
        false,
        Array('nTopCount' => 1),
        Array('IBLOCK_ID', 'ID', 'NAME', 'CATALOG_GROUP_1')
    );

    $arProducts = $rsProducts->Fetch();

    $price = $arProducts["CATALOG_PRICE_1"];
    if (!empty( $price))
         return App::priceFormat($price);
    else
        return false;
}
Bitrix   Магазин

Bitrix: Консольные скрипты

18 октября 2016, 10:40
// эту соль по вкусу 
#set_time_limit(0);
#ini_set('output_buffering','off');
#date_default_timezone_set('Europe/Moscow');

// это мы проверяем что мы запускаемся тока из консольки 
if (php_sapi_name()!="cli")
                    die();

$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/../../");

require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
//у битрикса тройной буфер, поэтому 3 буфера мы и очищаем-отключаем.
ob_end_clean();
ob_end_clean();
ob_end_clean();
Bitrix   Console

Bitrix: Белый экран смерти

2 августа 2016, 10:09

WSOD — White Screen Of Death

Бывает что некорректно написанный скрипт под Битриксом падает белым пустым экраном смерти и никакого намёка на место падения.
В таких случаях надо переопределить PHP Shutdown Function следующим образом,
код можно вставить в init.php

function ShutdownHandler()
{
    if(@is_array($error = @error_get_last()))
    {
        return(@call_user_func_array('ErrorHandler', $error));
    };

    return(TRUE);
};

register_shutdown_function('ShutdownHandler');

// ----------------------------------------------------------------------------------------------------
// - Error Handler
// ----------------------------------------------------------------------------------------------------
function ErrorHandler($type, $message, $file, $line)
{
    $_ERRORS = Array(
        0x0001 => 'E_ERROR',
        0x0002 => 'E_WARNING',
        0x0004 => 'E_PARSE',
        0x0008 => 'E_NOTICE',
        0x0010 => 'E_CORE_ERROR',
        0x0020 => 'E_CORE_WARNING',
        0x0040 => 'E_COMPILE_ERROR',
        0x0080 => 'E_COMPILE_WARNING',
        0x0100 => 'E_USER_ERROR',
        0x0200 => 'E_USER_WARNING',
        0x0400 => 'E_USER_NOTICE',
        0x0800 => 'E_STRICT',
        0x1000 => 'E_RECOVERABLE_ERROR',
        0x2000 => 'E_DEPRECATED',
        0x4000 => 'E_USER_DEPRECATED'
    );

    if(!@is_string($name = @array_search($type, @array_flip($_ERRORS))))
    {
        $name = 'E_UNKNOWN';
    };

    return(print(@sprintf("%s Error in file %s at line %d: %s\n", $name, @basename($file), $line, $message)));
};

$old_error_handler = set_error_handler("ErrorHandler");

и так мы узнаем где и что упало

Bitrix   WSOD

LocalRedirect Пользователей

14 июля 2016, 12:56

Перенаправление групп пользователей по домашним директориям

somewhere.php

class UserGroupsRedirect{

    /**
     * @param $fields
     * После авторизаци перебрасываем пользователя в назначенную его группе директорию
     */
    function OnAfterUserLoginHandler(&$fields)
    {
        global $USER;
        \Bitrix\Main\Diag\Debug::dumpToFile($USER->GetUserGroupArray());
        if (!ADMIN_SECTION) {
            if ((!empty($fields['USER_ID'])) && (in_array('5',$USER->GetUserGroupArray()))){
                LocalRedirect("/");
            }

            if ((!empty($fields['USER_ID'])) && (in_array('6',$USER->GetUserGroupArray()))){
                LocalRedirect("/vip/");
            }

            if ((!empty($fields['USER_ID'])) && (in_array('8',$USER->GetUserGroupArray()))){
                LocalRedirect("/user/profile/");
            }
        }

    }

}

init.php

// обработкчики событий
use Bitrix\Main\EventManager;

$handler = EventManager::getInstance()->addEventHandler(
    "main",
    "OnAfterUserLogin",
    array(
        "UserGroupsRedirect",
        "OnAfterUserLoginHandler"
    )
);
Bitrix   Events   Портал

Bitrix: Пакетное выполнение SQL скриптов

6 июля 2016, 13:58
/**
	 * @param $pathToScript
	 * $pathToScript = $_SERVER["DOCUMENT_ROOT"]."/local/modules/[modname]/install/sql/b_table.sql";
	 *
	 */
	protected function runSqlScript($pathToScript){
		global $DB;
		$arErrors = $DB->RunSqlBatch($pathToScript);
		return $arErrors;
	}
#SQL   Bitrix

Магазин: Получить список файлов в директории

6 июля 2016, 1:49

Получить список файлов в директории

use \Bitrix\Main\IO\Directory;
use \Bitrix\Main\Diag\Debug;

$dir = new Directory(dirname(__FILE__));
$arDir = $dir->getChildren();

foreach($arDir as $dirItem){
    if ($dirItem->isFile() && $dirItem->getName()!="index.php" )
        $arMigrations[] = $dirItem->getName();
}

Debug::dump($arMigrations);

Интернет магазин: склонения

22 июня 2016, 11:21

Склонения числительных

/** 
 * Функция склонения числительных в русском языке 
 * 
 * @param int    $number Число которое нужно просклонять 
 * @param array  $titles Массив слов для склонения 
 * @return string 
 * @example: echo 'Я знаю '.declOfNum(5, array('язык', 'языка', 'языков')); 
 */  
function declOfNum($number, $titles)  
{  
    $cases = array (2, 0, 1, 1, 1, 2);  
    return $titles[ ($number%100 > 4 && $number %100 < 20) ? 2 : $cases[min($number%10, 5)] ];  
}

Склонения существительных

я использовал библиотеку phpMorphy

Bitrix   Магазин

Нативная выборка свойства строка

21 июня 2016, 18:02

Нативная выборка свойства строка из таблицы инфоблоков

select e.ID as ORDER_ID, biep.VALUE EMAIL from b_iblock_element e 
INNER JOIN b_iblock_element_property biep ON e.ID = biep.IBLOCK_ELEMENT_ID
WHERE e.IBLOCK_ID=11  AND biep.IBLOCK_PROPERTY_ID = 36

Выборка свойства типа привязка к элементу одиночная

select e.ID as ORDER_ID, biep.VALUE  from b_iblock_element e 
INNER JOIN b_iblock_element_property biep ON e.ID = biep.IBLOCK_ELEMENT_ID
WHERE e.IBLOCK_ID=11  AND biep.IBLOCK_PROPERTY_ID = 46

Выборка множественного свойства привязка к элементу

select e.ID as ORDER_ID, biep.VALUE, e2.NAME   from b_iblock_element e 
INNER JOIN b_iblock_element_property biep ON e.ID = biep.IBLOCK_ELEMENT_ID
INNER JOIN b_iblock_element e2 ON e2.ID = biep.VALUE
WHERE e.IBLOCK_ID=11  AND biep.IBLOCK_PROPERTY_ID = 49
#SQL   Bitrix

Bitrix: Запросы к БД

21 июня 2016, 11:01

Запросы к БД

use Bitrix\Main\Application; 
use Bitrix\Main\Diag\Debug; 

$record = Application::getConnection() 
->query("select 1+1;") 
->fetch(); 
Debug::writeToFile($record);
#SQL   Bitrix

Bitrix: D7

21 июня 2016, 7:23
Bitrix   D7

WebServices

16 июня 2016, 21:55
Bitrix   WebServices

Bitrix: включаемая область

29 мая 2016, 3:11

из файла

<? $APPLICATION->IncludeComponent("bitrix:main.include","",Array(
        "AREA_FILE_SHOW" => "file", 
        "PATH"=>"address.php"
    )
);?>
Bitrix

Bitrix: Информационный портал

28 мая 2016, 16:53

Новости

Новости-деталка

Текст в 2 колонки

Публикация текста статьи в соц. сетях.

WebServices

WebServices

Bitrix

Bitrix исключения

28 мая 2016, 16:36

в d7 исключения бросаются так

throw new Exception("Сообщение иключения");
Bitrix   D7

Интернет Магазин: Каталог

10 февраля 2016, 19:15

Получить базовую цену товара по его ID

$productID = $arResult["ID"];
$arBasePrice = CPrice::GetBasePrice($productID);
dump($arBasePrice["PRICE"]);

Получить список торговых предложений по ID товара из основного каталога

$arOffers = CIBlockPriceTools::GetOffersArray();

Вызов метода с параметрами

$arOffersFilter =array(
"IBLOCK_ID"=>$arParams["IBLOCK_ID"], // ID торгового каталога
"HIDE_NOT_AVAILABLE"=>"Y",
"SHOW_PRICE_COUNT"=>true);
$arOffersOrder = array("sort"=>"asc","id"=>"desc");
$arSelectFields = array("NAME");
$arSelectProps = array(
    "CML2_ARTICLE",
    "CML2_COLOR",
    "CML2_SIZE",
    "PREVIEW_PICTURE",
    "DETAIL_PICTURE"
);
$arOffersLimit = 0;
$arOffersPrices = array(
    "Розница"=>
        array(
            "ID"=>1,    
            "TITLE"=>"Цена",
            "SELECT"=>"CATALOG_GROUP_1",
            "CAN_VIEW"=>true,
            "CAN_BUY"=>true)
);
$arVat = false;


$arOffers = CIBlockPriceTools::GetOffersArray(
    $arOffersFilter,
    array($productID), // ID товара из основного каталога
    $arOffersOrder,
    $arSelectFields,
    $arSelectProps,
    $arOffersLimit,
    $arOffersPrices,
    $arVat,array()

);

dump($arOffers);
Bitrix   Магазин

Интернет магазин: Фильтры

9 февраля 2016, 16:54

Фильтр по количеству товара в магазине

$arFilter[">CATALOG_QUANTITY"]=0; // кол-во товаров больше 0

Фильтр по цене товара

$arFilter["=CATALOG_PRICE_1"]=135; // цена = 135 р
Bitrix   Магазин

Тип свойства инфоблока

6 февраля 2016, 15:13

Памятка

Тип свойства. Возможные значения: S — строка, N — число, F — файл, L — список, E — привязка к элементам, G — привязка к группам(Категориям каталога).

тип E — привязка к элементам

array (
  'IBLOCK_ID' => '4',
  'NAME' => 'Регион',
  'ACTIVE' => 'Y',
  'SORT' => '500',
  'CODE' => 'REGION',
  'DEFAULT_VALUE' => '',
  'PROPERTY_TYPE' => 'E',
  'LINK_IBLOCK_ID'=>'2',
  'LIST_TYPE' => 'L',
  'MULTIPLE' => 'N',
  'FILE_TYPE' => '',
  'MULTIPLE_CNT' => '1',
  'USER_TYPE' => NULL,
  'USER_TYPE_SETTINGS' => NULL,
  'HINT' => 'Регион',
)
Bitrix

Интернет Магазин: Оглавление

6 февраля 2016, 14:58

Оглавление

  1. Каталог товаров
  2. Список Разделов
  3. Деталка или Карточка товара
  4. Рекомендуемые товары
  5. Акции
  6. С эти товаром покупают
  7. Фильтры
  8. Интеграция с 1С
  9. Корзина
  10. Заказы
  11. Формат цены
  12. Склонения
  13. Работа с файлами
Bitrix   Магазин
Ctrl + ↓ Ранее