При использовании заголовка первого уровня в Markdown (#) в теме, будет ли это результатом h1 или h2 в HTML-выводе?
Это выведет тег <h1> ![]()
Так значит, Discourse считает, что на странице нормально иметь несколько тегов <h1>? Казалось бы, если заголовок темы — это h1, то заголовки первого уровня внутри этой темы по умолчанию должны быть h2, верно?
Discourse не делает никаких предположений — он выводит именно то, что вы от него запросили.
Более правильным подходом является использование ### для заголовков первого уровня внутри сообщения, а не ## ![]()
редактирование: см. Use of H1 vs. H2 headings in composer - #16 by Canapin
Это, безусловно, тот случай «обучения пользователей», который, как мне кажется, можно было бы избежать, если бы # не соответствовал заголовку первого уровня… ![]()
Вы знаете, есть ли способ это изменить? Или хотя бы скрыть заголовки первого уровня в панели инструментов? (Предполагаю, что люди, пишущие напрямую в Markdown, — это реалистичная целевая аудитория для обучения…)
Да, это довольно просто. Элемент списка имеет атрибут data-name="heading-1", который можно использовать в CSS ![]()
Хе-хе — я как раз тоже этим занимался. В быстрой проверке это скрывает опцию H1 как в редакторе Markdown, так и в редакторе с форматированием:
button[data-name="heading-1"] {
display: none;
}
(Возможно, я просто оставлю это! Не вижу особого смысла предлагать H1 в редакторе.)
Я понимаю вашу точку зрения, но это не решение, которое Discourse принял в ту или иную сторону. Discourse следует спецификации CommonMark — это стандарт разметки Markdown, который предписывает преобразовывать символ # в тег H1. На мой взгляд, эта практика преобразования заголовков Markdown в HTML-теги является общепринятой в рамках основных спецификаций Markdown.
Ну, два заголовка <h1> на самом деле не такая уж большая проблема. Это очень старый SEO-мем, который уже давно не является актуальным вопросом. Google и другие поисковики используют первый заголовок или любой другой, который сочтут наиболее подходящим.
Мы можем обсудить, является ли наличие двух основных заголовков самым разумным решением с точки зрения контента, но когда платформа использует разные стили для названия темы и заголовков в сообщениях, это не имеет особого значения.
Тем не менее, в сообщениях более уместно использовать ##/<h2>. Но поскольку это не играет никакой реальной роли, я считаю, что лучше, чтобы пользователи использовали какие-то заголовки, чтобы избежать их, опасаясь использовать «неправильные» заголовки ![]()
Headings may only be a small signal for SEO today – but I still dislike multiple H1s because I’m a nerd. ![]()
I’m also thinking about how Steph is creating printable documentation for Page Publishing, where H1s in the post are rendering even larger than the page top H1:
Making those H2 would keep them slightly smaller than the top H1:
Да, это и есть проблема. Для меня естественно использовать заголовок первого уровня в первую очередь, но если тема не стилизована с учётом такого предположения, получается беспорядок. Здесь возникает своего рода разрыв.
(Кстати: документ отображается у тебя на английском языке без твоего вмешательства?!)
That’s natural, yes, and it makes sense when you’re building a web page from scratch. But a CMS or publishing system almost always gets the page’s H1 from a title field, so you’d typically reach for H2 for the content sections.
(And I used the web browser’s translation tool to get English.)
I agree. But we shouldn’t expect community members to have to know that, imho
Да — и я не вижу никаких недостатков в том, чтобы просто скрыть опцию H1.
Хотя я не замечаю, чтобы большинство пользователей, создающих типичные посты, часто использовали заголовки. Участники, создающие более длинные темы с документацией, вероятно, уже имеют (или быстро приобретут) немного больше опыта работы с ## и значком «TT».
Кстати: я только что обратил внимание на эту интересную старую дискуссию, где предлагается использовать заголовки только в темах и запретить их в ответах: Отключить заголовки в ответах, такие как h1 и h2
Если это интересно кому-то, вот небольшой фрагмент кода, который полностью скрывает иконку заголовка “TT” в редакторе только при ответе:
.composer-action-reply button.heading {
display: none;
}
Заголовки нужны не только для SEO, но и для доступности.
Скринридеры могут перемещаться от одного заголовка к другому, а глубину заголовка можно задавать с помощью сочетаний клавиш.
У тем есть свои заголовки <h1>, но к каждому ответу автоматически добавляется свой скрытый <h2>, который виден скринридерам:
<h2 aria-hidden="false" class="sr-only" id="post-heading-9">
post by Jagster 4 hours ago
</h2>
Таким образом, в любом случае, когда вы размещаете в своём контенте заголовок <h1> или <h2>, он всегда будет потомком уже существующего <h2> ![]()
По-моему, использование в посте заголовков выше уровня <h3> может сделать навигацию через скринридер немного странной.
Хотя в существующих темах это не всегда последовательно, шаблон поста из Customization > Plugin использует <h3> в качестве верхних заголовков:
| | | |
| - | - | - |
| :information_source: | **Summary** | In a few words, what does this plugin do? |
| :hammer_and_wrench: | **Repository Link** | <> |
| :open_book: | **Install Guide** | [How to install plugins in Discourse](https://meta.discourse.org/t/install-plugins-in-discourse/19157) |
<br>
### Features
Describe the major features of the plugin
### Configuration
Include detailed steps on how to configure the plugin (include screenshots where necessary)
### Settings
Include a table of settings and setting descriptions
| Name | Description
|-|-|
|
Интересно, что для шаблонов Customization > Theme и Customization > Theme component это не так, но в их шаблонах вообще нет заголовков. Возможно, это стоит исправить.
Согласен. Я тоже немного ботаник и люблю, чтобы иерархия заголовков была чистой.
Так что на самом деле в посте мы должны использовать только h3, h4, h5, если хотим всё сделать правильно. Было бы интересно создать какой-то компонент темы, который это «исправит»: это означало бы удаление уровней заголовков выше из кнопок и «перевод» стилей для h3 и ниже в темах, чтобы они выглядели корректно при использовании…?
Также есть h6, если вам нужен ещё один уровень в постах, но он очень маленький
H5 тоже меньше обычного текста в посте, поэтому я не уверен, что стал бы его использовать
это h5
А, я этого не знал! Вероятно, это объясняет комментарий Паффмана о том, что «заголовок первого уровня в сообщении должен быть h3» [1]
Тогда CSS-хак будет выглядеть так:
button[data-name="heading-1"], button[data-name="heading-2"] {
display: none;
}
Спасибо за внимание к доступности — я стараюсь учитывать это в своей работе.


