• Проверка работоспособности ipgeobase?

    По ссылке blog.ivru.net/?id=82 приводится код класса для работы с базой IpGeobase а так же кеширования запросов(чтобы несколько раз один и тот же стек адресов у сервера ipGeoBase не запрашивать и как следствие уменьшить время ответа Вашего сайта)

    А касаемо проверки работоспособности, запросы к ipGeoBase шлются на адрес ipgeobase.ru:7020/geo?ip=193.232.224.10 (по ссылке приведен пример для города Иваново - определилось корректно)
    Ответ написан
    Комментировать
  • Как отправить запрос в API Я.Кассы?

    Вот тут пример кода для создания запроса в яндекс кассу blog.ivru.net/?id=80
    Кроме того информация что вообще где находится в документации яндекс кассы, всякие ссылки на тестовые платёжные реквизиты, и код как проверяется оплата.
    Примеры кода приведены под bitrix, но суть от этого не меняется.
    Ответ написан
    Комментировать
  • Подключение яндекс кассы php?

    По ссылке blog.ivru.net/?id=80 описано как отправляется запрос к яндекс кассе и как получить ответ после оплаты.
    Так же приводятся необходимые ссылки, а именно где скачать SDK библиотеку, как проводить тестирование, где брать тестовые реквизиты для теста оплаты без реального перевода денег.
    Ответ написан
    Комментировать
  • Почему не срабатывает geoip?

    Вот простая библиотека для реализации GeoIp в битрикс, без лимитов и простой настройкой blog.ivru.net/?id=82
    Ответ написан
    Комментировать
  • Как реализовать определение городов пользователя?

    Всего 3 строчки кода:
    <?php
    require $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php';// подключаем пролог Bitrix
    require_once($_SERVER["DOCUMENT_ROOT"] . "/ADRES_DO_CLASSA_OTNOSITELNO_KORNYA_SAITA/nikolaevevgeIpGeo.php");// подключаем класс библиотеки
    var_dump(nikolaevevgeIpGeo::getInfoByIp($_SERVER["REMOTE_ADDR"]));// получаем var_dump массива в результате работы библиотеки по определению географии клиента по IP-адресу

    Сам класс библиотеки доступен по ссылке blog.ivru.net/?id=82

    Установка библиотеки:

    - в первом листинге(по указанной выше ссылке) информация как осуществляется получение данных от удалённого сервера о географии IP адресов;
    - второй листинг - SQL код для создания таблицы в базе данных битрикс, куда будет сохраняться кеш для IP адресов по которым осуществлялся запрос к удалённому серверу, чтобы не выполнять повторных удалённых соединений, а так же для снижения времени определения;
    - третий листинг - это сам класс библиотеки, его код нужно сохранить например в файл nikolaevevgeIpGeo.php и подключить в первой строке кода который я привёл в своём ответе.

    Описание работы класса библиотеки:

    Библиотека достаточно простая. Содержит методы для преобразования IP адресов в целое число без точек и наоборот, а так же методы поиска по кешу в локальной базе данных, сохранению новых данных кеш, и метод для запроса информации с сервера где хранится база данных по адресам.

    Информация о географии определённая по одному IP адресу в рамках единой PHP-сессии, не создаёт повторных обращений к кешу базы данных и удалённому серверу, за счёт сохранения информации о IP-адресе в статической переменной класса библиотеки, то есть если информация о IP есть в указанном массиве запросы к удалённому серверу или базе данных выполняться не будут. Такой подход работает даже если Вы будите использовать определение из разных модулей Bitrix.

    Настройки библиотеки(не обязательно):

    В классе библиотеки есть такие строчки:
    // [НАЧАЛО] !! Настройки !!
    static public $timeToUpdate = 1728000;// Время в секундах через которое записи о IP-адресах в базе данных считаются устаревшими(1728000 = 20 дней).
    static public $tableName = "useripdata";// Имя таблицы в базе данных
    // [КОНЕЦ] !! Настройки !!
    В первой переменной Вы можете задать время хранения кеша с информацией о IP адресе, по умолчанию 20 дней.
    В второй переменной задаётся имя таблицы в базе данных которое Вы хотите использовать для хранения кеша с гео-информацией о IP-адресе(а если точнее о стеке IP-адресов), если Вы будите использовать отличное от useripdata, то не забудте поменять название таблицы при создании в базе данных а именно в строчке CREATE TABLE IF NOT EXISTS `useripdata` (

    Скрины с примерами кода и демонстрацией результата:

    5d8b6d09186ea243230798.jpeg
    5d8b6d113549f347192529.jpeg
    Ответ написан
    Комментировать
  • На комплексном компоненте news(Новости)при детальном просмотре отображается элемент не найден(элементы инфоблока находятся в множественных секциях)?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Не понял что именно я сделал но сейчас работает. В настройках ничего не менял.
    Есть лишь предположение, что хотя бы 1 раз нужно вызвать элемент из корня инфоблока, а уже затем присваивать ему разделы.
    То есть присвоил элементу родителя. зашёл на детальную отображается. Присвоил назад категории - обновил кеш - работает.
    Может не из за этого.
    Вопрос закрыт.
    Ответ написан
    Комментировать
  • Как в шаблоне news list получить массив секций(разделов) к которым относится инфоблок(элемент инфоблока принадлежит к нескольким секциям/разделам)?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Только что нашёл вот такую штуку CIBlockElement::GetElementGroups, но пока не разобрался работает или нет.

    Вопрос по поводу настройки компонента news list всё ещё актуален. То есть можно ли передать параметры компоненту так, чтобы без дополнительных запросов в result_modifier.php обойтись.
    Ответ написан
    Комментировать
  • Что делать если увольняют с работы(IT компания. Скорее всего по статье за несоответствие занимаемой должности)?

    Ух прям моя тема.
    Только у меня тема ещё только начинается, вот вот состоится судебное.
    Сейчас ограничен в времени, чтобы расписать ситуацию, я позже обязательно займусь и уже отредактирую ответ добавив необходимое описание ситуации с работодателем и подводные камни трудового законодательства и судебной системы в целом.
    Сейчас можете ознакомиться с ситуацией и поданными в суд документами, всё опубликовано тут https://vk.com/furmanov?w=wall-169093088_28
    Позже так же опубликую ссылки на аудиозапись судебного заседания и судебное решение, прочие необходимые документы.
    Ответ написан
    Комментировать
  • Как вывести ["DETAIL_PICTURE"]["SRC"] в bitrix:news?

    Если news list
    1) при вызове компонента указать
    array(
    "FIELD_CODE" => array(
    0 => "DETAIL_PICTURE",
    1 => "",
    ),
    )

    2) в шаблоне
    foreach ($arResult["ITEMS"] as $arItem) {
    // SRC детальной картинки находится в $arItem["FIELDS"]["DETAIL_PICTURE"]["SRC"];
    Ответ написан
    6 комментариев
  • Для чего используют isset в if(isset($_POST['submit'])) {}?

    Например для того, чтобы не использовать в скрипте не объявленных переменных и не существующих ключей массива.

    Генератор для безопасного получниея $_POST $_REQUEST $_GET $_COOKIE по ссылке: blog.ivru.net/issetgen.php
    Например вводим имя: traLaLa
    Выбираем $_REQUEST
    Значение по-умолчанию указываем: ""
    И ставим флаг htmlspecialchars

    Результат работы генератора:
    $traLaLa = "";
    if (isset($_REQUEST["traLaLa"])) {
    $traLaLa = htmlspecialchars($_REQUEST["traLaLa"]);
    }
    Ответ написан
    Комментировать
  • Как проверить переменную $_GET на целое число?

    Допустим есть переменная $a = "100"; То есть строка содержащая целое число.
    myint($a,true);// вернёт true
    myint($a,false);// вернёт false поскольку для того чтобы проверять и строковые значения нужно передавать true в качестве второго параметра

    или же
    $a = "100";// то-есть Int 100

    тогда
    myint($a,true);// вернёт true
    myint($a,false);// тоже вернёт true

    Обратите внимание в PHP нет функции myint, чтобы ей пользоваться разместите предварительно её код из листинга по ссылке: blog.ivru.net/?id=103
    Ответ написан
    Комментировать
  • Virtuemart обновление статуса заказа?

    Думаю что статус заказа находится в этой таблице базы virtuemart_orders.

    Есть ли у обновления статуса заказа триггер или возможность обработать это событие плагином сказать не могу, поскольку не разбирался именно в этом алгоритме.

    Как вариант можете кроном доставать статусы заказов, которые необходимо отслеживать, если коротко то это примерно так:
    $db = JFactory::getDBO();
    $q = "SELECT * FROM #__virtuemart_orders __WHERE_условия_по_запросуесли_нужно__;";
    $db->setQuery($q);
    $db->query();
    далее проверяете информацию изменился ли статус у заказов которые отслеживаете и если да выполняете с ними Вашу логику.
    То есть где то ещё сохраняете заказы которые уже были обработаны, чтобы их не дёргать и следите за всеми новыми.
    Ответ написан
    Комментировать
  • Joomla 3 VirtueMart 3 как по API работать с корзиной? Или интересует где VirtueMart и в каком формате хранит корзину? Как просто получить данные?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Разобрался, по ссылке информация по вопросу - blog.ivru.net/?id=102
    Если коротко - в моём случаи информация о товарах в корзине хранилась в сессии. В статье описано как получить объект корзины из сессии и даже не нужно подключать какие либо библиотеки VirtueMart, поскольку информация сохраняется прямо в сессии Joomla.
    Ответ написан
    Комментировать
  • Вывод данных пользователя в форму заказа битрикс: управление сайтом, как это сделать?

    Я в result_modifier.php получаю, вот код:

    global $USER;

    $arResult["MY_USER_PROPS"] = array();

    $arResult["MY_USER_PROPS"]["FIRST_NAME"] = "";
    $arResult["MY_USER_PROPS"]["MIDDLE_NAME"] = "";
    $arResult["MY_USER_PROPS"]["LAST_NAME"] = "";
    $arResult["MY_USER_PROPS"]["EMAIL"] = "";
    $arResult["MY_USER_PROPS"]["PHONE"] = "";
    $arResult["MY_USER_PROPS"]["ADDRESS"] = "";
    $arResult["MY_USER_PROPS"]["COMPANY_NAME"] = "";
    $arResult["MY_USER_PROPS"]["UR_ADDRESS"] = "";
    $arResult["MY_USER_PROPS"]["INN"] = "";
    $arResult["MY_USER_PROPS"]["KPP"] = "";

    $userId = CUser::GetID();
    if ($userId > 0) {
    $filter = array("ID"=>$userId);
    $rsUsers = CUser::GetList(($by = ""), ($order = "desc"), $filter,array("SELECT"=>array("UF_*")));
    $arUser = $rsUsers->fetch();
    foreach ($arUser as $key => $val) {
    $arResult["MY_USER_PROPS"][$key] = $val;
    }
    }

    $userId = CUser::GetID();

    if ($userId > 0) {
    $filter = array("ID"=>$userId);
    $rsUsers = CUser::GetList(($by = ""), ($order = "desc"), $filter,array("SELECT"=>array("UF_*")));
    $arUser = $rsUsers->fetch();

    if (isset($arUser["NAME"])) {
    $arResult["MY_USER_PROPS"]["FIRST_NAME"] = $arUser["NAME"];
    }
    if (isset($arUser["SECOND_NAME"])) {
    $arResult["MY_USER_PROPS"]["MIDDLE_NAME"] = $arUser["SECOND_NAME"];
    }
    if (isset($arUser["LAST_NAME"])) {
    $arResult["MY_USER_PROPS"]["LAST_NAME"] = $arUser["LAST_NAME"];
    }
    if (isset($arUser["EMAIL"])) {
    $arResult["MY_USER_PROPS"]["EMAIL"] = $arUser["EMAIL"];
    }
    if (isset($arUser["PERSONAL_PHONE"])) {
    $arResult["MY_USER_PROPS"]["PHONE"] = $arUser["PERSONAL_PHONE"];
    }
    if (isset($arUser["PERSONAL_STREET"])) {
    $arResult["MY_USER_PROPS"]["ADDRESS"] = $arUser["PERSONAL_STREET"];
    }
    if (isset($arUser["WORK_COMPANY"])) {
    $arResult["MY_USER_PROPS"]["COMPANY_NAME"] = $arUser["WORK_COMPANY"];
    }
    if (isset($arUser["WORK_STREET"])) {
    $arResult["MY_USER_PROPS"]["UR_ADDRESS"] = $arUser["WORK_STREET"];
    }
    if (isset($arUser["UF_INN"])) {
    $arResult["MY_USER_PROPS"]["INN"] = $arUser["UF_INN"];
    }
    if (isset($arUser["UF_KPP"])) {
    $arResult["MY_USER_PROPS"]["KPP"] = $arUser["UF_KPP"];
    }
    }
    // Конец получения информации о пользователе
    Ответ написан
    Комментировать
  • Bitrix. Как на D7 установить статус заказу(в момент формирования заказа)?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Роман Грицук ответил на вопрос, только я не верные статусы стандартные написал.
    Случайно посчитал что DN это статус заказа. А оказалось это статус доставки.
    Таким образом, я в статусах создал новый статус заказа - "ожидает обработки менеджером", поскольку нужного статуса заказа по-умолчанию не было.
    На скрине ниже статусы которые были по-умолчанию и новый статус который я создал (Статус A):
    5d1df8ab2fdd0474505168.jpeg

    Таким образом в конечном счёте строчка кода выглядит так:
    $order->setField("STATUS_ID", "A");

    Изначально я создал заказ с статусом DN - это привело к тому что не получается даже под админом зайти в заказ. Стал разбираться и выяснилось что DN это не статус заказа.
    Ответ написан
  • Хостинг-провайдеру не требуется лицензия на оказание услуг?

    Это было примерно так. Лицензию на телеметрические услуги должна была получать компания размещающая сервер на своей площадке. Реселлерам, размещающим аккаунты(или виртуальные машины) на этом сервере такая лицензия была не нужна. При этом реселлеру никто не запрещает писать что он предоставляет услугу хостинга.
    Ответ написан
  • Class 'Bitrix\Sale\Basket' not found (если подключать плолог, а если подключать header.php работает).Как подключить?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Разобрался!

    После use забыл написать:

    Bitrix\Main\Loader::includeModule("sale");
    Bitrix\Main\Loader::includeModule("catalog");
    Ответ написан
    Комментировать
  • Хостинг сайта, как не нарушить 152-фз?

    Не ответ на вопрос, просто как вариант, забить на то что есть 152-фз.

    Всякие яндекс-метрики не получают согласия пользователя что метрика фиксирует данные о их движении мышкой на сайте и сопоставляют куки(пусть и не дают всю информацию владельцу сайта, но сами обрабатывают и учитывают при показе рекламы в директе).
    Вы вообще можете быть не зарегистрированы в яндексе и искать исключительно гуглом, но метрика на сайтах не спросив Вашего разрешения собирает информацию какие сайты Вы посещаете и учитывает её при формировании рекламы в директе.
    Ответ написан
  • Почему bitrix:catalog.smart.filter игнорирует настройки фильтра?

    Согласно информации на форуме Битрикс скоро жить станет чуть проще.

    5d16014ac6505562479042.jpeg

    По поводу применения к задаче PREFILTER_NAME не понял. Если я комплексному каталогу в arrFilter передаю Id товаров, как мне их же отдать в start.filter, чтобы данные для фильтра строились только по Id указанных товаров?
    Ответ написан
  • Распродажа повторяет комплексный компонент catalog bitrix. Как настроить массив в FILTER_NAME чтобы на распродаже выводлись только товары с скидкой?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Сейчас решил следующим образом, при этом если у Вас есть иное решение - пожалуйста, предлагайте!

    require($_SERVER['DOCUMENT_ROOT'].'/local/templates/main/phpscripts/myGetBasketData.php');// класс нужен для получения Id товаров с скидкой
    $myGetBasketData = new myGetBasketData;

    global $arrFilter;
    $arrFilter = array();
    $arrFilter["=ID"] = $myGetBasketData->getProductIdDiscontAr();

    далее $arrFilter передаём комплексному компоненту bitrix catalog через FILTER_NAME а именно
    $APPLICATION->IncludeComponent(
    "bitrix:catalog",
    "new_catalog",
    array(
    "FILTER_NAME" => "arrFilter",
    ...

    Метод getProductIdDiscontAr класса myGetBasketData доступен в листинге файла класса myGetBasketData.php по ссылке blog.ivru.net/?id=96

    Важно! Метод возвращает массив товаров с скидкой, только тогда, когда скидка создана непосредственно на товар, то есть так как показано на скринсшоте.
    5d15f4350ea9c968017210.jpeg

    Алгоритм работы метода определения Id товаров с скидкой метода getProductIdDiscontAr() примерно следующий

    1) получается список скидок через CSaleDiscount::GetList
    2) далее в foreach Id скидок передаются в CSaleDiscount::GetByID
    3) у возвращённых данных проверяется наличие и не пустота ключа массива ["CONDITIONS"]
    4) если строка есть и не пустая парсятся данные от Equal";s:5:"value";a: до }
    5) если такие данные найдены то они множественно парсятся от i: до ;
    6) каждое второе значение это и есть Id товара на который действует скидка(эти Id собираются в массив $prodIdAr и возвращаются методом getProductIdDiscontAr)

    Таким образом если у Вас скидки указаны не явно на товар а например по свойства, то метод нужно дописывать под такие скидки.
    Ответ написан
    Комментировать