Reemake Digital Agency · Безопасная разметка

Битый JSON-LD роняет сайт: как этого избежать

Одна лишняя запятая в JSON-LD — и сайт не открывается с белым экраном. Обычные кастомные плагины падают на невалидном JSON. Разбираем, как Reemake AI Schema Manager решает эту проблему через 4 уровня защиты.

Что обычно ломается

Как битый JSON роняет сайт

Лишняя запятая

Последняя запятая перед закрывающей скобкой — самая частая ошибка. Парсер падает.

Незакрытая кавычка

Одна кавычка в строке — весь блок становится невалидным.

Кириллица без кавычек

Русские буквы в JSON должны быть в кавычках. Без них — ошибка парсинга.

Комментарии в JSON

JSON не поддерживает комментарии. Добавили // текст — блок сломан.

4 уровня защиты

Как AI Schema Manager изолирует ошибки

1. Try-catch на всём событии. Ошибка внутри onBeforeCompileHead логируется, но не пробрасывается наверх. Сайт продолжает работать.

2. Валидация JSON. Каждое правило проверяется через json_decode перед добавлением в head. Невалидные блоки просто пропускаются.

3. Логирование. Все проблемные правила записываются в /administrator/logs/reemake_ai.php. С указанием номера строки в настройках.

4. Fallback. Если правило невалидно — плагин пропускает его, но выводит остальные. Одна ошибка не блокирует весь набор.

Код

Как это выглядит в плагине

public function onBeforeCompileHead(): void
{
    try {
        $rules = $this->parseRules();
        foreach ($rules as $url => $json) {
            if (json_decode($json) === null) {
                $this->log('Broken JSON for ' . $url);
                continue;
            }
            $this->addTag($json);
        }
    } catch (\Throwable $e) {
        $this->log($e->getMessage(), 'error');
    }
}

Кейс · Симметрия

Как мебельная компания избежала падения

Ситуация: «Симметрия» — мебельная компания из Перми. Ранее разметка делалась через кастомный плагин, который добавлял JSON-LD без проверки. Однажды после правки разметки (забыли закрывающую скобку) сайт упал с белым экраном. Простой — 40 минут.

Что сделали: заменили кастомный плагин на Reemake AI Schema Manager. Все правила перенесли в одно поле. Ошибку (незакрытую скобку) оставили для теста — плагин её просто проигнорировал, в лог записал предупреждение, сайт продолжил работать.

Результат: после этого за полгода — ни одного падения по вине разметки. Редакторы спокойно правят JSON, зная, что ошибка не убьёт сайт.

Вопросы и ответы

Частые вопросы

Как узнать, что правило сломано?
В логах Joomla: /administrator/logs/reemake_ai.php. Там будет указан URL, для которого JSON невалиден, и текст ошибки парсера.

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

Можно ли увидеть ошибку в интерфейсе?
Нет, только в логах. Так пользователи не видят технических деталей, а разработчик видит полную картину.

Поможет ли это, если ошибка в самом коде плагина?
Да. Весь код обёрнут в try-catch. Любая внутренняя ошибка логируется, но не пробрасывается наверх.

Разметка роняет сайт?

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

Обсудить задачу →
8 (950) 442-49-00 reemake@inbox.ru Max Messenger Max

с 8:00 до 20:00 (МСК)

г. Пермь