XF 2.3 Проблема с отображением дополнительных полей

Версия XenForo
2.3.10

CHEL74

Проверенные
Сообщения
69
Решения
2
Реакции
21
Баллы
15
В полях используется HTML для вывода значения, чтобы поле отображалось как "код". Но почему-то в части тем форматирование слетает.

Вот пример HTML для вывода значения:
HTML:
<div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code">
    <div class="bbCodeBlock-content" dir="ltr">
        <pre class="bbCodeCode  language-cpp" dir="ltr" data-xf-init="code-block" data-lang="cpp"><code class="  language-cpp">{$value}</code></pre>
    </div>
</div>

Когда всё в порядке, отображается так:

1777794852797.png

Когда ломается - вот так:

1777794900609.png

В итоге половина тем нормальные, а половина сломаны. В чём может быть проблема?
 
Решение
В итоге половина тем нормальные, а половина сломаны. В чём может быть проблема?
Может быть в том, что помимо кода нужно подгружать и js библиотеку, которая этот код подсвечивает? Там где библиотека уже подгружена движком, там все отображается, где нет - нет. Попробуйте заодно изучить консоль браузера на предмет ошибок (если ошибки уже после подгрузки библиотеки и где-нибудь в инициализации вашего кода)
В HTML я, конечно, мало что понимаю, но по опыту в другом языке, могу сделать предположение. Инфа для полей копируется людьми из разных консолей. Может с какой-то из консолей при копировании подхватываются невидимые спецсимволы ломающие код и нужно как-то вывод экранировать или что-то в этом роде?
 
В итоге половина тем нормальные, а половина сломаны. В чём может быть проблема?
Может быть в том, что помимо кода нужно подгружать и js библиотеку, которая этот код подсвечивает? Там где библиотека уже подгружена движком, там все отображается, где нет - нет. Попробуйте заодно изучить консоль браузера на предмет ошибок (если ошибки уже после подгрузки библиотеки и где-нибудь в инициализации вашего кода)
 
Matew, попробовал сам найти, что именно надо подгружать, не понял. Также в консоли браузера ничего не понял 🥴

Суть проблемы понял, а как найти нужный js нет.
 
Последнее редактирование:
CHEL74, сравните сам код элемента, когда он "ломается". Разметка не изменяется при этом? Символы какие-то не появляются?
По поводу js зависимостей и тд. - просто откройте одну страницу с корректной, другую с некорректной, откройте консоль, network и посмотрите, насколько там все идентично.. Ну это если просто объяснять.
По поводу экранирования, вроде бы xenforo сам экранирует переменные, только если |raw не прописать ему.
 
Последнее редактирование:
По поводу js зависимостей и тд. - просто откройте одну страницу с корректной, другую с некорректной, откройте консоль, network и посмотрите, насколько там все идентично.. Ну это если просто объяснять.
lightbox-compiled.js нету в проблемной странице

Но как подключать, не понимаю пока. Попробовал в HTML для вывода значения добавить
<script src="/js/xf/lightbox-compiled.js?_v=7e05723d"></script>
Но судя по всему это не так работает) Ошибку выбило:
lightbox-compiled.js?_v=7e05723d:3 Uncaught TypeError: Cannot read properties of undefined (reading 'newHandler')
 
Если загуглить слово lightbox, то можно увидеть, что он отвечает за отображение изображений во вложениях.

Matew, попробовал сам найти, что именно надо подгружать, не понял. Также в консоли браузера ничего не понял 🥴

Суть проблемы понял, а как найти нужный js нет.
Вы перебираете bb код. Это основной пункт, по которому и нужно искать следы. Достаточно поискать в админке по разным вариациям этого ключевого слова "bb code". Открываем шаблон bb_code_tag_code, самой первой идет строка <xf:macro id="prism_macros::setup" />. Код в макросе:
HTML:
<xf:macro id="setup">
    <xf:css src="bb_code.less" />
    <xf:js prod="xf/code_block-compiled.js" dev="vendor/prism/prism.min.js, xf/code_block.js" />
</xf:macro>

Попробуйте добавить строку <xf:macro id="prism_macros::setup" /> в начало вашего кода и посмотреть, что будет. Я правда не помню, можно ли в кастомных полях использовать теги xf от движка. Если нет, то легким путем вы не пройдете
 
Попробуйте добавить строку <xf:macro id="prism_macros::setup" /> в начало вашего кода и посмотреть, что будет. Я правда не помню, можно ли в кастомных полях использовать теги xf от движка. Если нет, то легким путем вы не пройдете
Не, они не работают. Раньше пробовал. Сейчас вставил на всякий случай, не работают

А если через модификацию шаблона добавить куда-нибудь? Только для тем вопросов
 
Последнее редактирование:
Перед доп. полями можно попробовать
Сработало. В самом конце thread_view перед <xf:macro id="custom_fields_macros::custom_fields_view" добавил, теперь корректно работает. Спасибо за помощь
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу