DiscoTOC - automatic table of contents

Я использую DiscoTOC уже давно, и до недавнего обновления он отлично работал с заголовками на китайском языке.

Если в посте есть несколько заголовков на китайском языке (без символов ASCII), то при клике на элемент навигации в правой части страницы переход осуществляется только к первому заголовку одного уровня. Я полагаю, что проблема в том, что DiscoTOC генерирует элементы навигации с одинаковыми идентификаторами (поскольку все заголовки на китайском языке). Следовательно, селектор запросов находит только первый заголовок.

В качестве эксперимента я сделал форк репозитория GitHub и добавил небольшой коммит:

Похоже, это работает на моём сайте. Если команде это решение подойдёт, я могу создать pull request, либо эту ошибку нужно исправить другим способом.

8 лайков

Спасибо @topological :slight_smile: Я перенёс ваш отчёт об ошибке в саму тему DisoTOC, чтобы, надеюсь, она оказалась перед нужными людьми. :+1:

4 лайка

Спасибо за отчет и pull-запрос. Как отмечено в pull-запросе, я реализовал другое решение, которое не зависит от наличия якорей в заголовках.

(Хотя я с радостью приму переводы из вашего pull-запроса.)

4 лайка

Прежде всего, это очень полезный компонент темы для длинных постов!

Однако есть проблема с этим компонентом темы на мобильных устройствах (по крайней мере, на iOS). Когда я открываю большое оглавление, прокрутка по оглавлению не работает на мобильных устройствах так, как на компьютере.


Список содержит заголовки A–H, но я не могу прокрутить его

Кажется, что список прокручивается, но событие touchstart препятствует прокрутке списка. Отключение слушателя события touchstart для элемента d-toc, похоже, решает проблему.


Я не могу увидеть версию компонента темы, которая используется на нашем форуме, и не могу протестировать это на локальной установке (так как я не могу загрузить её на телефон). Поэтому, если есть исправление, о котором я не знаю, или если есть что-то, что мне следует сделать, пожалуйста, дайте мне знать.

Заранее спасибо :slight_smile:

3 лайка

Спасибо за отчет, скриншоты особенно помогли в поиске проблемы. Это ошибка, исходящая из ядра: один из родительских элементов мобильного интерфейса DiscoTOC отключает прокрутку своих дочерних элементов, что затронуло DiscoTOC. Исправление должно быть внесено через FIX: Limit pan event handler to fix scrolling in TOC by pmusaraj · Pull Request #16673 · discourse/discourse · GitHub (скорее всего, оно будет объединено на следующей неделе).

4 лайка

Это всё ещё работает?

@pmusaraj, возможно, я что-то настроил неправильно, но я установил тему, и оглавление, которое я настроил для темы, не отображается на версии discourse-docs, хотя в основной теме оно появляется.

3 лайка

Хм, согласен, оглавление снова не отображается на страницах discourse-docs. Например:

https://meta.discourse.org/docs?ascending=false&category=53&tags=themes&topic=91966

4 лайка

Исправление проблемы с прокруткой на мобильных устройствах теперь включено в основную ветку. Я также добавил исправление совместимости для представления Docs в Discourse; вы можете увидеть его в действии здесь на meta.

6 лайков

Если вы предпочитаете, чтобы оглавление всегда было полностью раскрыто, добавьте этот CSS в вашу тему

#d-toc li.d-toc-item > ul {
  max-height: 500em !important;
  overflow: visible !important;
  opacity: 1 !important;
}
5 лайков

Можно подтвердить, что это тоже исправлено :+1:

3 лайка

5 сообщений были перенесены в новую тему: При наличии оглавления я теряю доступ к ключу темы?

В следующий раз, когда вы обновите DiscoTOC, вы, скорее всего, заметите, что мы добавили кнопку для переключения между временной шкалой темы и оглавлением… сообщите нам, если вы столкнётесь с какими-либо проблемами или у вас есть отзывы об этой новой функции!

11 лайков

Мне это нравится! :heart_eyes_cat:

Мне пришлось просто обновить браузер, чтобы увидеть это в этой теме, потому что это так блестяще и ново! :sparkling_heart:

5 лайков

Я только что внес небольшое обновление в эту тему, которое игнорирует требование к уровню доверия для учётных записей сотрудников; это больше соответствует тому, как работают настройки в Discourse.

6 лайков

Этот компонент отлично работает для первого поста, спасибо за него…

Интересно, возможно ли сделать авто-оглавление также для постов ниже? Это кажется распространённым случаем, когда пытаешься документировать что-то в одном посте с комментариями ниже…

Например, при просмотре основного поста или ответов ниже, если в посте/ответе определены заголовки/подзаголовки, автоматически показывается его оглавление, иначе — стандартная временная шкала.

Я не читал эту длинную ветку, сделал быстрый поиск, похоже, это не обсуждалось…

спасибо…

2 лайка
4 лайка

ещё один вопрос

Не знаю почему, но я не вижу кнопку переключения между контентом и оглавлением.
То же самое происходит с официальным disco-toc и форком от @Moin
Есть ли для этого какая-то настройка? Похоже, что нет… хм…
Моя система работает на Discourse 3.2.1

Кто-нибудь может подсказать? Спасибо…

1 лайк

Вам необходимо обновить Discourse, так как для этой функции требуются обновления платформы.

3 лайка

хм, кажется, 3.2.1 — это текущий релиз, верно?

обновиться до бета-версии?

3 лайка

Да, основные версии выпускаются гораздо реже, поэтому в противном случае вам, возможно, придётся ждать новые функции и обновления безопасности месяцами. По умолчанию мы рекомендуем всегда использовать наши бета-версии. Подробнее здесь: Understanding Discourse release channels

7 лайков