erdnaxelaweb/ibexadesignintegration

Provide an abstraction layer for the Ibexa CMS in order to streamline the templates development workflow.

Maintainers

👁 florianalexandre

Package info

github.com/erdnaxelaweb/ibexadesignintegration

Type:symfony-bundle

pkg:composer/erdnaxelaweb/ibexadesignintegration

Statistics

Installs: 19 104

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v2.0.2 2026-06-16 09:28 UTC

Requires (Dev)

Provides

None

Conflicts

None

Replaces

None

MIT c6fcc5278728d8a4bc8b238fa04b0f36a40972aa

  • Florian ALEXANDRE

templatingsymfonytwigintegrationibexa


README

This bundle extends erdnaxelaweb/staticfakedesign to provide an abstraction layer for the Ibexa CMS in order to streamline the templates development workflow.

It serves as a bridge between static design development and the Ibexa CMS by:

  1. Providing a consistent definition model for content types, taxonomy entries, and landing page blocks
  2. Managing transformations between Ibexa's native objects and template-friendly representations
  3. Enabling developers to build and test templates before the CMS integration
  4. Offering a smooth transition from static design to dynamic CMS implementation

Table of Contents

Installation

  1. Add the bundle to your project via Composer:
composer require erdnaxelaweb/ibexadesignintegration
  1. Register the bundle in your config/bundles.php:
return [
 // ...
 ErdnaxelaWeb\IbexaDesignIntegrationBundle\IbexaDesignIntegrationBundle::class => ['all' => true],
 // ...
 Ibexa\Bundle\Core\IbexaCoreBundle::class => ['all' => true],
];

/!\ Be sure to load before the IbexaCoreBundle

  1. Add routes
showroom:
 resource: "@StaticFakeDesignBundle/Resources/config/routing/showroom.yaml"
 defaults:
 siteaccess_group_whitelist: 'static_group'

ibexa_design_integration:
 resource: "@IbexaDesignIntegrationBundle/Resources/config/routing/routes.yaml"

Features

  • Value Transformers: Specialized services for transforming Ibexa CMS objects (content, fields, blocks) into template-friendly objects
  • Content Abstraction: Consistent interfaces for accessing content data regardless of the underlying implementation
  • Block Management: Enhanced landing page block integration with attribute transformation
  • Taxonomy Integration: Support for Ibexa Taxonomy with transformation capabilities
  • Pagination System: Flexible pager builder with search type system for creating paginated listings
  • Performance Optimization: Lazy-loading mechanisms for improved template rendering performance
  • HTTP Cache Integration: Automatic response tagging for efficient cache invalidation

Usage

Refer to the erdnaxelaweb/staticfakedesign bundle documentation for detailed usage instructions.

Content types

Define content types in a standardized way using the definition pattern:

parameters:
 erdnaxelaweb.static_fake_design.content_definition:
 article:
 name:
 eng-GB: 'Article'
 nameSchema: '<title>'
 urlAliasSchema: '<title>'
 fields:
 title:
 type: string
 required: true
 body:
 type: richtext
 required: false

Taxonomy entries

Define taxonomy types for categorizing content:

parameters:
 erdnaxelaweb.static_fake_design.taxonomy_entry_definition:
 category:
 fields:
 name:
 required: true
 type: string
 identifier:
 required: true
 type: string

Landing Page Blocks

Create custom landing page blocks:

ibexa_design_integration:
 system:
 default:
 block_definition:
 featured_articles:
 views:
 default: '@ibexadesign/landing_page/block/featured_articles.html.twig'
 attributes:
 title:
 type: "string"
 required: false
 articles:
 type: "content"
 required: true
 options:
 type: article
 max: 3

Template Integration

The bundle provide a set of twig functions to integrate templates with the Ibexa CMS.:

  • display_content: Renders a content view template
{{ display_content(<template name>, <content>, <parameters>, <is ESI>, <view type>) }}
{{ display_content('@ibexadesign/content/list/news.html.twig', content, []) }}
  • display_block: Renders a block view template
{{ display_block(<block>, <is ESI>) }}
{{ display_block(block) }}
  • display_component: Renders a component view template
{{ display_component('@ibexadesign/components/footer.html.twig', []) }}
{{ display_component(<template name>, <parameters>, <controller action>, <is ESI>) }}

Thoses functions are used to switch between include and render depending on the context (static or dynamic version).

Rules for view template integration

  1. A content view template should always be associated with a content object
  2. Page template names should follow the pattern: <view>/<content_type>.html.twig
  3. The content variable in a content view template should always be named content

Documentation

Detailed documentation is available in the ./doc directory:

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

composer config repositories.ibexadesignintegration '{"type": "path", "url": "../", "options": {"symlink": true}}' --json
composer require erdnaxelaweb/ibexadesignintegration:*
yarn install --cwd ../
cp ../doc/example/* ./ -R

License

This bundle is released under the MIT License.