• Что неправильного в моем коде?

    Как минимум, Вы не вникли в задачу. Я вот в футболе практически не разбираюсь - получив такое задание, я пошёл бы в гугл узнавать, как проводятся матчи в турнирах, когда команда играет на своём поле, а когда - нет. Даже по своим скудным знаниям могу кое-что предположить:
    1) Первый круг: команды надо разбить на пары случайным образом. Это shuffle() + array_chunk() . У Вас этого нет.
    1.1) Учесть ситуацию, когда команд - нечётное количество. Этого тоже нет.
    2) в парах какую-то команду назначить хозяином. Соответственно, в выводе в колонке "Хозяева" должно быть не повторение "Хозяева", "Хозяева", "Хозяева", а имена команд
    3) дальше надо смотреть, на каких условиях проводится второй круг, кто в него попадает, на своём поле играют или на чужом..

    Получается, из этого:
    загружать через форму файл json со списком команд, а потом сводить эти команды в турнируную таблицу с условиями (гость, хозяин), круг 1, круг 2 и еще 5-6 условий, которые влияют на список
    Вы выполнили только "загружать через форму файл json", причём зачем-то этот файл сохраняете на диск, а потом немедленно читаете обратно.

    Сергей Вам справедливо указал на "разделение обязанностей", то бишь первую букву в SOLID - Single Responsibility Principle. Даже если оставить на месте выверт с сохранением на диск, получается:
    1. Repository - хранилище данных
    2. метод контроллера, отвечающий за приём данных именно в виде сабмита формы и сохранение их Repository
    3. Генератор текущего круга
    4. View, который отвечает за генерацию html-разметки круга,
    5. метод контроллера, который может извлечь данные из Repository, скормить их генератору, получить результат и скормить его во View.


    И не факт, что методы из 2 и 5 пункта принадлежат одному классу.
    Ответ написан
    Комментировать
  • Для чего нужен wakeUp в Битрикс?

    если посмотреть код, то видно, что при wakeUp не выполняется никаких обращений к БД.
    Метод в файле bitrix/modules/main/lib/orm/objectify/entityobject.php
    смотрите разницу:
    fill*() - подгружает значение из БД
    set*() - задаёт значение свойства, но при несовпадении со старым значением переводит объект в состояние State::CHANGED
    wakeUp() -создаёт объект с указанными значениями свойств, не переводя объект в изменённое состояние, но только при условии, что в аргументе есть первичный ключ.
    Ответ написан
    Комментировать
  • Вставка изображений в png шаблон по параметрам Wordpress?

    Что-то вроде водяного знака, но только наоборот?

    Почему наоборот? Ровно так же, если я правильно Вас понял.
    Для водяного знака:
    1) берётся исходное изображение,
    2) берётся изображение с водяным знаком,
    3) второе накладывается поверх первого,
    4) результат сохраняется

    В вашем случае:
    0) пользователи отсылают форму с файлом фотографии и какими-то текстовыми полями (например, ФИО)
    1) берётся изображение-шаблон пустого бейджа,
    2) берётся изображение из присланной формы,
    3) второе накладывается поверх первого,
    4) также поверх пишется текст из текстовых полей,
    5) результат сохраняется.

    Это можно сделать средствами GD.
    Ответ написан
    Комментировать
  • Как настроить ошибку 404 не выводится ошибка в headers?

    Нет, достаточно допилить шаблон компонента каталога. Сейчас, полагаю, на неправильный URL открывается корень каталога? Если так, то достаточно в странице sections.php добавить свой код
    Ответ написан
  • Как почистить базу sql?

    С учётом:
    Честно, с SQL не работаю и не понимаю. Или только ждать тех.поддержку?

    ждать техподдержку - самое разумное решение. Любое вмешательство приведёт к тому, что ответственность за состояние системы полностью перейдёт на Вас. Может, там что-то уже повреждено, а Вы без понятия.
    Ответ написан
    Комментировать
  • Как убрать знак / в всех ссылках в тексте?

    <?php
    $content = preg_replace('#(href=['"][^'"]*)/(?='|")#', '$1', $content);

    Только с относительной ссылкой на главную ( href="/" ) будет проблема
    Ответ написан
    1 комментарий
  • Почему нет свойства в $arResult?

    потому что в аргументах CIBlockElement::GetList() надо указывать не 'PROPERTY_JOB_TITLE_VALUE' , а 'PROPERTY_JOB_TITLE'. А вот в результате будет 'PROPERTY_JOB_TITLE_VALUE' и ещё пачка мусора
    Ответ написан
  • Как получить название пользовательского поля Битрикс по его коду?

    Если есть id поля, то всё легко:
    <?php
    use Bitrix\Main\UserFieldTable;
    
    $id = 1;
    $res = UserFieldTable::getFieldData($id);
    print_r($res);

    Если только символьный код, то чуть сложнее:
    <?php
    use Bitrix\Main\UserFieldTable;
    $fieldName = 'UF_CRM_1728545307';
    $res = UserFieldTable::getList([
        'select' => array_merge(['*'], UserFieldTable::getLabelsSelect()),
        'filter' => [
            '=FIELD_NAME' => $fieldName,
        ],
        'limit' => 1,
        'runtime' => [
            UserFieldTable::getLabelsReference(null, 'ru'),
        ]
    ])->fetchRow();
    print_r($res);
    Ответ написан
    Комментировать
  • Как сделать так, чтобы поисковик отображал страницу поиска по сайту (ниже приведу примеры Дзена и Тиктока)?

    У меня такого не происходит:
    1. Зашёл на дзен.ру,
    2. вбил ту поисковую фразу,
    3. меня перекинуло на обычную поисковую выдачу Яндекса,
    4. где-то в выдаче была ссылка на одну страницу Дзена.

    Но вообще, как понимаю, это делается несложно:
    1. мониторите wordstat или как-то иначе собираете релевантные сайту поисковые запросы
    2. сопоставляете эти запросы со страницами сайта, сохраняете это сопоставление.
    3. при выводе страницы в форму поиска на сайте выводите сопоставленный поисковый запрос


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

    Судя по $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
    Ответ написан
  • Как вытащить данные из формы в дополнительных настройках пользовательского поля?

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

    есть 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 , в документации есть пример ).
    Необязательно делать именно так, но это самый простой и читабельный вариант.
    Ответ написан
    Комментировать