TextformatterRockHeadlineIDs by bernhard

TextformatterRockHeadlineIDs

Textformatter that applies id attributes to all headlines (h1-h6) in the markup field.

// input
<h1>This is my headline</h1>
// output
<h1 id='this-is-my-headline'>This is my headline</h1>

What if an id already exists?


If an id already exists in the input it will leave this id as is:

// input
<h1 id='foo'>foo</h1>
<h2>bar</h2>
// output
<h1 id='foo'>foo</h1>
<h2 id='bar'>bar</h2>

What if an id is used twice?


It will automatically apply dashes until the id is unique:

// input
<h1>foo</h1>
<h2>foo</h2>
<h3>foo</h3>
// output
<h1 id='foo'>foo</h1>
<h2 id='foo-'>foo</h2>
<h3 id='foo--'>foo</h3>

What about special characters?


Special characters will be sanitized according to your transliterate settings:

// input
<h1>Sehr schön</h1>
// output
<h1 id='sehr-schoen'>Sehr schön</h1>

Customize


You can customize the generated ID via hooking into getID:

$wire->addHookAfter("TextformatterRockHeadlineIDs::getID", function($event) {
  $event->return .= "-hooked";
});
// input
<h1>foo</h1>
// output
<h1 id='foo-hooked'>foo</h1>

Debugging


You can use tracy to debug this formatter:

img

Install and use modules at your own risk. Always have a site and database backup before installing new modules.

Latest news

  • ProcessWire Weekly #558
    In the 558th issue of ProcessWire Weekly we'll check out the blog post that introduces ProcessWire 3.0.244, share some recent ProcessWire highlights, and more. Read on!
    Weekly.pw / 18 January 2025
  • ProcessWire 3.0.244 new main/master version
    ProcessWire 3.0.244 is our newest main/master/stable version. It's been more than a year in the making and is packed with tons of new features, issue fixes, optimizations and more. This post covers all the details.
    Blog / 18 January 2025
  • Subscribe to weekly ProcessWire news

“I am currently managing a ProcessWire site with 2 million+ pages. It’s admirably fast, and much, much faster than any other CMS we tested.” —Nickie, Web developer