<FilesMatch ".php$">
Order allow,deny
Allow from all
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
Options -Indexes
ErrorDocument 404 /404.php
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>
<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 days"
ExpiresByType image/gif "access plus 3 day"
ExpiresByType image/png "access plus 3 day"
ExpiresByType text/css "access plus 3 day"
ExpiresByType application/javascript "access plus 3 day"
</IfModule>
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "DoNotUpdate");
function DoNotUpdate(&$arFields)
{
if ($_REQUEST['mode'] == 'import') {
if (isset($_GET['type'], $_GET['mode']) && $_GET['type'] === 'catalog' && $_GET['mode'] === 'import') {
unset($arFields['PREVIEW_PICTURE']);
unset($arFields['DETAIL_PICTURE']);
}
}
}
// local/php_interface/init.php
// Кастомные скидочные правила
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
"sale",
"OnCondSaleActionsControlBuildList",
["ProjectName\\EventHelpers\\SaleActionCustomPrice", "GetControlDescr"]
);
<?php
// local/php_interface/lib/eventhelpers/SaleActionCustomPrice.php
namespace ProjectName\EventHelpers;
use \Bitrix\Main\Loader;
class SaleActionCustomPrice extends \CSaleActionCtrlAction
{
/**
* Получение имени класса
* @return string
*/
public static function GetClassName()
{
return __CLASS__;
}
/**
* Получение ID условия
* @return array|string
*/
public static function GetControlID()
{
return "DiscountPriceType";
}
/**
* Добавление пункта в список условий с указанием отдельной группы
* @param $arParams
* @return array
* @throws \Bitrix\Main\ArgumentException
* @throws \Bitrix\Main\LoaderException
* @throws \Bitrix\Main\ObjectPropertyException
* @throws \Bitrix\Main\SystemException
*/
public static function GetControlShow($arParams)
{
$arControls = static::GetAtomsEx();
$arResult = array(
'controlgroup' => true,
'group' => false,
'label' => 'Кастомные правила',
'showIn' => static::GetShowIn($arParams['SHOW_IN_GROUPS']),
'children' => [array(
'controlId' => static::GetControlID(),
'group' => false,
'label' => "Если тип цены не",
'showIn' => static::GetShowIn($arParams['SHOW_IN_GROUPS']),
'control' => array(
"Если тип цены не",
$arControls["PT"]
)
)]
);
return $arResult;
}
/**
* Формирование данных для визуального представления условия
* @param bool $strControlID
* @param bool $boolEx
* @return array
* @throws \Bitrix\Main\ArgumentException
* @throws \Bitrix\Main\LoaderException
* @throws \Bitrix\Main\ObjectPropertyException
* @throws \Bitrix\Main\SystemException
*/
public static function GetAtomsEx($strControlID = false, $boolEx = false)
{
$boolEx = (true === $boolEx ? true : false);
$priceList = [];
if (Loader::includeModule('main')) {
// Получение типов цен
$arGroupPrice = \Bitrix\Catalog\GroupTable::getList([
'select' => ['ID', 'NAME'],
'cache' => [
'ttl' => 60,
'cache_joins' => true,
]
]);
while ($el = $arGroupPrice->fetch()) {
$priceList[$el['ID']] = $el['NAME'] . " [" . $el['ID'] . "]";
}
}
$arAtomList = [
"PT" => [
"JS" => [
"id" => "PT",
"name" => "extra",
"type" => "select",
"values" => $priceList,
"defaultText" => "...",
"defaultValue" => "",
"first_option" => "..."
],
"ATOM" => [
"ID" => "PT",
"FIELD_TYPE" => "string",
"FIELD_LENGTH" => 255,
"MULTIPLE" => "N",
"VALIDATE" => "list"
]
],
];
if (!$boolEx) {
foreach ($arAtomList as &$arOneAtom)
{
$arOneAtom = $arOneAtom["JS"];
}
if (isset($arOneAtom))
{
unset($arOneAtom);
}
}
return $arAtomList;
}
/**
* Функция должна вернуть колбэк того, что должно быть выполнено при наступлении условий
* @param $arOneCondition
* @param $arParams
* @param $arControl
* @param bool $arSubs
* @return string
*/
public static function Generate($arOneCondition, $arParams, $arControl, $arSubs = false)
{
return __CLASS__ . '::applyProductDiscount($row, "' . $arOneCondition["PT"] . '")';
}
/**
* Логика кастомного условия
* @param $row
* @param $priceType
* @return bool
*/
public static function applyProductDiscount($row, $priceType)
{
return $priceType != $row['PRICE_TYPE_ID'];
}
}
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
global $USER;
header('content-type: application/json');
$request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
$errors = array();
$input = array();
try {
$input = \Bitrix\Main\Web\Json::decode($request->getInput());
} catch (Exception $e) {
$errors[] = $e->getMessage();
}
if ($errors) {
$return = [
"error" => [
"message" => $errors
]
];
} else {
// тут ваш код
// в input посланные вами данные
}
echo json_encode($return);
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "DoNotUpdate");
function DoNotUpdate(&$arFields)
{
if ($_REQUEST['mode'] == 'import') {
if (isset($_GET['type'], $_GET['mode']) && $_GET['type'] === 'catalog' && $_GET['mode'] === 'import') {
unset($arFields['PREVIEW_PICTURE']);
unset($arFields['DETAIL_PICTURE']);
}
}
}