PHPackages                             lornequinn/blog-markdown - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Templating &amp; Views](/categories/templating)
4. /
5. lornequinn/blog-markdown

ActiveLibrary[Templating &amp; Views](/categories/templating)

lornequinn/blog-markdown
========================

Markdown body renderer for the LQ blog suite — CommonMark-backed pre-pass on the body pipeline.

04PHP

Since May 18Pushed 3w agoCompare

[ Source](https://github.com/lornequinn/blog-markdown)[ Packagist](https://packagist.org/packages/lornequinn/blog-markdown)[ RSS](/packages/lornequinn-blog-markdown/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

lornequinn/blog-markdown
========================

[](#lornequinnblog-markdown)

Markdown body renderer for the [LQ blog suite](https://github.com/lornequinn/blog). CommonMark-backed pass on the body pipeline — turns markdown into HTML *after* `lornequinn/blog-core`'s `ShortcodeParser` resolves `[[…]]` tokens, with `html_input='allow'` so resolved HTML survives.

Installation
------------

[](#installation)

```
composer require lornequinn/blog-markdown
```

The service provider auto-registers via Laravel package discovery. No publishing required.

What it does
------------

[](#what-it-does)

When installed alongside `lornequinn/blog-core`, posts whose `body` contains markdown render at `GET /posts/{slug}` with markdown converted to HTML. The pipeline order is:

```
raw body
  → blog-core      (shortcode parser: [[name attr=value]] → Component HTML)   priority 0
  → blog-markdown  (markdown → HTML via League/CommonMark, html_input=allow)  priority 100
  → output HTML

```

**Shortcode first, markdown second.** This is opposite to the natural "render markdown then resolve shortcodes" reading because CommonMark HTML-escapes `"` to `&quot;` in any text — which would break the shortcode parser's regex on quoted attribute values. Running shortcodes against the raw body and then letting markdown pass the resolved HTML through (`html_input='allow'`) avoids the entity-escape dance and produces cleaner output for block-level Components.

If you drop `blog-markdown`, raw HTML in `body` still renders fine via `blog-core` alone, and shortcodes still work.

Markdown flavour
----------------

[](#markdown-flavour)

Default CommonMark — headings, paragraphs, lists, code blocks, inline code, links, images, blockquotes, emphasis, strong. No GFM tables or task lists by default (add them via the markdown package config in a future release if needed).

The CommonMark converter ships with:

- `html_input` = `'allow'` — lets shortcode-resolved HTML pass through
- `allow_unsafe_links` = `false` — blocks `javascript:` and `data:` URLs

Pipeline priority
-----------------

[](#pipeline-priority)

`BlogMarkdownServiceProvider::PIPELINE_PRIORITY` is `100`. Insert custom passes between shortcode (priority 0) and markdown (priority 100) with any value in that range. Insert post-markdown passes with anything &gt; 100.

Requirements
------------

[](#requirements)

- PHP 8.3 or 8.4
- Laravel 12.x or 13.x
- `lornequinn/blog-core ^0.1`
- `league/commonmark ^2.0`

Licence
-------

[](#licence)

MIT.

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance62

Regular maintenance activity

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/265405724?v=4)[lornequinn](/maintainers/lornequinn)[@lornequinn](https://github.com/lornequinn)

---

Top Contributors

[![lornequinn](https://avatars.githubusercontent.com/u/265405724?v=4)](https://github.com/lornequinn "lornequinn (2 commits)")

### Embed Badge

![Health badge](/badges/lornequinn-blog-markdown/health.svg)

```
[![Health](https://phpackages.com/badges/lornequinn-blog-markdown/health.svg)](https://phpackages.com/packages/lornequinn-blog-markdown)
```

###  Alternatives

[limenius/react-bundle

Client and Server-side react rendering in a Symfony Bundle

3861.2M](/packages/limenius-react-bundle)[wmde/php-vuejs-templating

PHP implementation of Vue.js templating engine

3041.6k2](/packages/wmde-php-vuejs-templating)[jelix/wikirenderer

WikiRenderer is a library to generate HTML or anything else from wiki content.

1712.2k1](/packages/jelix-wikirenderer)[webkinder/sproutset

A Composer package for handling responsive images in Roots Bedrock + Sage + Blade projects.

291.8k](/packages/webkinder-sproutset)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
