Задать вопрос
  • Как вывести из БД картинки?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Добавляя к ответу Егор Скороходов, если уж очень не хочется работать с ManyToMany-моделями, есть более простой способ (как заплатка подойдет, но в перспективе будет хуже).
    В SQL есть такая штука - FIND_IN_SET и можете воспользоваться ею.
    Ответ написан
    Комментировать
  • Как сделать кнопку отправки вложения?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Загрузка файлов
    Для отправки почты использовать что-нибудь попроще: PHPMailer или Swift Mailer

    Неплохо было бы почитать по Чистый код на php и PHP: The Right Way
    Ответ написан
  • Как сервер аутентификации взаимодействует с другими серверами и устройством пользователя?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Да тут по сути пара вариантов и есть:
    1) Либо запросы проксируются (пропускаются) через СА к внутренним ресурсам. Тогда СА является единой точкой доступа к сети.
    2) Либо запросы идут к конкретным ресурсам, а они уже опрашивают СА на предмет - правильный ли этот токен.

    Я мало где видел второй вариант, посколько использовать одну точку доступа и на ней же располагать СА куда проще и выгоднее (нет лишних запросов по сети и время ожидания меньше).
    Ответ написан
    Комментировать
  • В чём заключается опасность 410 ошибки?

    gromdron
    @gromdron
    Работаю с Bitrix24
    почему все не использую 410 ошибку вместо 404?


    А зачем? 404 прекрасно себя зарекомендовала в сайтостроении. На практике при работе в браузере я встречаю не более 10 кодов состояний и мне этого более чем достаточно. Остальное нужно по большей части для API или каких-либо специальных нужд. А если и так работает, то зачем усложнять?

    P.S. Делать сайт нужно для людей
    Ответ написан
  • Возможно ли разделить информацию по филиалам в Bitrix?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Есть несколько вариантов решения данной ситуации:

    1) Если в дальнейшем с филиалами ничего не планируется делать (т.е. не будет своих страниц, привязок новостей к филиалам и т.п.), то лучше использовать разделы инфоблока. Для такой единичной группировки в конкретном месте это будет наиболее быстрый и простой способ.

    2) Если планируется создавать новости и отображать их в зависимости от филиала (или услуги), то лучше сделать отдельный инфоблок "Филиалы" с перечнем филиалов, а уже в инфоблоке "Специалисты" создать свойство инфоблока "Филиал" с типом - привязка к элементам инфоблока "Филиалы".

    3) Если планируется более глобальное разделение - т.е. у каких-то филиалов могут быть интернет-магазин, а других новости или блог, то следует создать отдельные файлы под филиалы. Но это уже больше к большим и крупным компаниям.
    Ответ написан
    Комментировать
  • Слетает контент при восстановлении битрикса?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если у Вас Битрикс старше 16 версии:
    1) Проверьте новый сервер через bitrix_server_test.php
    2) Закройте публичную часть сайта
    3) Проверьте сайт на ошибки (проверка системы)
    4) Сделайте бекап проекта в в папку на сервере, а не в облако
    5) Скачайте бекап на локальный компьютер
    6) Загрузите архивы вместе с restore.php на новый сервер
    7) Восстановите сайт из загруженного архива

    Если младше 16 версии:
    1) Проверьте новый сервер через bitrix_server_test.php
    2) Закройте публичную часть сайта
    3) Вручную сделайте бекап файлов проекта (лучше всего походит tar)
    4) Вручную сделайте бекап базы данных
    5) Загрузите файлы и базу на новый сервер
    6) В /bitrix/.settings.php, /bitrix/.settings.extra.php и /bitrix/php_interface/dbconn.php поменяйте данные доступа
    7) На распакованном сайте в административном разделе правьте все отсылки к старому сайту

    В обоих случаях после восстановления очистить папки /bitrix/cache/, /bitrix/managed_cache/ и /bitrix/stack_cache/.
    Если каких либо папок нет, не переживать и продолжать дальше.
    Ответ написан
    Комментировать
  • Как вывести свойства товаров в корзине?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Это можно сделать при помощи API в result_modifer.php.
    Конкретных кусков кода не подскажу, тут сильно много вариантов есть.
    Ответ написан
    6 комментариев
  • Как снять ограничения на кол-во символов в Bitrix?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Создайте свое собственное свойство, наследуя CIBlockPropertyHTML и переопределяя соответствующий метод. Альтернативных вариантов, чтобы и работало все и проблем не было, я не вижу.
    Ответ написан
    1 комментарий
  • Как сделать вывод связанных highload блоков?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Я Вам уже на форуме Битрикса отвечал, но попробую и тут дать ответ.

    Все дело в том, что Вы не понимаете как Битрикс это хранит и интерпретирует.
    По факту он не обрабатывает, а просто достает это из базы данных как есть.
    Можно достать связанные поля, но по правилам реляции ORM (а highloadblock это по факту ORM), при наличии Вашего кейса Вам вернется не 1 элемент с 3 вложенными структурами, а 3 элемента, каждый из которых будет содержать по 1 элементу.

    Логика повторяющая поведение "Инфоблоки 1.0".
    Ответ написан
  • На чем делать простую CRM?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Прежде всего стоит задать вопрос: насколько это актуально для 2х человек? Насколько именно все это им нужно.

    Возможно, именно для Вас подошел бы Битрикс24.

    1) Базу клиентов можно импортировать через веб-хук, тогда все будет отображаться и храниться в crm-сущностях и Вы сможете даже свои бизнес-процессы выстраивать (если понадобится). При этом, в этом году выйдет формирование документов по шаблону, так что тут он закроет Ваши потребности штатным механизмом.. в прицнипе даже загрузку можно через штатные инструменты сделать (csv он понимает)

    2) Есть мобильное приложение и для iOS и для Android, причем к ним можно на javascript разрабатывать приложения. Получается что Вы можете открыть приложение в приложении и уже оно найдет Ваши координаты и может сопоставить их с хранимыми. Без разработки приложения увы не обойтись.

    По-поводу стека технологий для Битрикс24: html, css, javascript (все остальное сделает сам б24).
    При этом можно пользоваться облачной версией (и хз насчет прайста, возможно даже бесплатный вариант может подойти)
    Ответ написан
  • Почему не снимается галочка активности для второго сайта на Битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Нужно проверять по очереди:
    - Кеширование
    - Обработчики события
    - Баги (на не обновленном сайте такое возможно или при установке бета-версий)

    Причин может быть много (от лишнего вывода на своих событиях до багов платформы) и если не хотите разбираться - обратитесь в бесплатную техническую поддержку (ну или к частным специалистам).
    Ответ написан
  • Как отобразить меню при многосайтовости Битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Файлы сайтов лежат в директориях s1 и s2.
    При обращении к site.ru

    Это очень плохая многосайтовость - сделана криво.

    Нужно сделать как минимум так:
    /home/bitrix/www/.top.menu.php
    /home/bitrix/www/about/index.php
    /home/bitrix/www/s2/.top.menu.php
    /home/bitrix/www/s2/about/index.php

    И тогда первый сайт открывайте по site.ru (SITRE_DIR = /)
    А в old.site.ru сделайте SITE_DIR = /s2/

    Либо вообще по разным папкам разнесите:
    /home/bitrix/www/* - первый сайт
    /home/bitrix/ext_www/s2/* - второй сайт

    То что Вы сделали, может быть для dev'а подойдет, но никак не для production - вам сеошники палками в темную забьют
    Ответ написан
    Комментировать
  • Порядок подключения скриптов bitrix в админке?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Не завязывайтесь на глобальную область и порядок выполнения страницы.
    Вы пытаетесь сделать полносвязанные вещи: переменную и скрипт который с ней работает, при этом скрипт вынести в расширения.

    Если уж Вы хотите работать с расширением, то тогда используйте другую парадигму: в js-файле расширения храните классы, а на странице инициализируйте объекты с уже готовыми параметрами.

    Хотите узнать больше? Посмотрите компоненты sale.order.ajax или sale.basket.basket
    Ответ написан
    Комментировать
  • Как в в дизайнере бизнес процессов сменить источник, по определенному имейлу?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Алгоритм простой:

    1) Создаем бизнес-процесс на лиде который запускается при создании
    2) Ставим условие на источник
    3) Изменяем поля документов через соответствующее действие

    У Битрикса есть целый курс по работе с БП. А так же вебинары. Все это в помощь
    Ответ написан
  • Какой способ получения IP лучше?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Ну хз, на мой взгляд это не равноценные примеры: субьективно читать первый не проще, я бы отдал предпочтение функции get_ip(), с другой стороны второй пример не делает того же, что делает первый (например валидацию не проводит).

    /**
     * Return client ip if find, or null
     * @return string|null
     */
    function getUserIp()
    {
        static $ip;
    
        if ( !is_null($ip) )
        {
            return $ip;
        }
    
        $candidates = [
            @$_SERVER['HTTP_CLIENT_IP'],
            @$_SERVER['HTTP_X_FORWARDED_FOR'],
            @$_SERVER['REMOTE_ADDR']
        ];
    
        foreach ($candidates as $candidate)
        {
            if ( \filter_var($candidate, \FILTER_VALIDATE_IP) )
            {
                $ip = $candidate;
                break;
            }
        }
    
        return $ip;
    }
    
    var_dump(getUserIp());
    Ответ написан
    Комментировать
  • Почему детальная страница периодически ломается?

    gromdron
    @gromdron
    Работаю с Bitrix24
    При первом осмотре в глаза бросается система кеширования и плохо настроенная многосайтовость.

    На эталонной странице (где все норм. отображается) есть вызов к spead'у сайта error440.ru
    При этом если сравнить эталонную страницу и ту же страницу, но с непрогруженными данными получается что не грузится бОльшая часть контента контент. Я нашел расхождение в 40+ строчках.
    То есть один из компонентов (который собственно показывает карточку) не прогружается.
    Ответ написан
  • Как добавить в JOIN подзапрос?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Насколько мне известно, подобный запрос в 1 в битриксе не завернуть (минимум 2 независимых запроса).
    Дело в том, что Битрикс работает с entities, и у него нет queryBuilder'а, соответственно он может строить запросы только к известным сущностям.
    А далее начинается пляска, потому как часть запроса с IFNULL является ExpressionField, а join является ReferenceField и выражение expression нельзя применить для результата reference.

    У Вас будет ошибка:
    Expected ScalarField or ExpressionField in `*` build_from, but `Bitrix\Main\Entity\ReferenceField:*` was given. (0)
    Ответ написан
  • Как правильно собрать статистику кликов по ссылке?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Как по мне - так решение с +1 в элементе и ajax отправка не лучшая идея.
    Я бы подключил какую-нибудь Яндекс.Метрику, настроил цель на нажатие ссылки и получал бы через API в админке отчеты. Если очень уж принципиально хранить у себя, то можно раз в сутки забирать информацию.
    Ответ написан
    Комментировать
  • Как интегрировать в Битрикс 24 Открытые линии сторонний месенджер?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    1) Придумываем коннектору уникальный slug
    2) На примере imconnector.baseconnector разарбатываем собственный компонент коннектора
    3) В \Bitrix\ImConnector\CustomConnectors смотри события на вызовы кастомного коннектора и что именно они должны вернуть

    Документации по этому счастью особо нет (пока, но не известно будет ли), поэтому ковыряние :(
    Ответ написан
    Комментировать
  • Как получить все разделы инфоблока, с подразделами всех уровней вложенности?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Перечитал и вообще не понял вопроса. Есть же стандартный CIblockSection::GetList() который за 1 запрос прекрасно все достает и со вложенностью.

    В спойлере указал код, который получить все разделы включая подразделы для конкретного инфоблока, отсортированные по левому отступу (т.е. сверху вниз, слева на право). И все это за 1 запрос к БД средствами API.

    Пример который проверял
    /**
     * Всегда считаем что модуль установлен, 
     * поэтому просто подключаем его
     */
    \Bitrix\Main\Loader::IncludeModule('iblock');
    
    /**
     * У меня для тестирования инфоблок с номером 5,
     * у тебя может быть любой другой инфобло
     * 
     * @var array Параметры фильтрации
     */
    $arFilter = [
    	'IBLOCK_ID' => 5
    ];
    
    /**
     * В Битриксе разделы хранятся по принципу Nested sets
     * 
     * @var array Параметры сортировки
     */
    $arOrder = [
    	'LEFT_MARGIN' => 'ASC'
    ];
    
    /**
     * @var array Поля разделов
     */
    $arSelect = [
    	'ID',
    	'LEFT_MARGIN',
    	'DEPTH_LEVEL',
    	'NAME'
    ];
    
    $resSections = \CIBlockSection::GetList($arOrder, $arFilter, false, $arSelect);
    
    while( $arSection = $resSections->fetch() )
    {
    	var_dump($arSection);
    }


    В чем я ошибся и где я делаю не так?
    Ответ написан
    1 комментарий