Привет.
Я покажу вам это на изображениях.
Я получал эту ошибку до последнего обновления.
После установки обновления ошибка продолжает появляться.
(Гüncel - Текущий)
Я удалил весь код с сайта и попробовал снова, но ошибка всё ещё появляется.
Перевод
Ошибка
Что-то пошло не так.
Это происходит и в безопасном режиме? Проверьте также консоль браузера на наличие ошибок при нажатии, а также посмотрите в /logs, чтобы узнать, есть ли там дополнительные сведения.
Безопасный режим активен, и на странице журналов ошибок не видно. Возможно, я что-то не понимаю.
Последние записи журналов.
Я попытался отключить безопасный режим. Ошибка всё равно появляется.
Кстати, при повторном нажатии на неё ошибка исчезает, и отображается главная страница.
При загрузке компонентов темы и выгрузке плагинов я вижу некоторые ошибки.
Возможно, стоит проверить ваши недавние кастомизации.
Есть ли у вас какие-либо пользовательские настройки JS вне удалённых компонентов?
Я бы попробовал отключить все компоненты и включать их по одному, пока не появится ошибка.
<script>
function moveTagsToTitle() {
const mainLinks = document.querySelectorAll('.main-link');
mainLinks.forEach(mainLink => {
const discourseTags = mainLink.querySelector('.discourse-tags');
const titleElement = mainLink.querySelector('.title');
if (discourseTags && titleElement) {
const tags = discourseTags.querySelectorAll('.discourse-tag');
tags.forEach(tag => {
const tagSpan = document.createElement('span');
tagSpan.className = 'discourse-tag box';
tagSpan.textContent = tag.textContent;
tagSpan.style.fontSize = 'var(--font-down-2)';
tagSpan.style.borderRadius = '10px';
tagSpan.style.border = '1px solid #444460';
tagSpan.style.backgroundColor = '#1f1f33';
tagSpan.style.margin = '2px';
tagSpan.style.display = 'inline-block';
tagSpan.style.overflow = 'hidden';
tagSpan.style.whiteSpace = 'nowrap';
tagSpan.style.textOverflow = 'ellipsis';
tagSpan.style.verticalAlign = 'middle';
tagSpan.style.marginRight = '5px';
tagSpan.style.marginLeft = '-6px';
titleElement.insertBefore(tagSpan, titleElement.firstChild);
});
if (discourseTags.parentNode) {
discourseTags.parentNode.removeChild(discourseTags);
}
}
});
const topicHeaderExtras = document.querySelectorAll('.topic-header-extra');
topicHeaderExtras.forEach(topicHeaderExtra => {
const discourseTags = topicHeaderExtra.querySelector('.discourse-tags');
const tags = discourseTags.querySelectorAll('.discourse-tag');
tags.forEach(tag => {
tag.className = 'discourse-tag box';
tag.style.borderRadius = '10px';
tag.style.border = '1px solid #444460';
tag.style.backgroundColor = '#1f1f33';
tag.style.margin = '1px';
tag.style.padding = '2px 8px';
tag.style.display = 'inline-block';
tag.style.overflow = 'hidden';
tag.style.whiteSpace = 'nowrap';
tag.style.textOverflow = 'ellipsis';
tag.style.verticalAlign = 'middle';
tag.style.marginRight = '5px';
tag.style.marginBottom = '5px';
});
});
}
window.addEventListener('load', moveTagsToTitle);
const observer = new MutationObserver(moveTagsToTitle);
const targetNode = document.body;
const observerOptions = {
childList: true,
subtree: true
};
observer.observe(targetNode, observerOptions);
</script>
Этот код вызывает ошибку.
Не знаю, как её исправить.
Мне нужен этот код
Вы перемещаете элементы, содержащие компоненты Ember.js (вот список тегов), что, по-видимому, нарушает жизненный цикл компонента.
В вашем случае лучше всего использовать API.
У вас есть два варианта:
Использование плагинов-выходов (plugin outlets), как я показывал в вашей предыдущей теме . Однако, поскольку для последних тем на странице категории они не предусмотрены, вам потребуется запросить их добавление.
Переопределение шаблона . Это не лучшее решение с точки зрения совместимости, но может служить временной альтернативой.
Я нашел эти коды.
Это не то, что я хотел, но пока сойдет.
var pElement = document.getElementById('site-logo').parentNode;
//var pElement = document.createElement('a');
//pElement.innerHTML = aElement.innerHTML;
//aElement.replaceWith(pElement);
pElement.href = '#';
pElement.style.cursor = 'pointer';
pElement.onclick = function() {
window.location.href = '/';
};
//document.getElementById('site-logo').parentNode.href = '/';
Если кто-то сможет помочь, я жду. Спасибо
Настоятельно рекомендую не идти этим путём. Это всё равно что наклеить пластырь на побочный эффект, вместо того чтобы устранить коренную причину проблемы. Это создаст ещё больше трудностей (как в вашем последнем теме , возникшей из-за вышеуказанного кода).
Вы можете сделать свой JS чуть более совместимым с Discourse (лучший способ — всё же использовать plugin outlet, когда это возможно ).
Вот пример. Он использует API при смене страницы, запускает код на конкретном маршруте и копирует HTML перед ссылкой (чтобы вы могли кликнуть по тегу):
JS
<script type="text/discourse-plugin" version="0.8">
const { next } = require("@ember/runloop");
function moveTags() {
const mainLinks = document.querySelectorAll(".main-link:not(.tags-moved)");
mainLinks.forEach((mainLink) => {
const discourseTags = mainLink.querySelector(".discourse-tags");
const titleElement = mainLink.querySelector("a[data-topic-id]");
if (discourseTags && titleElement) {
titleElement.insertAdjacentHTML("beforebegin", discourseTags.outerHTML);
mainLink.classList.add('tags-moved');
}
});
}
api.registerModelTransformer("topic", async (topics) => {
next(() => {
moveTags();
})
});
api.onPageChange((url) => {
if (url.startsWith("/categories")) {
moveTags();
}
});
</script>
CSS
.top-row,
.link-top-line {
.discourse-tag {
font-size: var(--font-down-2) !important;
padding: 2px 8px;
margin: 2px 5px 2px -6px;
border-radius: 10px;
border: 1px solid #444460;
background-color: #1f1f33;
}
.discourse-tag::after {
content: '' !important;
margin-left: 0 !important;
}
}
.bottom-row,
.link-bottom-line {
.discourse-tags {
display: none;
}
}
Привет, @Arkshine
Изменение ссылки на логотип не помогло, я удалил этот код.
Но другого выхода нет. Мне нужно расположить теги вот так:
https://pvpfarm.com
Если я оплачу услуги специалиста, сможет ли он написать рабочий код?
И где вы берёте этот код? (JS) Из GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. · GitHub ?
Если вам нужна или вы хотите получить платную помощь, вы можете создать тему в Marketplace .
Я привёл код для этого в #11 .
Снова здравствуйте, @Arkshine !
Я добавил коды, которые вы предоставили, после удаления этих кодов, но они не работают. Я что-то делаю неправильно?
У меня это работает:
Убедитесь, что вы оставляете <script type="text/discourse-plugin" version="0.8">, иначе это не будет работать.
Да, всё работает!
Есть только одна небольшая ошибка.
При клике на логотип количество тегов увеличивается.
Я не знаю, как вас поблагодарить. Большое спасибо!
@Arkshine Извините, что снова поднимаю эту тему.
Спасибо ещё раз. Я обнаружил ошибку в коде, который вы предоставили.
Не могли бы вы мне помочь?
Я попытался исправить код, но у меня не получилось.
В разделе «Последние» отображается только тег в теме с тегом, которая была открыта последней.
А при входе в категорию теги не отображаются.
@ogulcan1787 Я обновил код выше.