netgen/layouts-ezplatform-tags-query
Netgen Layouts eZ Platform Tags Query adds a custom query type for Netgen Layouts that lets you filter and display eZ Platform content by tags, making tag-based content listings easy to configure in your layouts.
Architecture fit. This is a narrow-purpose Symfony bundle that plugs a custom query type into the Netgen Layouts query registry. It sits at the intersection of three components: Netgen Layouts (the layout/block engine), eZ Platform / Ibexa (the CMS), and Netgen Tags (a taxonomy bundle layered on top of eZ content). The package itself is a thin adapter — its job is to translate "tags selected in a Layouts block" into an eZ content query. Architecturally this is a natural extension-point fit: Layouts was designed around pluggable query types, so the package does not fight the framework. The coupling is the concern: it assumes a specific eZ Platform generation, a specific Netgen Tags schema, and a specific Layouts query API. Any of those moving independently breaks it.
Integration feasibility. Low-to-moderate effort if the stack precondition holds: eZ Platform (legacy 2.x/3.x era, pre-Ibexa 4 rebrand), Netgen Layouts already in production, and Netgen Tags already modeling the content taxonomy. In that scenario it is a Composer require plus bundle registration plus query configuration — days, not weeks. If any of those three are absent, the cost of adoption balloons because you are effectively adopting three interdependent packages to use one.
Technical risk. The dominant risks are lifecycle and license, not code complexity:
ezplatform naming and namespace convention predate the Ibexa rebrand. Ibexa 4+ changed content API surfaces and bundle naming; compatibility with modern Ibexa is unverified and likely non-trivial.Key questions. (1) What eZ Platform / Ibexa version is actually targeted, and is it still supported upstream? (2) Which Netgen Layouts and Netgen Tags versions does the composer constraint allow? (3) Is GPL-2.0 acceptable to legal for our distribution model? (4) Do we already run Netgen Tags — if not, we are adopting a taxonomy layer just to get a query type, which inverts the value proposition. (5) Who forks it if it breaks — is Netgen's commercial support umbrella covering this, or is it community-only?
Stack fit. Only fits a stack that is already all-in on the Netgen ecosystem: eZ Platform 2.x/3.x + Netgen Layouts + Netgen Tags. It is not a general-purpose tagging query — it is a glue package for one specific combination. Confirm the existing stack before scoping any work; if we are on Ibexa 4+, treat this as a candidate for replacement rather than integration.
Migration path. There is no meaningful migration path into this package — you either already have the three prerequisites or you don't. The real migration question is the reverse: what happens when we move off legacy eZ to Ibexa. Plan now for an exit — the tag→content query logic is a few hundred lines at most and can be reimplemented as a native Ibexa query type against the modern content repository if this package is not carried forward. Fork it under an internal namespace if needed; GPL-2.0 permits that but the derivative stays GPL, which may be worse than a clean reimplementation.
Compatibility. Pin aggressively. Lock the package, Netgen Layouts, Netgen Tags, and eZ Platform versions together in composer.json and treat any version bump across that set as a coordinated upgrade. Verify on a staging clone before touching production, specifically exercising: (a) a Layouts block bound to a tag query, (b) tag add/remove/rename propagation, (c) empty and multi-tag query edge cases.
Sequencing.
Maintenance. Low day-to-day burden — the surface area is small and it rarely needs changes if the stack is frozen. The burden is strategic: no upstream activity means no security patches, no PHP version compatibility updates, and no fixes for upstream API drift. Budget for an internal owner and periodic fork-and-patch work. Treat it as vendored logic, not a maintained dependency.
Support. Community-only in practice. Netgen provides commercial support for the broader Layouts product, but a 6-star, 0-dependent add-on is unlikely to sit inside a paid support envelope unless explicitly contracted. Escalation path is GitHub issues against a low-traffic repo — unresponsive by default. Mitigate by keeping an internal engineer who can read the source; it is small enough to fully understand.
Scaling. Query performance is inherited from Netgen Tags' storage and the underlying eZ content query, not from this package. Watch for tag sets with high cardinality and blocks that query on every page render — caching at the Layouts block level is essential. The package adds negligible overhead itself.
Failure modes. (1) Upstream upgrade (eZ→Ibexa, Layouts major bump, Tags schema change) silently breaks the query type — symptom is empty or stale blocks, which is easy to miss. (2) Tag rename/delete leaves orphaned queries returning nothing. (3) Composer resolution failure when transitive constraints conflict, blocking unrelated dependency updates. (4) GPL contamination surprise if code is later extracted into a proprietary module. Each has a cheap mitigation: an integration test asserting block output, tag lifecycle checks, a pinned lockfile, and an up-front license ruling.
Ramp-up. Moderate for a small package because it requires literacy in three systems: the Layouts query plugin contract, the Netgen Tags data model, and the eZ content repository API. An engineer strong in Symfony and one of the three can onboard in roughly a week; someone new to all three needs two to three. Given the low adoption, expect no tutorials, no Stack Overflow answers, and no examples beyond the README — plan for source-reading as the primary learning mode, and capture that knowledge in an internal runbook so it is not single-person.
How can I help you explore Laravel packages today?