Ответы пользователя по тегу 1С-Битрикс
  • Показывает не ту кнопку на мобильных устройствах?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Нужно локализировать проблему, пока не ясно, где болит.

    Это могут быть стили и браузер, а может с бекенда приходит так.
    Можно подключить смартфон через USB и отладчиком chrome проинспектировать HTML-код.
    Если выдача разная — искать в компонентах, почему так.
    В этом случае идеальным будет xdebug "на лету" при просмотре сайта с устройства, а инспектированием на компьютере.
    Ответ написан
    Комментировать
  • Добавить поле "Ответ" в почтовый шаблон веб фомы?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Отслеживаем почтовое событие и вклиниваемся в письмо
    Ответ написан
  • Как избавиться от дублей разделов в 1С-Битрикс?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Насколько я понимаю, это будет ручное указание.
    Я бы:
    1. Завёл пользовательское свойство разделу, строка. Например UF_CANONICAL_TO.
    2. Прописал тем разделам, которые нужно «склеить», адрес канонической страницы в это свойство.
    3. В шаблоне компонента (в его папке, имеется в виду) создал component_epilog.php (чтобы кеш не перебивал мне добавление строки) и там проверял: если свойство установлено, прописывал каноникал.

    [+]
    Добавить свою строку в шапку изнутри:
    \Bitrix\Main\Page\Asset::getInstance()->addString( '<link rel="canonical" href="УРЛ" />' );


    [+]
    Чтобы «пробросить» arResult-параметры в component_epilog:
    в шаблоне компонента создаём result_modifier.php и внутри код:
    $cp = $this->__component; // объект компонента
    
    if (is_object($cp)) {
        $cp->SetResultCacheKeys( array_keys( $arResult ) );
    }
    Ответ написан
    Комментировать
  • Где менять заголовок блока новостей в Битриксе?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Скорее всего используется кастомизированный шаблон, в нём и найти эту строку.
    Из неё станет понятно, как оно выводится.
    Ответ написан
    5 комментариев
  • 1c Bitrix - свойства товаров. Как поменять их местами в выводе в карточке товара?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Ещё можно создавать свои наборы закладок и свойств в них.
    Группируя однотипные и одно-смысловые и скрывая то, что контент-менеджеру видеть не нужно.

    643ecbc0dc3d42348ab8dcd52dc48f14.png
    Ответ написан
    Комментировать
  • Как скрыть элемент раздела, не деактивируя его?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Завести новое свойство элемента, например: hide_in_section_page

    Это свойство-флаг. Логика поведения: если оно не установлено — элемент показывается (там где вам нужно), если установлено — не показывается. Например, пускай это будет числовое поле. Если пустое или ноль == флаг не установлен, если единица — флаг установлен.

    На странице со списком элементов в настройках компонента прописываете, в какой переменной будет храниться дополнительный фильтр. В этой переменной передаётся массив, который будет склеен с фильтром, который передаётся в CIBlockElement::GetList.

    Пусть будет переменная, заданная в параметрах компонента по-умолчанию: arFilter.
    Перед вызовом компонента нужно инициализировать массив.

    Для нашего случая:
    $GLOBALS[ 'arFilter' ]= array(
    	'!PROPERTY_hide_in_section_page' => 1
    );
    Ответ написан
    Комментировать
  • Eclipse PDT / PHPStorm — как настроить полноценные подсказки?

    AlexeyGfi
    @AlexeyGfi Автор вопроса
    YouTube >>> Битриксоид из Колхоза
    Сам спросил, сам отвечаю =)
    Мучил техподдержку, но разговор похож на теннис — перебрасывание мячика с поля на поле.

    Настроил отладку через xdebug и в вотчере всё увидел.
    Вот как это выглядит в дебагере:
    145d7304f9b846eabb6eb93c43ef0924.png

    ================ Удалённый дебаггинг (remote debug, xdebug) ================
    Инструкция (для тех, кто попадёт сюда с поиска).
    Что нужно для настройки дебаггинга удалённо (потому что, блин, пришлось поковыряться).
    Ниже даны секции по PHPStorm и Eclipse PDT.

    Дано:
    Компьютер №1:
    Windows + PhpStorm.

    Компьютер №2:
    Debian + Апач удалённо.

    Задача: организовать синхронный дебаггинг между компьютерами.

    Важно: шторм будет идти по шагам по вашему файлу, а "слушать" отчёт xdebug, который транслирует, идя по файлам на удалённом сервере.
    Поэтому файл, открытый в шторме, должен быть точной копией того, что выполняется на сервере.

    Шаги:
    1. На сервере устанавливаем xdebug, настраиваем php.ini
    6ff3e74f4c7747a196772da98976f737.png

    В нём я переменную xdebug.remote_enable отключил, потому что на шторм начинают сыпаться запросы со всех сайтов на сервере =)

    Эту переменную инициализировал через .htaccess именно в той директории, откуда провожу отладку:
    php_flag xdebug.remote_enable on

    (!) в рамках всего сайта:
    Чтобы работало так: для обычных пользователей дебаггинг отключен, а для вас стартует — в htaccess прописываем:
    <If "%{REMOTE_ADDR} == '137.126.15.14'">
    	php_flag xdebug.remote_enable on
    </If>

    ... где 137.126.15.14 — ваш IP адрес (аналог php-переменной $_SERVER[ 'REMOTE_ADDR' ])

    Можно htaccess настроить более тонко, чтобы админка не прерывалась в дебаг (или наоборот).
    Пример конфига (REQUEST_URI не захотело использовать, хз почему — в phpinfo() они определены):
    <If "%{REMOTE_ADDR} == '137.126.15.14' && ! %{THE_REQUEST} =~ m#/bitrix/#">
    	php_flag xdebug.remote_enable on
    	php_flag xdebug.remote_autostart on
    </If>


    Если на сервере / на сайте работают разные программисты, можно разделение дебаг-потоков сделать через трансляцию на разные порты в зависимости от пользователя (IP-адреса клиента):
    <If "%{REMOTE_ADDR} == '137.126.15.14' && ! %{THE_REQUEST} =~ m#/bitrix/#">
    	php_flag xdebug.remote_enable on
    	php_flag xdebug.remote_autostart on
    	php_value xdebug.remote_port 9013
    </If>

    ... соответственно, ориентируясь на IP и запрошенный урл, дебаггер транслирует информацию на определённый порт. Программисту остаётся правильно установить туннель.

    2. Пробрасываем SSH-туннель.
    Задача: сделать так, чтобы на порт 9007 компьютера №1 поступала информация, которая транслируется на порт 9002 компьютера №2.

    Исходя из формулировки, благодаря этому способу можно пробросить туннель, если порты отличаются.
    Например, вам достался сервер, на который у вас есть SSH-доступ, но нет возможности менять порт xdebug. Или локально порт занят и вам нужно какой-то нестандартный.
    То есть реально пробросить например туннель, который на порт 9007 компьютера №1 будет транслировать информацию с порта 9002 компьютера №2. Сервер пушит инфу на 9002, а вы на локальном компьютере слушаете порт 9007 .

    Сделал это через putty:
    ff4ab5092dce4326bca9914a4f7168fc.png

    ...как проверить?
    83cd6ae9cd5549269205de6191acade8.png

    ================ PHPStorm ================
    3. На компьютере ставим слушать порт 9007 (в моём случае):
    Меню File / Settings / Languages & Frameworks / PHP / Debug + кнопочка "Start Listening for PHP Debug Connections"
    7c5b067e84c34c3da9cebdb30d151742.png
    +
    916b5cee651c4283bbc48bf997528376.pngUPD: прослушка порта (вкл/выкл).

    Вот скриншот, которого очень не хватает во всех раскопаных туториалах:
    805110c8b3bb43a19192778aac36aac8.pngРезультат: когда шторм слушает порт и мы в обычном браузере открываем страницу, которая находится в разделе, пинаюшем xdebug.remote_enable, шторм перехватывает сигнал и ведёт его уже через свой дебаггер.
    Нужно только не забыть либо поставить breakpoint, либо опцию Break at first line in PHP script, иначе скрипт просто пролетит и даже не заметишь =)

    По поводу соответствия / несоответствия файлов локально и удалённо: если шторм замечает, что не может сопоставить файлы, он выдаст предупреждение и предложит настроить маппинг:
    7d2f592f1d0343759d9ab296a64c8c26.png

    ================ ECLIPSE PDT ================
    Настройка под Eclipse PDT.
    Шаги на сервере и туннеля остаются те же.

    Переходим в Windows / Preferences / PHP / Servers.

    Там создаём новый сервер:
    8390f852457e43afa51c56194fa26bfb.png

    Заходим в него снова и донастраиваем появившиеся вкладки:
    e3818d1a963541c4ae83e613151be318.png

    Ставим созданный сервер по-умолчанию:
    e76298e9b1ea445d9e7347ac853936e5.png

    Поставим ещё, чтобы дебаггер break-нулся с первой же строчки (потом можно отключить и использовать breakpoints):
    dc558e98f2e74b49b499799e7697c02e.png

    Когда убедимся, что всё работает, — рекомендуется проводить то же, но индивидуально для конкретного проекта: через Property проекта, либо через Debug Configuration:

    f96c1932cb334e39bea70d11952878f8.png

    Всё.
    Теперь, когда на порт 9007 поступит сигнал, Eclipse встрепенётся:
    6c181c46964248f59a57a1d08fcb16b6.png

    Принимаем сигнал и начинаем отладку.
    Ответ написан
    Комментировать
  • Битрикс.Как передать ссылку за пределы компонента?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    В настройках инфоблока шаблоны ссылок прописаны?
    Если на странице партнеров список акций выводится стандартным компонентом, в arResult список элементов должен содержать ссылки.
    Если вывод через API (старое), в выборке нужно указать Select поля DETAIL_PAGE_URL, а отбирать элементы через GetNext или GetNextElement.
    Ответ написан
  • Вывод описания каталога на определенной странице?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Компонент bitrix.catalog.section
    или через API:
    https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
    Ответ написан
    Комментировать
  • Переход из 1С в web-разработчики (PHP ) в 35 лет. С чего начать и реально ли?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Больше 10 лет работаю под Битриксом. Мне очень нравится то, что в этой работе нужен целый стек знаний. Начиная от настройки апача и нжинкса (у меня свой сервер на Хетцнере) и до вёрстки. Прям прёт от кайфа.

    Этот год начал вникать в новое ядро (а там уже ORM), начал восполнять недостаток знаний. Ниточка за ниточкой... — просмотрев видео-курс по Ларавел понял, что моё мировоззрение дало трещину. Насколько там всё строго и по полочкам, в противовес анархии внутри Битрикса. Но у битрикса шикарное лицо. CMS прокачана так, что удобно как заказчику, так и обслуживающей команде. Вряд ли какая CMS сможет угнаться. Но внутренности... Мама дорогая. Хочется скрестить Ларавел и Битрикс (CMS).

    Есть надежда, что новое ядро привнесёт какую-то строгость, но, увы, Битриксы не культивируют "эко-культуру". То есть тренда быть стильным, правильным, структурным — нет. Порог входа опущен настолько, что можешь писать лапшой, можешь прикручивать свои шаблонизаторы. Вообще твори что хочешь. Битрикс ограничивается необязательными рекомендациями.

    Ища выход стремлению "хочу большего" завёл профиль на апворке и логично задумался: а что я могу предложить? То есть сначала была шальная мысль выходить на full-stack заказы c Битриксом, но, блин, после Ларавелл я уже не уверен. Если переходить (менять тех заказчиков, которые уже есть), то на солидный уровень (по задачам, в первую очередь). А для этого нужно понимание: к чему душа лежит (выбор технологии) и что востребовано (однозначно могу сказать, что буду копать Ларавел — уже и мини-проекты придумал; из фронт-энда буду пробовать пилить Вью, но пока что нет жёсткой мотивации: чистый css/js никто не отменял). А значит метод проб и ошибок. Пока не определился — держать ушки на макушке и анализировать входящий поток, не особо отвлекаясь от текущих дел, потому что так можно и загнуться (а на плечах семья, дети).

    Пытаясь понять, «как оно», — запустил и небольшой оффлайн бизнес с продажей через Интернет. Есть опыт запуска своих проектов и этот путь мне кажется наиболее перспективным для удовлетворения жизнью: сразу делаешь то, что легко согласовывать (с самим собой =), за ошибки платишь сам, можно делать неспеша (некоторые решения должны вызреть внутри), а можно упасть и прям не вставать пока не закончил — делаешь-то для себя, а это совсем другой настрой.

    Но чем хорошо (полезно) по-фрилансивать: остаёшься в курсе новинок, не оседаешь в своей тине и не разучиваешься шевелиться. По сабджу — держать нос по ветру, пробовать разные задачки, пока не придёт чёткое понимание.
    Ответ написан
    Комментировать
  • Как получить только 1 подарок для товара корзины?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    В настройках правил работы с корзиной чекбокс
    "Прекратить дальнейшее применение правил"
    Ответ написан
    Комментировать
  • Как задать свойства у элементов раздела в битриксе?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    В обсуждении, откуда взят скриншот, есть ссылка на разъяснение:
    https://dev.1c-bitrix.ru/community/blogs/product_f...

    Ключевой момент: работает только с торговыми каталогами.
    Ответ написан
    Комментировать
  • Закрытие тегов в файле footer.php, возможно ли описать что тег был открыт?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Сделать через echo?
    Просто как вариант.
    Ответ написан
    Комментировать
  • Как в битриксе сделать ресайз картинок по точном размеру и заливкой недостающего белым?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Написать самому на основе
    imagecreatetruecolor
    Ответ написан
    Комментировать
  • Как изменить состав отгрузки в заказе?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Сравните с кодом из ядра
    /bitrix/components/bitrix/sale.order.ajax/class.php

    /**
    	 * Initialization of shipment object. Filling with basket items.
    	 *
    	 * @param Order $order
    	 * @return Shipment
    	 * @throws Main\ArgumentTypeException
    	 * @throws Main\NotSupportedException
    	 */
    	public function initShipment(Order $order)
    	{
    		$shipmentCollection = $order->getShipmentCollection();
    		$shipment = $shipmentCollection->createItem();
    		$shipmentItemCollection = $shipment->getShipmentItemCollection();
    		$shipment->setField('CURRENCY', $order->getCurrency());
    
    		/** @var Sale\BasketItem $item */
    		foreach ($order->getBasket() as $item)
    		{
    			/** @var Sale\ShipmentItem $shipmentItem */
    			$shipmentItem = $shipmentItemCollection->createItem($item);
    			$shipmentItem->setQuantity($item->getQuantity());
    		}
    
    		return $shipment;
    	}
    Ответ написан
    Комментировать
  • Почему поиск ищет по ID элемента ИБ, а по названию нет?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    CIBlockElement::GetList

    Во втором параметре только по ID и задан поиск.
    Name вообще никак не фигурирует.
    Ответ написан
  • Как сделать якоря в слайдере на битриксе?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    В слайдере прописаны именно такие id?
    урок1
    Ответ написан
  • Можно ли создать товар без торгового предложения?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    Попытался создать товар без торгового предложения,

    Как именно?
    Товар без торгового предложения как раз используется в основных сценариях.
    Ответ написан
  • Как вывести адрес страницы в Битрикс?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    При приёме запроса отслеживать
    $_SERVER[ 'HTTP_REFERER' ] (== адрес)

    По урлу определять товар.
    Ответ написан
    Комментировать