В случае если у вас возвращается пустой массив при Bitrix\Main\Service\GeoIp\Result, то скорей всего, у вас просто не установлено расширение PHP: необходимо установить GeoIP https://www.php.net/manual/ru/book.geoip.php правда, не все хостинги соглашаются сделать это в рамках тарифов
Андрей Белов написал: Еще бы решить вопрос - чтобы была одна скидка на все сайты, и чтобы один и тот же промо-код работал на всех сайтах
+1 Сейчас действительно как-то с этим не удобно. Вот вроде бы и есть разделение на сайты - многосайтовость. Пробуешь реализовать всё через 1 каталог товаров, просто указывая разные валюты - и сталкиваешься сразу с такими проблемами: 1. промокод для каждого сайта разный, а это сложнее проводить промоакции для проекта 2. скидки тоже привязываются только к конкретному сайту, даже в случае того что каталог один для всех общий 3. ну и вишенка на торте - Битрикс не учитывает ваши разные цены и всё равно высчитывает "оптимальную" по курсам валют.. вопрос зачем это делать, если цены конкретные вбиты..
Одна из причин почему не выводятся пользовательские свойства разделов - не указан ID инфоблока То есть, фильтр: Array("ID" => $arResult['ORIGINAL_PARAMETERS']['SECTION_ID'], "ACTIVE" => "Y") не выведет ничего нужного
Но если указать: Array("ID" => $arResult['ORIGINAL_PARAMETERS']['SECTION_ID'], "ACTIVE" => "Y", "IBLOCK_ID" => 2), то всё ок. саму цифру 2 - лучше заменить на значение из $arParams или $arResult['IBLOCK_ID']
Евгений Гончаров написал: В настройках снял галочку Не использовать архиватор и всё пошло на 2х сайтах Главный модуль-система обновлений-Не использовать архиватор
Спасибо тебе добрый человек) сэкономил кучу времени ожидания ответа поддержки)
Советую глянуть событие OnOrderNewSendEmail - Вызывается перед отправкой письма о новом заказе, может быть использовано для модификации данных, изменения идентификатора типа почтового события, по которому будет осуществлена отправка, и отмены отправки письма. https://dev.1c-bitrix.ru/api_help/sale/events/events_send_post.php
Александр Кислицын написал: Как-то все у вас сложно. Можно было просто платежную часть обернуть в условие по статусу заказа или оплаты. Мы просто сделали, что оплата доступна только если статус переведен в "Обработан", чтобы убрать проблемы с предварительной оплатой заказа(импорт раз в 5 часов?иногда товар заканчивается). Кроме того добавили, что отмена заказа доступна только для статусов "Принят, Обработан", чтобы нельзя было отменить отправленные заказы
Здравствуйте! Единственный способ который нашелся, не спорю, может сложноват... но.. в настройках платежных систем "из коробки" нет ограничений по статусам. Видимо, надо дорабатывать самим.. Скрин http://joxi.ru/KAxnXO8fMvxGbm
rustam550 написал: Цитата Дмитрий Буров написал:Оставлю этот тут (код из рабочего проекта)Код BasketPoolQuantity.prototype.updateQuantity = function () { var items = BX( 'basket_items' );
if (!!items && items.children.length > 0 ) { for ( var i = 0 ; items.children.length > i; i++) { var itemId = items.children .id; this .currentQuantity[itemId] = BX( 'QUANTITY_' + itemId).value; } }
}; CSS структура следующая:Код ... ...
В script.js кроме функции "BasketPoolQuantity" нужно поискать где ещё определяются элементы через rows и собственно изменить как в примере выше.+ Ко всему прочему нужно следить за родительским элементом - items. В моей верстке, например, структура была следующая:Код
И в моем случае мне еще пришлось написать var items = BX( 'personal__list' );
Если у вас БУС с новой корзиной, то там уже используется "шаблонизатор" и "мутатор" , с помощью которых можно за очень-очень короткое время заточить под свой дизайн.
Там всё подвязано на entity DOM элементов
За очень-очень короткое время?) вы серьезно? что корзина, что оформление заказа вообще ужасно поддаются кастомизации. Мы сейчас не берем в расчет случаи когда просто стили добавить или немного поменять местами блоки
для компонента sale.basket.basket ищем файл mutator.php находим в нём строчку $totalData = array( (у меня это 379 строка) и дописываем: if ($result['allSum'] < 500) { $totalData['DISABLE_CHECKOUT'] = 1; }
Всем привет! Хочу поделиться с вами простым решением, которое мне подсказала тех-поддержка. Основная задача состояла в том, чтобы при импорте в инфоблок (в формате ХМЛ) у нас автоматически формировался символьный код. Все что нужно сделать это поменять код файла init.php . Он находится в " Файлы и папки -> bitrix -> php_interface -> init.php " .
// файл /bitrix/php_interface/init.php
// регистрируем обработчик, при сохранении инфоблока, заполнаем поле "Символьный код" транслитерацией имени заголовка новости
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("CymCode", "OnBeforeIBlockElementAddHandler"));
class CymCode
{
// создаем обработчик события "OnBeforeIBlockElementAdd"
function OnBeforeIBlockElementAddHandler(&$arFields)
{
if(strlen($arFields["CODE"])<=0)
{
$arFields["CODE"] = CymCode::imTranslite($arFields["NAME"])."_".date('dmY');
log_array($arFields); // убрать после отладки
return;
}
}
// записывает все что передадут в /bitrix/log.txt
function log_array() {
$arArgs = func_get_args();
$sResult = '';
foreach($arArgs as $arArg) {
$sResult .= "\n\n".print_r($arArg, true);
}
if(!defined('LOG_FILENAME')) {
define('LOG_FILENAME', $_SERVER['DOCUMENT_ROOT'].'/bitrix/log.txt');
}
AddMessage2Log($sResult, 'log_array -> ');
}
function imTranslite($str){
// транслитерация корректно работает на страницах с любой кодировкой
// ISO 9-95
static $tbl= array(
'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'y', 'э'=>'e', 'А'=>'A',
'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I',
'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'Y', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h",
'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya",
'Ё'=>"YO", 'Х'=>"H", 'Ц'=>"TS", 'Ч'=>"CH", 'Ш'=>"SH", 'Щ'=>"SHCH", 'Ъ'=>"", 'Ь'=>"",
'Ю'=>"YU", 'Я'=>"YA", ' '=>"_", '№'=>"", '«'=>"<", '»'=>">", '—'=>"-"
);
return strtr($str, $tbl);
}
}
но скажу сразу, мне пришлось затереть строчку где написано
Код
log_array($arFields); // убрать после отладки
что не удивительно )) После этого все заработало. Можно дописать по своему желанию, например мы планируем поменять большие буквы на маленькие тоесть:
Код
'Ю'=>"yu", 'Я'=>"ya",
и т.д. ПС это корректно работает только при импорте в новый инфоблок а не в текущий! Проверял только в XML формате, про CSV не знаю. Если кто не понял вот вам полный код файла init.php: