# Ich habe ein Bookmarklet erstellt, um die Inhaltsübersicht für Forum-Posts zu erstellen

**URL:** <https://meta.discourse.org/t/i-created-a-bookmarklet-to-create-the-table-of-content-for-forum-posts/270961>\
**Category:** Development\
**Created:** [8. Juli 2023 um 02:33 UTC](https://meta.discourse.org/t/i-created-a-bookmarklet-to-create-the-table-of-content-for-forum-posts/270961 "2023-07-08T02:33:56Z")\
**Posts on this page:** 1\
**Showing post:** 9

<div class="post-metadata">

**Author:** ![ShunS](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/shuns/32/314884_2.png) [@ShunS](https://meta.discourse.org/u/ShunS)\
**Post date:** [9. Juli 2023 um 23:12 UTC](https://meta.discourse.org/t/i-created-a-bookmarklet-to-create-the-table-of-content-for-forum-posts/270961/9 "2023-07-09T23:12:21Z")

</div>

Hallo @RBoy, danke für das Feedback und den Vorschlag!

Ein Editor-Plugin wäre großartig, aber es wäre viel Aufwand, den [Quellcode von Discourse](https://github.com/discourse/discourse) zu lesen, um die Logik der Emoji-Verarbeitung und der Definition des Überschriften-/Ankertextes zu verstehen und ein Repository für das Plugin zu erstellen.

Ein (scheinbar) einfaches Plugin wie [Spoiler Alert](https://github.com/discourse/discourse-spoiler-alert) ist ein großes Repository und ich habe nicht die Bandbreite, um mich voll und ganz der Entwicklung zu widmen. Daher hoffe ich, dass Discourse Feature-Anfragen wie [Automatic Table of Contents generation](https://meta.discourse.org/t/automatic-table-of-contents-generation/79626) priorisiert und in der Zwischenzeit eine native Funktion entwickelt 🙏

* * *

Unten ist die Version mit den Aufzählungspunkten. Die Abstände zwischen `<ul>` und `</ul>` sind eher zu groß, daher habe ich die ursprüngliche, nicht mit Aufzählungspunkten versehene Version bevorzugt.

Screenshot:

 ![Screenshot 2023-07-10 at 7.49.59](https://global.discourse-cdn.com/meta/original/4X/9/8/d/98df68e330fcd3cca5c34ea0c53a40ebc16e1064.png)

Code:

```plaintext
javascript:(function() {
	const copyForumTocToClipboard = function() {
		const urlMatch = window.location.href.match(/\/t\/[^/]*\/\d+\/?(\d*)/);
		if (!urlMatch) return;

		const postIndex = 1;
		const anchors = document.querySelectorAll('#post_' + postIndex + ' div.cooked h6 a.anchor,h5 a.anchor,h4 a.anchor,h3 a.anchor,h2 a.anchor,h1 a.anchor');

		let toc = '';
		let currentLevel = 1;
		anchors.forEach(anchor => {
			newLevel = anchor.parentNode.nodeName[1];
			levelChange = newLevel - currentLevel;
			toc +=
				((levelChange >= 0) ? '<ul>'.repeat(levelChange) : '</ul>'.repeat(levelChange * -1)) +
				`<li><a href="${anchor.href}">${anchor.parentNode.textContent}</a></li>`;
			currentLevel = newLevel;
		});
		if (newLevel > 1) toc += '</ul>'.repeat(newLevel - 1);
		toc = '<details open><summary>Table of contents: </summary><ul>\n' + toc + '</ul></details>';

		navigator.clipboard.writeText(toc);
	};

	copyForumTocToClipboard();
})();

```

---

_[View the full topic](https://meta.discourse.org/t/i-created-a-bookmarklet-to-create-the-table-of-content-for-forum-posts/270961)._
