soerenmeier / meierlabs-table
A Craft CMS table field with CKEditor columns.
Package info
github.com/soerenmeier/craft-meierlabs-table
Type:craft-plugin
pkg:composer/soerenmeier/meierlabs-table
v0.1.0-alpha.0
2026-11-03 15:38 UTC
Requires
- php: >=8.2
- craftcms/ckeditor: ^5.0.0
- craftcms/cms: ^5.0.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-11-03 17:13:12 UTC
README
Overview
A Rich Table field: Craft's Table field with an additional column type Rich text, edited with CKEditor.
- Each rich text column uses the toolbar and config of a CKEditor field you select in the column settings (column "Editor"), or by default bold, italic and links (to entries, assets or URLs, with "Open in new tab?").
- Cells are purified like the CKEditor field does it and stored as HTML in the same format as a Table field, so an existing Table field can be switched to Rich Table (and back) without losing data.
- Works inside Matrix entries. Static rows, min/max rows and default values come from the Table field.
- Nested entries (
createEntry) are removed from the cell toolbar, and plugins that extend every CKEditor input don't show up in cells.
Templates and GraphQL
A rich text cell returns its HTML, with reference tags (links to entries and assets) parsed into URLs:
{% for row in entry.priceTable %}
<td>{{ row.service }}</td>
<td>{{ row.description }}</td>
{% endfor %}
{
entry(slug: "example") {
... on page_Entry {
priceTable {
service
description # "<p>With <strong>bold</strong> text</p>"
}
}
}
}
In PHP the cell is the CKEditor field's value (craft\htmlfield\HtmlFieldData),
so getRawContent(), getPlainText() and getMarkdown() work too.
Requirements
Craft CMS 5 and CKEditor 5.
Installation
composer require soerenmeier/meierlabs-table:^0.1@alpha -w && php craft plugin/install meierlabs-table