Задать вопрос
  • Как вывести баннер товара в шапку сайта?

    Судя по $arResult, показанный код где-то в template.php шаблона компонента для вывода баннера. Не надо так.
    вместо этого в шаблоне компонента делаете так:
    <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
    $this->SetViewTarget("banner-head");
    if (!empty($arResult['PICTURE'])){
        echo CFile::GetPath($arResult['PICTURE']);
    }

    (это весь код шаблона)
    а в header.php сайта пишете:
    <?$APPLICATION->IncludeComponent(/* вызов компонента для баннера */);?>
    <?php
    $picture = trim($APPLICATION->GetViewContent('banner-head'));
    if (!empty($picture)): 
    // и дальше как было
    <?php

    Должно получиться.

    Пихать $APPLICATION->ShowTitle() внутрь шаблона компонента вообще дурная идея. С хлебными крошками, вероятно, то же самое, потому что это особенный компонент, и шаблон у него особенный.
    Ответ написан
  • Как убрать отступы в коде?

    два варианта:
    1)_ просто всё прижать влево:
    <?php
    $chunk = '
      <url>
      <loc>'.$site.'/look/'.$sitemap['tag'].'</loc>
      <lastmod>'.date('Y-m-d').'T'.date('h:i:s+01:00').'</lastmod>
      <priority>0.8</priority>
      </url>
      ';
    $data[] = preg_replace('/^\s+</m', '<', trim($chunk));


    2) вытянуть всё в строку:
    <?php
    $data[] = preg_replace('/>\s+</ms', '><', trim($chunk));

    Эти регулярки только для данного случая! ( потому что никаких значимых пробелов в сайтмапе быть не должно)

    Несколько замечаний:
    1) показывать код скриншотом неэтично (я про готовый сайтмап). Здесь его можно было запихнуть в тег code (кнопка в панельке) с типом XML
    2) если не используете числовые индексы, то вместо mysql_fetch_array() берите mysql_fetch_assoc()
    3) mysql_* функции - древность, используйте хотя бы mysqli ( как объект, конечно же)
    Ответ написан
    Комментировать
  • Как передать значение из компонента в result_modifier шаблона, где компонент вызывается?

    не очень подробно описано, поэтому остаётся гадать. Я предполагаю 2 варианта:
    1) попроще: где-то вызов компонента С1, в шаблоне которого упомянутый result_modifier.php . Затем, ниже первого вызова, идёт вызов компонента С2, от которого нужны данные.
    Тогда просто перенесите вызов компонента С2 выше вызова С1 и оберните:
    <?php
    ob_start();
    $APPLICATION->IncludeComponent( "C2" ...);
    $APPLICATION->AddViewContent("view2",  ob_get_clean() );
    // там, где компонент был раньше, ставите:
    $APPLICATION->ShowViewContent("view2");

    Соответственно, в component_epilog.php компонента С2 засовываете нужные значения в $APPLICATION->SetPageProperty() или просто в $GLOBALS

    2) Посложнее: компонент С2 вызывается в template.php того же шаблона, которому принадлежит result_modifier.php. Тогда в result_modifier.php будет:
    <?php
    $arResult['PROPERTIES']['TABS'][] = array(
        'CODE' => 'FAQ',
        'TITLE' => 'Вопросы о товаре #COUNT#', // Отображаем количество вопросов
        'VALUE' => 'FAQ_FORM' // Временное значение
    );
    , а в template.php выше вывода вкладок:
    <?php
    $this->SetViewTarget("view2");
    $APPLICATION->IncludeComponent( "C2" ...);
    $this->EndViewTarget();
    // передача значения - аналогично первому варианту. Допустим, через $GLOBALS
    // где-то ниже при выводе заголовка таба
    $tab['TITLE'] = str_replace('#COUNT#', $GLOBALS['count'], $tab['TITLE']);
    // и ещё ниже, где был компонент:
    ?>
    <?$APPLICATION->ShowViewContent("view2")?>
    Ответ написан
    Комментировать
  • Стоит ли изучать MongoDB в 2024?

    Моё скромное мнение: учите Postgres. Монга нее столько хорошая, сколько хайповая.
    Докер решает такие 2 проблемы ( с точки зрения разработчика ПО):
    1) "я не готов вникать, как этот софт ставить и настраивать, дайте мне такое, чтобы запустилось и работало"
    2) "я не хочу загаживать свою систему кучей разнообразного софта"

    Если уж смотреть на российские БД, то я бы глянул на Tarantool и ClickHouse
    Ответ написан
    1 комментарий
  • Как вытащить данные из формы в дополнительных настройках пользовательского поля?

    Дисклаймер: давно копался в этом ужасе, могу ошибаться.

    есть 2 ситуации:
    1) Вы только добавляете новое поле Вашего типа к какому-то объекту (допустим, USER). Вот когда Вы на форме добавления выбираете "Тип данных ..." и страница обновляется, только тогда срабатывает метод GetSettingsHTML()
    2) Вы уже сохранили поле, оно получило ID. Тогда то, что было задано в дополнительных настройках, будет в массиве по ключу SETTINGS поля. Пример кода:
    <?php
    $arUserField = CUserTypeEntity::GetByID(316); // 316 - это ID поля в моём случае, его тип - "связь с HL блоком"
    var_export($arUserField);
    Ответ написан
  • Как в битрикс в поиске добавить Найдено совпадений?

    Только делать свой компонент, плюс расширять класс CSearchTitle , посмотрите на метод
    Ответ написан
    Комментировать
  • Как решить проблему с дублированием при ajax?

    а Вы не пробовали убрать этот инлайновый скрипт в script.js шаблона? Я считаю, что у Вас в data прилетает этот javascript, исполняется, и становится 2 обработчика $(document).on('click', '.load_more',..) , на следующей подгрузке три и так далее. Это можно увидеть в DevTools - посмотрев, сколько ajax запросов порождает нажатие кнопки
    Ответ написан
    Комментировать
  • Почему сайт загружается быстрее без плагина для кэширования?

    почему PageSpeed Insights показывает обратное?

    На эту часть ответить легко. PageSpeed Insights оценивает по формальным признакам, ожидая, что внедрением рекомендаций занимается человек, и человек делает это с умом.
    А плагин позволяет так же формально подгонять результат под оценку - переносить javascript в конец, склеивать css в один файл. Но, по факту, от этих автоматических действий ситуация лучше не становится.

    Замедление может быть от того, что регулярки ( я предполагаю, что там всё на регулярках), которыми оперирует плагин, тяжёлые.
    Ответ написан
    Комментировать
  • Как правильно использовать python скрипт через PHP backend?

    Если этот python скрипт можно запустить из шелла, то используйте shell_exec(), или backtick operator, или ещё что-нибудь ( в конце страниц онлайн мануала есть секция "See also" )
    Ответ написан
    Комментировать
  • Настройка поддоменов, как?

    на уровне .htaccess уже поздно что-то делать. Это настраивается на уровне VirtualHost: в ServerName пишете основной домен, в ServerAlias поддомены ( можно указать wildcard , в документации есть пример ).
    Необязательно делать именно так, но это самый простой и читабельный вариант.
    Ответ написан
    Комментировать
  • Как вставить переменную из js в template.php и обновить страницу?

    Вам надо добавить селекту имя и как-то сабмитить форму с селектом (на выбор есть GET и POST). Соответственно, в скрипте значение выбранного города будет в одном из значений в массиве $_GET или в массиве $_POST .

    P.S. Правильно пишется "city". Учите английский, в будущем пригодится.
    Ответ написан
    Комментировать
  • Почему возникает ошибка .htaccess со знаком $ (конец строги)?

    Ломается вот из-за этой конструкции:
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php

    Если её убрать, то всё работает.
    С ней сообщение в логе:
    AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

    Собственно, частью про 'LogLevel debug' я и рекомендую Вас воспользоваться для удовлетворения любопытства
    Ответ написан
    Комментировать
  • Как написать сообщение коммита согласно спецификации?

    git commit -m 'fix (catalog): починил подменю
    
    после редизайна подменю в каталоге уехало вправо. Поправил css.
    
    https://багтрекер/ссылка-на-таск'
    Ответ написан
    Комментировать
  • Как подключить reCAPTCHA v3 к форме 1С Битрикс?

    CEvent::Send() только ставит сообщение в очередь ( читай "пишет в таблицу в БД"). А отправлено оно будет только на следующем хите, если повезёт.
    Для немедленной отправки используйте CEvent::SendImmediate()
    Ответ написан
  • Как защититься от создания пустых заказов ботами?

    повесьте обработчик на событие onOrderAdd и записывайте в какой-то лог всё, что нужно: $_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI'], что-нибудь ещё
    Ответ написан
    Комментировать
  • Как передать данные от компонента к компоненту при композитном сайте на Битрикс?

    Через параметры этого другого компонента. Если компоненты разделены, через $GLOBALS или их аналог $APPLICATION->SetPageProperty() , $APPLICATION->GetPageProperty()
    Ответ написан
    Комментировать
  • Как подключиться к Web-серверу по SSH и работать с Git через графическую оболочку наподобие Sourcetree?

    Мне кажется, Вы не очень правильно понимаете работу с гитом.
    Есть рабочая копия. Есть репозиторий ( по сути, такая же рабочая копия плюс обслуживающее её ПО).
    Традиционно работа строится так:
    • у Вас есть локальная рабочая копия, склонированная из какого-то репозитория,
    • на веб-сервере есть ещё одна рабочая копия, склонированная из того же репозитория,
    • Вы локально делаете правки, пушите их в репозиторий,
    • Заходите на веб-сервер по ssh и там делаете git pull. Ради одной-двух команд графическая оболочка не нужна.

    Вы, конечно, можете смонтировать удалённую папку как локальную ( в Linux это делается через FUSE, вроде бы), и натравить Sourcetree на точку монтирования. Но лично я такое не одобряю
    Ответ написан
  • Вывести описание раздела каталога Bitrix над его элементами?

    bitrix:catalog - это комплексный компонент. На странице element.php шаблона он подключает обычный компонент bitrix:catalog.element .
    Скорее всего, вам нужно посмотреть $arResult в шаблоне компонента bitrix:catalog.element -если там нет нужных данных, то догрузить их обращением к API в result_modifier.php .
    Ответ написан
    Комментировать
  • Как в Битрикс синхронизировать товары между основным сайтом и сайтом для разработки?

    Добавьте ещё b_file - там картинки.

    Если Вы хотите ограничиться только этими таблицами, то не так страшен чёрт, как его малюют. Я бы действовал так:
    1) через Adminer выгрузил структуру нужных таблиц на боевом и на тесте.
    2) сравнил эти структуры каким-нибудь инструментом ( например, Meld). В хорошем случае разница будет только в чём-то незначительном, типа автоинкремента.
    3) если всё хорошо, перелил таблицы.
    4) переиндексировал поиск, если это нужно.
    Возможно, диапазон таблиц стоит расширить до b_iblock_* , b_catalog_*
    Ответ написан
    Комментировать
  • Алгоритмы и структуры данных?

    поскольку f(n) асимптотически неотрицательна, то есть хотя бы иногда образается в ноль, то g(n) не может быть асимптотически положительной, так как ей необходимо ограничивать f(n) снизу: c*g(n) ≤ f(n).
    Для примера можно взять функцию sin(x)+1
    Ответ написан
    Комментировать