From 401964089ad97c5a493c33869a3e64a1b3017d25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Wed, 29 Jul 2026 17:01:13 +0200 Subject: [PATCH 01/17] Rebrand Quable PIM --- docs/index.md | 2 +- .../product_catalog/add_remote_pim_support.md | 2 +- .../customize_product_attribute_templates.md | 2 +- docs/product_catalog/product_catalog.md | 2 +- .../product_catalog_configuration.md | 2 +- docs/product_catalog/product_catalog_guide.md | 4 +-- .../quable/configure_quable_connector.md | 4 +-- docs/product_catalog/quable/install_quable.md | 28 +++++++++---------- docs/product_catalog/quable/quable.md | 6 ++-- docs/product_catalog/quable/quable_api.md | 2 +- docs/product_catalog/quable/quable_guide.md | 10 +++---- docs/release_notes/ibexa_dxp_v5.0.md | 6 ++-- .../product_search_criteria.md | 4 +-- .../product_sort_clauses.md | 4 +-- .../quable_twig_functions.md | 2 +- mkdocs.yml | 6 ++-- 16 files changed, 43 insertions(+), 43 deletions(-) diff --git a/docs/index.md b/docs/index.md index 05f88a5ecc0..ab522242b98 100644 --- a/docs/index.md +++ b/docs/index.md @@ -192,7 +192,7 @@ diff --git a/docs/product_catalog/add_remote_pim_support.md b/docs/product_catalog/add_remote_pim_support.md index 994234c4ec7..bdfc39d7b38 100644 --- a/docs/product_catalog/add_remote_pim_support.md +++ b/docs/product_catalog/add_remote_pim_support.md @@ -5,7 +5,7 @@ description: Install and configure the Remote PIM example package. # Add Remote PIM support [[= product_name =]] provides flexible product catalog infrastructure that works with external Product Information Management (PIM) systems. -For advanced product data management without custom development, you can use the readily available [[[= pim_product_name =]] PIM integration](quable/quable.md) with [[= product_name =]]. +For advanced product data management without custom development, you can use the readily available [[[= pim_product_name =]] integration](quable/quable.md) with [[= product_name =]]. To implement [Remote PIM support](product_catalog_guide.md#remote-pim-support) for a custom integration, you can build upon a foundation provided by [[= product_name_base =]]. diff --git a/docs/product_catalog/customize_product_attribute_templates.md b/docs/product_catalog/customize_product_attribute_templates.md index ab1e36dbdb3..4d71933f299 100644 --- a/docs/product_catalog/customize_product_attribute_templates.md +++ b/docs/product_catalog/customize_product_attribute_templates.md @@ -29,7 +29,7 @@ If none is found, it falls back to the first `generic_attribute` block available ### [[= pim_product_name =]] attribute types -When using [[[= pim_product_name =]] PIM](/product_catalog/quable/quable.md), use the following identifiers to override the templates for [[[= pim_product_name =]]'s attribute types](https://docs.quable.com/v5-EN/docs/objects-and-attributes#attribute-types): +When using [[[= pim_product_name =]]](/product_catalog/quable/quable.md), use the following identifiers to override the templates for [[[= pim_product_name =]]'s attribute types](https://docs.quable.com/v5-EN/docs/objects-and-attributes#attribute-types): | Attribute name | Identifier | |---|---| diff --git a/docs/product_catalog/product_catalog.md b/docs/product_catalog/product_catalog.md index 86348d466db..72a7e307c25 100644 --- a/docs/product_catalog/product_catalog.md +++ b/docs/product_catalog/product_catalog.md @@ -10,7 +10,7 @@ The Product Catalog provides comprehensive capabilities for managing products of [[= product_name =]] offers robust product catalog infrastructure that can be used standalone. -You can also use [[[= pim_product_name =]] Product Information Management (PIM)](/product_catalog/quable/quable.md) add-on that fully integrates into the [[= product_name_base =]] ecosystem, or the [Remote PIM](add_remote_pim_support.md) to add integration with any external PIM system. +You can also use [[[= pim_product_name =]]](/product_catalog/quable/quable.md) add-on that fully integrates into the [[= product_name_base =]] ecosystem, or the [Remote PIM](add_remote_pim_support.md) to add integration with any external PIM system. [[= cards([ "product_catalog/product_catalog_guide", diff --git a/docs/product_catalog/product_catalog_configuration.md b/docs/product_catalog/product_catalog_configuration.md index 6bab65e630c..17a145f6464 100644 --- a/docs/product_catalog/product_catalog_configuration.md +++ b/docs/product_catalog/product_catalog_configuration.md @@ -33,7 +33,7 @@ ibexa_product_catalog: ``` The `local` type is the built-in type of catalog based on the content repository. -With [[[= pim_product_name =]] PIM integration](/product_catalog/quable/quable_guide.md) add-on installed and configured, by using the `quable` type you can retrieve product data coming from [[= pim_product_name =]]. +With [[[= pim_product_name =]] integration](/product_catalog/quable/quable_guide.md) add-on installed and configured, by using the `quable` type you can retrieve product data coming from [[= pim_product_name =]]. You can use a single engine across all repositories, or assign different ones per repository. Each repository can use only one product catalog engine. diff --git a/docs/product_catalog/product_catalog_guide.md b/docs/product_catalog/product_catalog_guide.md index 7c33fe00145..fe00bfd7778 100644 --- a/docs/product_catalog/product_catalog_guide.md +++ b/docs/product_catalog/product_catalog_guide.md @@ -161,7 +161,7 @@ Besides, the built-in catalog filters, you can also [create custom ones](create_ In [[= product_name =]], products are created and maintained by using the REST API or the back office, and their data is stored in a local database. However, in your project or organization, you might have an existing product database, or be specifically concerned about product information security. To address such needs, [[= product_name =]] provides remote PIM support. -You can install and configure a readily available [[[= pim_product_name =]] PIM integration](/product_catalog/quable/quable.md) add-on, or build a custom one to connect to a remote PIM or ERP system, pull product data and present it on your website. +You can install and configure a readily available [[[= pim_product_name =]] integration](/product_catalog/quable/quable.md) add-on, or build a custom one to connect to a remote PIM or ERP system, pull product data and present it on your website. ![Remote PIM](img/remote_pim_support.png) @@ -192,7 +192,7 @@ In your specific scenario, you can implement the support for availability and pr The limitation of remote PIM depend on implementation details of specific integration and may arise in areas relying on [content model](content_model.md). -To see the limitations of the [[= pim_product_name =]] PIM integration add-on, see [[[= pim_product_name =]] PIM known limitations](/product_catalog/quable/quable_guide.md#known-limitations). +To see the limitations of the [[= pim_product_name =]] integration add-on, see [[[= pim_product_name =]] known limitations](/product_catalog/quable/quable_guide.md#known-limitations). ##### Searching diff --git a/docs/product_catalog/quable/configure_quable_connector.md b/docs/product_catalog/quable/configure_quable_connector.md index dd0d3400c7d..5ebebc398f4 100644 --- a/docs/product_catalog/quable/configure_quable_connector.md +++ b/docs/product_catalog/quable/configure_quable_connector.md @@ -1,10 +1,10 @@ --- -description: Quable PIM connector configuration reference for Ibexa DXP +description: Quable connector configuration reference for Ibexa DXP page_type: reference month_change: false --- -# Configure Quable connector +# Configure [[= pim_product_name =]] connector You can customize the behavior of the [[= pim_product_name =]] integration add-on by using the following [configuration](configuration.md). diff --git a/docs/product_catalog/quable/install_quable.md b/docs/product_catalog/quable/install_quable.md index bbacf5b0ee4..ff44ad6d90a 100644 --- a/docs/product_catalog/quable/install_quable.md +++ b/docs/product_catalog/quable/install_quable.md @@ -1,15 +1,15 @@ --- -description: Install and configure Quable PIM connector for Ibexa DXP +description: Install and configure Quable connector for Ibexa DXP month_change: false --- -# Install Quable connector +# Install [[= pim_product_name =]] connector -To integrate [[= product_name =]] with [[= pim_product_name =]] PIM, you need to install the [[= pim_product_name =]] connector packages, configure the connection, and set up synchronization. +To integrate [[= product_name =]] with [[= pim_product_name =]], you need to install the [[= pim_product_name =]] connector packages, configure the connection, and set up synchronization. ## Create [[= pim_product_name =]] instance -Before installing the [[= pim_product_name =]] connector, ensure you have access to a [[[= pim_product_name =]] PIM instance](https://www.quable.com). +Before installing the [[= pim_product_name =]] connector, ensure you have access to a [[[= pim_product_name =]] instance](https://www.quable.com). ## Install package @@ -19,11 +19,11 @@ Run the following command to install the required package: composer require ibexa/connector-quable ``` -The command adds the [[= pim_product_name =]] connector code, including services that enable communication with [[= pim_product_name =]] PIM. +The command adds the [[= pim_product_name =]] connector code, including services that enable communication with [[= pim_product_name =]]. ## Get API credentials -To connect to [[= pim_product_name =]] PIM, you need an API token: +To connect to [[= pim_product_name =]], you need an API token: 1. Log in to your [[= pim_product_name =]] instance, for example, `https://example.quable.com`. 2. Navigate to the [API Tokens](https://docs.quable.com/v5-EN/docs/api-tokens) section. @@ -130,22 +130,22 @@ Run the following command to synchronize classifications: php bin/console ibexa:quable:classification:sync ``` -This command imports the product classification structure from [[= pim_product_name =]] PIM into [[= product_name =]], ensuring that product categories are aligned. +This command imports the product classification structure from [[= pim_product_name =]] into [[= product_name =]], ensuring that product categories are aligned. !!! tip - To keep the classifications aligned, we recommend running the `ibexa:quable:classification:sync` command every night, even when using synchronization with webhooks. + To keep the classifications aligned, it is recommended that you run the `ibexa:quable:classification:sync` command every night, even when using synchronization with webhooks. ## Set up real-time synchronization -[[= pim_product_name =]] PIM can notify [[= product_name =]] about product data and classification changes in real-time by using webhooks. +[[= pim_product_name =]] can notify [[= product_name =]] about product data and classification changes in real-time by using webhooks. This invalidates the cache kept in [[= product_name =]], ensuring that product information stays up to date. -Webhook configuration must be set up in both Quable PIM and [[= product_name =]]. +Webhook configuration must be set up in both [[= pim_product_name =]] and [[= product_name =]]. ### Create webhook in [[= pim_product_name =]] -1. Create a new [webhook in Quable](https://docs.quable.com/v5-EN/docs/webhook). +1. Create a new [webhook in [[= pim_product_name =]]](https://docs.quable.com/v5-EN/docs/webhook). 2. Set the webhook code (used as the webhook name). 3. Provide the URL to your [[= product_name =]] instance suffixed by `/webhook/quable`, for example: `https://example.com/webhook/quable`. 4. Mark it as **Activated**. @@ -174,11 +174,11 @@ ibexa_connector_quable: !!! caution - [Quable uses dynamic IP addresses](https://faq.quable.com/en/articles/8250056-what-are-the-ip-addresses-of-quable-to-add-to-the-whitelist) to connect to [[= product_name =]]. - If your DXP instance is protected by a firewall, make sure your configuration allows connections from changing IP addresses. + [[[= pim_product_name =]] uses dynamic IP addresses](https://faq.quable.com/en/articles/8250056-what-are-the-ip-addresses-of-quable-to-add-to-the-whitelist) to connect to [[= product_name =]]. + If your [[= product_name =]] instance is protected by a firewall, make sure your configuration allows connections from changing IP addresses. ### Configure background task -[[= product_name =]]'s webhook processes Quable's classification change events and queues them to be processed in the background. +[[= product_name =]] webhook processes [[= pim_product_name =]]'s classification change events and queues them to be processed in the background. To process them, [configure Ibexa Messenger](background_tasks.md) and make sure the `messenger:consume` command is run periodically. diff --git a/docs/product_catalog/quable/quable.md b/docs/product_catalog/quable/quable.md index 02282290aa7..14ebfadc620 100644 --- a/docs/product_catalog/quable/quable.md +++ b/docs/product_catalog/quable/quable.md @@ -1,10 +1,10 @@ --- -description: Quable PIM integration with Ibexa DXP +description: Quable integration with Ibexa DXP page_type: landing_page month_change: false --- -# Quable PIM Integration +# [[= pim_product_name =]] Integration [[= product_name =]] integrates with [[[= pim_product_name =]]](https://www.quable.com/en) to provide product information management as part of the [[= product_name_base =]] orchestration platform. @@ -18,7 +18,7 @@ Products can be viewed, selected, and embedded in [[= product_name =]], while al "product_catalog/quable/quable_guide", ("https://doc.ibexa.co/projects/userguide/en/5.0/product_catalog/quable_pim_integration/"), ("https://www.quable.com/en", "Quable - PIM solution for product data management", "Manage your product data and accelerate sales with Quable. Discover the new PIM platform that revolutionizes the product experience"), - ("https://docs.quable.com/", "Quable resources", "Find all Quable PIM, DAM, and Portal resources: user guides, training content, product documentation, technical documentation, and the PIM API for developers."), + ("https://docs.quable.com/", "Quable resources", "Find all PIM, DAM, and Portal resources: user guides, training content, product documentation, technical documentation, and the PIM API for developers."), ]) =]] ## Development diff --git a/docs/product_catalog/quable/quable_api.md b/docs/product_catalog/quable/quable_api.md index de0dc06e167..ed05d9c35d7 100644 --- a/docs/product_catalog/quable/quable_api.md +++ b/docs/product_catalog/quable/quable_api.md @@ -4,7 +4,7 @@ month_change: false --- -# Quable API +# [[= pim_product_name =]] API As [[= pim_product_name =]] products are represented as [[= product_name =]] products, you can use the existing [Product APIs](product_api.md) to retrieve the product information. diff --git a/docs/product_catalog/quable/quable_guide.md b/docs/product_catalog/quable/quable_guide.md index eecef45aa43..fe5103c57dd 100644 --- a/docs/product_catalog/quable/quable_guide.md +++ b/docs/product_catalog/quable/quable_guide.md @@ -3,11 +3,11 @@ description: The Quable product guide describes how you can use the product data month_change: false --- -# Quable product guide +# [[= pim_product_name =]] product guide ## Overview -[[= pim_product_name =]] integration connects [[= product_name =]] with [[[= pim_product_name =]] Product Information Management (PIM)](https://www.quable.com/en), making [[= pim_product_name =]] the authoritative source of product information for every website powered by [[= product_name =]]. +[[= pim_product_name =]] integration connects [[= product_name =]] with [[[= pim_product_name =]]](https://www.quable.com/en), making [[= pim_product_name =]] the authoritative source of product information for every website powered by [[= product_name =]]. [[= pim_product_name =]] serves as the single source of truth for all product data, including attributes, classifications, variants, and translations. [[= product_name =]] consumes this data and makes it available for use in content and digital experiences. @@ -16,9 +16,9 @@ This approach eliminates the need to manage product data in multiple systems, wh ## Availability -The integration with [[= pim_product_name =]] PIM is available as an add-on for all [[= product_name =]] editions, starting with [[= product_name =]] v5.0.7. +The integration with [[= pim_product_name =]] is available as an add-on for all [[= product_name =]] editions. -Before installing and enabling the add-on, ensure that you have an active [[= pim_product_name =]] PIM instance with defined products, classifications, and channels. +Before installing and enabling the add-on, ensure that you have an active [[= pim_product_name =]] instance with defined products, classifications, and channels. Then, [perform the initial configuration](install_quable.md). @@ -28,7 +28,7 @@ The integration is built on [[= product_name =]]'s [Remote PIM framework](add_re Once configured, the system performs: -- an initial synchronization of product data from Quable +- an initial synchronization of product data from [[= pim_product_name =]] - ongoing updates via webhooks (near real-time) Product data is mapped to the [[= product_name =]]'s product data model, including variants, attributes and [product categories](product_catalog_guide.md#product-taxonomy). diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index a7602fe2e2d..7ce9a7a0484 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -278,14 +278,14 @@ This add-on introduces a set of recommendation blocks available in the [Page Bui For more information about Recommendation blocks in Page Builder, see the relevant [Developer Documentation](https://doc.ibexa.co/en/5.0/recommendations/raptor_integration/recommendation_blocks/) and [User Documentation](https://doc.ibexa.co/projects/userguide/en/5.0/recommendations/raptor_integration/raptor_recommendation_blocks/). -### [[= pim_product_name =]] PIM +### [[= pim_product_name =]] -The [[= pim_product_name =]] integration add-on allows you to connect [[= product_name =]] with [[[= pim_product_name =]] Product Information Management (PIM)](https://www.quable.com/en), making [[= pim_product_name =]] the authoritative source of product information for every website powered by [[= product_name =]]. +The [[= pim_product_name =]] integration add-on allows you to connect [[= product_name =]] with [[[= pim_product_name =]]](https://www.quable.com/en), making [[= pim_product_name =]] the authoritative source of product information for every website powered by [[= product_name =]]. [[= pim_product_name =]] can serve as the single source of truth for all product data, including attributes, classifications, variants, and translations. [[= product_name =]] consumes this data and makes it available for use in content and digital experiences. -For more information, see [Quable PIM Integration](https://doc.ibexa.co/en/5.0/product_catalog/quable/quable/). +For more information, see [[[= pim_product_name =]] Integration](https://doc.ibexa.co/en/5.0/product_catalog/quable/quable/). ### AI Actions in Page Builder blocks [[% include 'snippets/experience_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] diff --git a/docs/search/criteria_reference/product_search_criteria.md b/docs/search/criteria_reference/product_search_criteria.md index 79b9f21cac4..e1bff9f7cd2 100644 --- a/docs/search/criteria_reference/product_search_criteria.md +++ b/docs/search/criteria_reference/product_search_criteria.md @@ -16,9 +16,9 @@ Search Criterion let you filter product by specific attributes, for example, col ## Product Search Criteria -To query for products coming from [[= pim_product_name =]] PIM, see [[[= pim_product_name =]] Search API](/product_catalog/quable/quable_api.md#search-for-products) for details about the integration. +To query for products coming from [[= pim_product_name =]], see [[[= pim_product_name =]] Search API](/product_catalog/quable/quable_api.md#search-for-products) for details about the integration. -|Search Criterion|Search based on|Local product catalog|[[= pim_product_name =]] PIM| +|Search Criterion|Search based on|Local product catalog|[[= pim_product_name =]]| |-----|-----|-----|-----| |[AttributeGroupIdentifier](attributegroupidentifier_criterion.md)|Value of product's attribute group identifier| ✔| | |[AttributeName](attributename_criterion.md)|Value of product's attribute name| ✔| | diff --git a/docs/search/sort_clause_reference/product_sort_clauses.md b/docs/search/sort_clause_reference/product_sort_clauses.md index 5b567401f8f..e4d146f0bc8 100644 --- a/docs/search/sort_clause_reference/product_sort_clauses.md +++ b/docs/search/sort_clause_reference/product_sort_clauses.md @@ -9,9 +9,9 @@ Product Sort Clauses are only supported by [Product Search (`ProductServiceInter By using Sort Clause you can filter product by specific attributes, for example: price, code, or availability. -To sort products coming from [[= pim_product_name =]] PIM, see [[[= pim_product_name =]] Search API](../../product_catalog/quable/quable_api.md#search-for-products) for details about the add-on. +To sort products coming from [[= pim_product_name =]], see [[[= pim_product_name =]] Search API](../../product_catalog/quable/quable_api.md#search-for-products) for details about the add-on. -| Sort Clause | Sorting based on | Local product catalog | [[= pim_product_name =]] PIM | +| Sort Clause | Sorting based on | Local product catalog | [[= pim_product_name =]] | |-----|-----|-----|-----| |[BasePrice](baseprice_sort_clause.md)|Base product price| ✔| | |[CreatedAt](createdat_sort_clause.md)|Date and time of the creation of a product| ✔| ✔| diff --git a/docs/templating/twig_function_reference/quable_twig_functions.md b/docs/templating/twig_function_reference/quable_twig_functions.md index 5cdad3b0a0d..775255b5687 100644 --- a/docs/templating/twig_function_reference/quable_twig_functions.md +++ b/docs/templating/twig_function_reference/quable_twig_functions.md @@ -4,7 +4,7 @@ page_type: reference month_change: false --- -# Quable Twig functions +# [[= pim_product_name =]] Twig functions The [[[= pim_product_name =]] connector](/product_catalog/quable/quable.md) provides the following Twig functions: diff --git a/mkdocs.yml b/mkdocs.yml index 608ef135ea7..808be3db802 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -329,7 +329,7 @@ nav: - Image Twig functions: templating/twig_function_reference/image_twig_functions.md - Page Twig functions: templating/twig_function_reference/page_twig_functions.md - Product Twig functions: templating/twig_function_reference/product_twig_functions.md - - Quable functions: templating/twig_function_reference/quable_twig_functions.md + - Quable Twig functions: templating/twig_function_reference/quable_twig_functions.md - Recommendations Twig functions: templating/twig_function_reference/recommendations_twig_functions.md - Site context Twig functions: templating/twig_function_reference/site_context_twig_functions.md - Storefront Twig functions: templating/twig_function_reference/storefront_twig_functions.md @@ -373,8 +373,8 @@ nav: - Product catalog: - Product catalog: product_catalog/product_catalog.md - Product catalog guide: product_catalog/product_catalog_guide.md - - Quable PIM integration: - - Quable PIM Integration: product_catalog/quable/quable.md + - Quable integration: + - Quable Integration: product_catalog/quable/quable.md - Quable product guide: product_catalog/quable/quable_guide.md - Install Quable: product_catalog/quable/install_quable.md - Configure Quable: product_catalog/quable/configure_quable_connector.md From cc8ffde23d45dd1d69958abd2d2335787f03cdb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Thu, 30 Jul 2026 18:27:54 +0200 Subject: [PATCH 02/17] Rename Ibexa CDP to Raptor CDP --- .../User/DateOfBirthUserItemProcessor.php | 0 .../project_organization/bundles.md | 2 +- docs/getting_started/install_ibexa_dxp.md | 4 ++-- docs/ibexa_products/editions.md | 2 +- docs/ibexa_products/ibexa_experience.md | 2 +- docs/product_guides/product_guides.md | 2 +- .../img/audience_builder.png | Bin .../img/customer_profile.png | Bin .../img/raptor_cdp_account_number.png} | Bin .../img/raptor_cdp_accounts.png} | Bin .../raptor_cdp_activation_general_info.png} | Bin .../img/raptor_cdp_activation_ibexa_info.png} | Bin .../img/raptor_cdp_control_panel.png} | Bin .../img/raptor_cdp_create_new_schema.png} | Bin .../img/raptor_cdp_create_segment_group.png} | Bin .../img/raptor_cdp_how_works.png} | Bin .../img/raptor_cdp_person_identifier.png} | Bin .../img/raptor_cdp_userid_mapid.png} | Bin docs/{cdp/cdp.md => raptor_cdp/raptor_cdp.md} | 6 ++--- .../raptor_cdp_activation.md} | 8 +++---- .../raptor_cdp_add_tracking.md} | 4 ++-- .../raptor_cdp_configuration.md} | 10 ++++---- .../raptor_cdp_data_export.md} | 16 ++++++------- .../raptor_cdp_data_customization.md} | 2 +- .../raptor_cdp_data_export_schedule.md} | 2 +- .../raptor_cdp_guide.md} | 20 ++++++++-------- .../raptor_cdp_installation.md} | 4 ++-- docs/resources/new_in_doc.md | 6 ++--- .../from_4.6/update_from_4.6.md | 2 +- mkdocs.yml | 22 +++++++++--------- plugins.yml | 11 ++++++++- 31 files changed, 67 insertions(+), 58 deletions(-) rename code_samples/{cdp => raptor_cdp}/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php (100%) rename docs/{cdp => raptor_cdp}/img/audience_builder.png (100%) rename docs/{cdp => raptor_cdp}/img/customer_profile.png (100%) rename docs/{cdp/img/cdp_account_number.png => raptor_cdp/img/raptor_cdp_account_number.png} (100%) rename docs/{cdp/img/cdp_accounts.png => raptor_cdp/img/raptor_cdp_accounts.png} (100%) rename docs/{cdp/img/cdp_activation_general_info.png => raptor_cdp/img/raptor_cdp_activation_general_info.png} (100%) rename docs/{cdp/img/cdp_activation_ibexa_info.png => raptor_cdp/img/raptor_cdp_activation_ibexa_info.png} (100%) rename docs/{cdp/img/cdp_control_panel.png => raptor_cdp/img/raptor_cdp_control_panel.png} (100%) rename docs/{cdp/img/cdp_create_new_schema.png => raptor_cdp/img/raptor_cdp_create_new_schema.png} (100%) rename docs/{cdp/img/cdp_create_segment_group.png => raptor_cdp/img/raptor_cdp_create_segment_group.png} (100%) rename docs/{cdp/img/cdp_how_works.png => raptor_cdp/img/raptor_cdp_how_works.png} (100%) rename docs/{cdp/img/cdp_person_identifier.png => raptor_cdp/img/raptor_cdp_person_identifier.png} (100%) rename docs/{cdp/img/cdp_userid_mapid.png => raptor_cdp/img/raptor_cdp_userid_mapid.png} (100%) rename docs/{cdp/cdp.md => raptor_cdp/raptor_cdp.md} (77%) rename docs/{cdp/cdp_activation/cdp_activation.md => raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md} (50%) rename docs/{cdp/cdp_activation/cdp_add_tracking.md => raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md} (93%) rename docs/{cdp/cdp_activation/cdp_configuration.md => raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md} (92%) rename docs/{cdp/cdp_activation/cdp_data_export.md => raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md} (92%) rename docs/{cdp/cdp_data_customization.md => raptor_cdp/raptor_cdp_data_customization.md} (98%) rename docs/{cdp/cdp_data_export_schedule.md => raptor_cdp/raptor_cdp_data_export_schedule.md} (98%) rename docs/{cdp/cdp_guide.md => raptor_cdp/raptor_cdp_guide.md} (84%) rename docs/{cdp/cdp_installation.md => raptor_cdp/raptor_cdp_installation.md} (89%) diff --git a/code_samples/cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php b/code_samples/raptor_cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php similarity index 100% rename from code_samples/cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php rename to code_samples/raptor_cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php diff --git a/docs/administration/project_organization/bundles.md b/docs/administration/project_organization/bundles.md index 581d388dbcd..c9f0b97f283 100644 --- a/docs/administration/project_organization/bundles.md +++ b/docs/administration/project_organization/bundles.md @@ -138,7 +138,7 @@ The following packages are optional and can be installed independently. |Bundle|Description| |---------|-----------| |[ibexa/automated-translation](https://github.com/ibexa/automated-translation)|Automated translation of content using [Google Translate or DeepL](automated_translations.md)| -|ibexa/cdp|Integration with the [Customer Data Platform](cdp.md)| +|ibexa/cdp|Integration with [Raptor CDP](raptor_cdp.md)| |[ibexa/cloud](https://github.com/ibexa/cloud)|Integration with [[[= product_name_cloud =]]](/ibexa_cloud/ibexa_cloud.md)| In addition, you can extend the capabilities of your project by installing additional [LTS Updates](editions.md#lts-updates). diff --git a/docs/getting_started/install_ibexa_dxp.md b/docs/getting_started/install_ibexa_dxp.md index 4c343bc818b..2049cd7fe8a 100644 --- a/docs/getting_started/install_ibexa_dxp.md +++ b/docs/getting_started/install_ibexa_dxp.md @@ -443,7 +443,7 @@ rm ibexa_cron.txt For [Scheduled content publications]([[= user_doc =]]/content_management/schedule_publishing/), the `ibexa:scheduled:run` command is tagged with `ibexa.cron.job` and runs every minute (`* * * * *`) by default. You can redefine this service to change the frequency. -The [CDP data export schedule](cdp_data_export_schedule.md) dynamically creates services tagged with `ibexa.cron.job`. +The [[[= product_name_cdp =]] data export schedule](/raptor_cdp/raptor_cdp_data_export_schedule.md) dynamically creates services tagged with `ibexa.cron.job`. You can add other commands to scheduled tasks in one of two ways: @@ -551,7 +551,7 @@ Make sure that its [worker starts with the server](background_tasks.md#start-wor A list of processes that use [[= product_name_base =]] Messenger includes at least these two: -- [CDP data export](cdp_data_export.md#ibexa-messenger-support-for-large-batches-of-data) +- [[[= product_name_cdp =]] data export](/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md#ibexa-messenger-support-for-large-batches-of-data) - [Discount re-indexing](configure_discounts.md#discount-re-indexing) ## [[= product_name_cloud =]] diff --git a/docs/ibexa_products/editions.md b/docs/ibexa_products/editions.md index c9df1b14e5d..4e585d8bbfe 100644 --- a/docs/ibexa_products/editions.md +++ b/docs/ibexa_products/editions.md @@ -49,7 +49,7 @@ Compare all features available in [[= product_name_headless =]], [[= product_nam | [Segments](segments_admin_panel.md) | | ✔ | ✔ | | [Recent activity](recent_activity.md) | | ✔ | ✔ | | [[[= product_name_engage =]] add-on]([[= user_doc =]]/ibexa_engage/ibexa_engage/) | | ✔ | ✔ | -| [Customer Data Platform (CDP) add-on](cdp_guide.md) | | ✔ | ✔ | +| [[[= product_name_cdp =]] (Customer Data Platform) add-on](/raptor_cdp/raptor_cdp_guide.md) | | ✔ | ✔ | | [Order management](order_management.md) | | | ✔ | | [Payment management](payment.md) | | | ✔ | | [Shipping management](shipping_management.md) | | | ✔ | diff --git a/docs/ibexa_products/ibexa_experience.md b/docs/ibexa_products/ibexa_experience.md index cd0db3f0f8a..e2cc5214bd3 100644 --- a/docs/ibexa_products/ibexa_experience.md +++ b/docs/ibexa_products/ibexa_experience.md @@ -102,7 +102,7 @@ You can assign users to different recommendation groups and create advanced logi #### Customer Data Platform (CDP) -[Ibexa CDP](cdp_guide.md) is an add-on available for both Experience and [Commerce](ibexa_commerce.md) editions of [[= product_name =]]. +[[[= product_name_cdp =]]](/raptor_cdp/raptor_cdp_guide.md) is an add-on available for both Experience and [Commerce](ibexa_commerce.md) editions of [[= product_name =]]. To use it, you must make arrangements with [[= product_name_base =]] to define the initial configuration. Once you activate [[= product_name_cdp =]], you can create complete customer profiles, including their interactions, behavior, and preferences. It helps you improve user engagement, conversion rates, and return on investment by segmenting your audience and delivering tailored campaigns and experiences. diff --git a/docs/product_guides/product_guides.md b/docs/product_guides/product_guides.md index c6a70510e41..23e7c70dd24 100644 --- a/docs/product_guides/product_guides.md +++ b/docs/product_guides/product_guides.md @@ -22,7 +22,7 @@ Discover the primary ones with the help of product guides. Condensed content all "product_catalog/quable/quable_guide", "commerce/shopping_list/shopping_list_guide", "ibexa_cloud/ibexa_cloud_guide", - "cdp/cdp_guide", + "raptor_cdp/raptor_cdp_guide", "recommendations/raptor_integration/raptor_connector_guide", "ai/ai_actions/ai_actions_guide", "ai/mcp/mcp_guide", diff --git a/docs/cdp/img/audience_builder.png b/docs/raptor_cdp/img/audience_builder.png similarity index 100% rename from docs/cdp/img/audience_builder.png rename to docs/raptor_cdp/img/audience_builder.png diff --git a/docs/cdp/img/customer_profile.png b/docs/raptor_cdp/img/customer_profile.png similarity index 100% rename from docs/cdp/img/customer_profile.png rename to docs/raptor_cdp/img/customer_profile.png diff --git a/docs/cdp/img/cdp_account_number.png b/docs/raptor_cdp/img/raptor_cdp_account_number.png similarity index 100% rename from docs/cdp/img/cdp_account_number.png rename to docs/raptor_cdp/img/raptor_cdp_account_number.png diff --git a/docs/cdp/img/cdp_accounts.png b/docs/raptor_cdp/img/raptor_cdp_accounts.png similarity index 100% rename from docs/cdp/img/cdp_accounts.png rename to docs/raptor_cdp/img/raptor_cdp_accounts.png diff --git a/docs/cdp/img/cdp_activation_general_info.png b/docs/raptor_cdp/img/raptor_cdp_activation_general_info.png similarity index 100% rename from docs/cdp/img/cdp_activation_general_info.png rename to docs/raptor_cdp/img/raptor_cdp_activation_general_info.png diff --git a/docs/cdp/img/cdp_activation_ibexa_info.png b/docs/raptor_cdp/img/raptor_cdp_activation_ibexa_info.png similarity index 100% rename from docs/cdp/img/cdp_activation_ibexa_info.png rename to docs/raptor_cdp/img/raptor_cdp_activation_ibexa_info.png diff --git a/docs/cdp/img/cdp_control_panel.png b/docs/raptor_cdp/img/raptor_cdp_control_panel.png similarity index 100% rename from docs/cdp/img/cdp_control_panel.png rename to docs/raptor_cdp/img/raptor_cdp_control_panel.png diff --git a/docs/cdp/img/cdp_create_new_schema.png b/docs/raptor_cdp/img/raptor_cdp_create_new_schema.png similarity index 100% rename from docs/cdp/img/cdp_create_new_schema.png rename to docs/raptor_cdp/img/raptor_cdp_create_new_schema.png diff --git a/docs/cdp/img/cdp_create_segment_group.png b/docs/raptor_cdp/img/raptor_cdp_create_segment_group.png similarity index 100% rename from docs/cdp/img/cdp_create_segment_group.png rename to docs/raptor_cdp/img/raptor_cdp_create_segment_group.png diff --git a/docs/cdp/img/cdp_how_works.png b/docs/raptor_cdp/img/raptor_cdp_how_works.png similarity index 100% rename from docs/cdp/img/cdp_how_works.png rename to docs/raptor_cdp/img/raptor_cdp_how_works.png diff --git a/docs/cdp/img/cdp_person_identifier.png b/docs/raptor_cdp/img/raptor_cdp_person_identifier.png similarity index 100% rename from docs/cdp/img/cdp_person_identifier.png rename to docs/raptor_cdp/img/raptor_cdp_person_identifier.png diff --git a/docs/cdp/img/cdp_userid_mapid.png b/docs/raptor_cdp/img/raptor_cdp_userid_mapid.png similarity index 100% rename from docs/cdp/img/cdp_userid_mapid.png rename to docs/raptor_cdp/img/raptor_cdp_userid_mapid.png diff --git a/docs/cdp/cdp.md b/docs/raptor_cdp/raptor_cdp.md similarity index 77% rename from docs/cdp/cdp.md rename to docs/raptor_cdp/raptor_cdp.md index 51259b70bb0..062fba1964a 100644 --- a/docs/cdp/cdp.md +++ b/docs/raptor_cdp/raptor_cdp.md @@ -1,5 +1,5 @@ --- -description: Ibexa CDP is a software system designed to collect and organize customer data from multiple sources to build comprehensive customer profiles. +description: Raptor CDP is a software system designed to collect and organize customer data from multiple sources to build comprehensive customer profiles. edition: experience --- @@ -11,7 +11,7 @@ edition: experience With [[= product_name_cdp =]] you're able to track and aggregate data of your customers' activity on multiple channels. It allows you to create individual customer profiles that enable you to personalize their experience on your platform. -![Ibexa CDP control panel](img/cdp_control_panel.png) +![[[= product_name_cdp =]] control panel](img/raptor_cdp_control_panel.png) ## How it works @@ -19,4 +19,4 @@ It allows you to create individual customer profiles that enable you to personal With defined audiences you can target your user segments at the right time, through the most used channel, with the relevant message, content, or products. The customer data are collected through the system of trackers embedded in different parts of your page. -For more information on activation and trackers, see [CDP activation documentation](cdp_activation.md). +For more information on activation and trackers, see [CDP activation documentation](raptor_cdp_activation.md). diff --git a/docs/cdp/cdp_activation/cdp_activation.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md similarity index 50% rename from docs/cdp/cdp_activation/cdp_activation.md rename to docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md index f93aa9a94c8..829410fce40 100644 --- a/docs/cdp/cdp_activation/cdp_activation.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md @@ -1,5 +1,5 @@ --- -description: Step-by-step activation procedure of Ibexa CDP. +description: Step-by-step activation procedure of Raptor CDP. page_type: landing_page edition: experience --- @@ -11,7 +11,7 @@ Follow a step-by-step procedure that allows you to activate [[= product_name_cdp Activation includes configuration, data export and adding tracking. [[= cards([ - "cdp/cdp_activation/cdp_configuration", - "cdp/cdp_activation/cdp_data_export", - "cdp/cdp_activation/cdp_add_tracking", + "raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration", + "raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export", + "raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking", ], columns=3) =]] diff --git a/docs/cdp/cdp_activation/cdp_add_tracking.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md similarity index 93% rename from docs/cdp/cdp_activation/cdp_add_tracking.md rename to docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md index 097f6d5ab83..651dcc4772f 100644 --- a/docs/cdp/cdp_activation/cdp_add_tracking.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md @@ -1,5 +1,5 @@ --- -description: Adding tracking in [[= product_name_cdp =]]. +description: Adding tracking in Raptor CDP. edition: experience --- @@ -14,7 +14,7 @@ You can set it up in two ways: ## Set up tracking with built-in Raptor tracking functions If your project uses the [Raptor connector](raptor_connector.md), use the built-in [Raptor tracking functions](tracking_functions.md). -This recommended approach supports both client-side and server-side tracking, handles cookie consent, and sets the tracking cookie required for [anonymous user segmentation](cdp_configuration.md#anonymous-user-segmentation). +This recommended approach supports both client-side and server-side tracking, handles cookie consent, and sets the tracking cookie required for [anonymous user segmentation](raptor_cdp_configuration.md#anonymous-user-segmentation). For setup instructions, see [Raptor tracking functions](tracking_functions.md). diff --git a/docs/cdp/cdp_activation/cdp_configuration.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md similarity index 92% rename from docs/cdp/cdp_activation/cdp_configuration.md rename to docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md index 39a13c8eb5e..8f82c5ae901 100644 --- a/docs/cdp/cdp_activation/cdp_configuration.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md @@ -1,5 +1,5 @@ --- -description: Step-by-step configuration procedure of Ibexa CDP. +description: Step-by-step configuration procedure of Raptor CDP. edition: experience --- @@ -53,11 +53,11 @@ ibexa: Now, fill in the account number. Log in to [[= product_name_cdp =]] and in the top right corner, select available accounts. -![List of available accounts](cdp_accounts.png) +![List of available accounts](../img/raptor_cdp_accounts.png) A pop-up window displays a list of all available accounts and their numbers. -![Account number](cdp_account_number.png) +![Account number](../img/raptor_cdp_account_number.png) ## Segment group @@ -71,13 +71,13 @@ Choose wisely, as once connected to CDP segment group cannot be changed. After you create the segment group in the back office and connect it to [[= product_name_cdp =]], you cannot change it in any way, including edit its name. -![Creating a new segment group](cdp_create_segment_group.png) +![Creating a new segment group](../img/raptor_cdp_create_segment_group.png) Next, add a segment group identifier to the configuration. ## Anonymous user segmentation -To set up [segmentation for anonymous users](cdp_guide.md#anonymous-user-segmentation), take the following steps: +To set up [segmentation for anonymous users](raptor_cdp_guide.md#anonymous-user-segmentation), take the following steps: ### Set up CDP API activation diff --git a/docs/cdp/cdp_activation/cdp_data_export.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md similarity index 92% rename from docs/cdp/cdp_activation/cdp_data_export.md rename to docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md index dc845accbb6..524a1c06ed0 100644 --- a/docs/cdp/cdp_activation/cdp_data_export.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md @@ -1,5 +1,5 @@ --- -description: Step-by-step data export procedure in Ibexa CDP. +description: Step-by-step data export procedure in Raptor CDP. edition: experience --- @@ -46,7 +46,7 @@ The first one is used to send the test user data to the Data Manager. If it passes a validation test in the **Activation** section, use the latter one to send a full version. You can extend exported user data with custom fields from your user content, such as date of birth, preferences, or other profile information. -For more information, see [Data customization](cdp_data_customization.md#export-additional-user-data). +For more information, see [Data customization](raptor_cdp_data_customization.md#export-additional-user-data). Next, go back to [[= product_name_cdp =]] and select **Validate & download**. If the file passes, you can see a confirmation message. @@ -66,18 +66,18 @@ If you make any alterations, select the **Parse File** to generate columns with In the **Transform & Map** section you transform data and map it to a schema. At this point, you can map **email** to **email** and **id** to **integer** fields to get custom columns. -If you have [extended user data export with custom fields](cdp_data_customization.md#export-additional-user-data), those fields appear as additional columns in this section. +If you have [extended user data export with custom fields](raptor_cdp_data_customization.md#export-additional-user-data), those fields appear as additional columns in this section. Make sure to add them to your schema in Raptor so they can be used for segmentation and recommendations. Next, select **Create schema based on the downloaded columns**. It moves you to Schema Creator. There, choose **PersonalData** as a parent and name the schema. -![Create new schema](cdp_create_new_schema.png) +![Create new schema](../img/raptor_cdp_create_new_schema.png) Next, select all the columns and set Person Identifier as **userid**. -![Person Identifier](cdp_person_identifier.png) +![Person Identifier](../img/raptor_cdp_person_identifier.png) If you used PersonData or Catalog type schemas, the system requires specifying the Write Mode that is applied to them. @@ -88,7 +88,7 @@ For example, if a customer unsubscribes a newsletter, their email remains in the Next, select **userid** from a **Schema columns section** on the right and map it to **id**. -![Map userid to id](cdp_userid_mapid.png) +![Map userid to id](../img/raptor_cdp_userid_mapid.png) ## Activation @@ -121,7 +121,7 @@ You can configure multiple activations based data flows. First, from the menu bar, select **Activations** and create a new **Ibexa** activation. Specify name of your activation, select `userid` as **Person Identifier** and click **Next**. -![General Information - Activation](cdp_activation_general_info.png) +![General Information - Activation](../img/raptor_cdp_activation_general_info.png) Next, you can fill in **Ibexa information** they must match the ones provided in the YAML configuration: @@ -133,7 +133,7 @@ It points to a segment group where all the CDP audiences are stored. - **Base URL** - URL of your instance with added `/cdp/webhook` at the end. -![Ibexa Information - Activation](cdp_activation_ibexa_info.png) +![Ibexa Information - Activation](../img/raptor_cdp_activation_ibexa_info.png) Finally, you can specify the audiences you wish to include. diff --git a/docs/cdp/cdp_data_customization.md b/docs/raptor_cdp/raptor_cdp_data_customization.md similarity index 98% rename from docs/cdp/cdp_data_customization.md rename to docs/raptor_cdp/raptor_cdp_data_customization.md index 5d29bf815bc..b90297cb7b3 100644 --- a/docs/cdp/cdp_data_customization.md +++ b/docs/raptor_cdp/raptor_cdp_data_customization.md @@ -20,7 +20,7 @@ The base class handles user field validation and provides helper methods for wor The following example adds a custom date of birth field to the exported data: ``` php -[[= include_code('code_samples/cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php') =]] +[[= include_code('code_samples/raptor_cdp/date_of_birth_export/src/Export/User/DateOfBirthUserItemProcessor.php') =]] ``` Register your processor as a Symfony service and tag it with `ibexa.cdp.export.user.item_processor`: diff --git a/docs/cdp/cdp_data_export_schedule.md b/docs/raptor_cdp/raptor_cdp_data_export_schedule.md similarity index 98% rename from docs/cdp/cdp_data_export_schedule.md rename to docs/raptor_cdp/raptor_cdp_data_export_schedule.md index 56451196205..cf9a78d0e1c 100644 --- a/docs/cdp/cdp_data_export_schedule.md +++ b/docs/raptor_cdp/raptor_cdp_data_export_schedule.md @@ -1,5 +1,5 @@ --- -description: Data export schedule in Ibexa CDP. +description: Data export schedule in Raptor CDP. edition: experience month_change: true --- diff --git a/docs/cdp/cdp_guide.md b/docs/raptor_cdp/raptor_cdp_guide.md similarity index 84% rename from docs/cdp/cdp_guide.md rename to docs/raptor_cdp/raptor_cdp_guide.md index 477624e3aab..356e31ed605 100644 --- a/docs/cdp/cdp_guide.md +++ b/docs/raptor_cdp/raptor_cdp_guide.md @@ -1,9 +1,9 @@ --- -description: The [[= product_name_cdp =]] product guide describes all the possibilities that the Customer Data Platform offers to help you build great customer experiences. +description: The Raptor CDP product guide describes all the possibilities that the Customer Data Platform offers to help you build great customer experiences. edition: experience --- -# Ibexa Customer Data Platform (CDP) product guide +# Raptor CDP (Customer Data Platform) product guide ## What is [[= product_name_cdp =]] @@ -27,15 +27,15 @@ It helps you activate your users and give them real-time interaction. You can target certain user segments with the appropriate message, content, or products at the right time through the most used channels by using specified audiences. Customer data is gathered through a system of trackers embedded in various areas of your website. -![CDP - how does it work](img/cdp_how_works.png) +![CDP - how does it work](img/raptor_cdp_how_works.png) ### Installation and configuration -To start using [[= product_name_cdp =]], first you need to contact your sales representative, who provides you with a link to [register your [[= product_name_cdp =]] account](/cdp/cdp_installation.md#register-in-ibexa-cdp-dashboard). +To start using [[= product_name_cdp =]], first you need to contact your sales representative, who provides you with a link to [register your [[= product_name_cdp =]] account](/raptor_cdp/raptor_cdp_installation.md#register-in-raptor-cdp-dashboard). When you're done with registration process, you're able to access a separate instance with the data needed to configure, activate, and use this feature. -After your account is created, you can [download and install the [[= product_name_cdp =]] package](/cdp/cdp_installation.md#install-cdp-package) that is opt-in and needs to be downloaded separately. -Last step is to go through the [configuration process](cdp_configuration.md). +After your account is created, you can [download and install the [[= product_name_cdp =]] package](/raptor_cdp/raptor_cdp_installation.md#install-cdp-package) that is opt-in and needs to be downloaded separately. +Last step is to go through the [configuration process](raptor_cdp_configuration.md). ### Customer profile @@ -65,7 +65,7 @@ Remember to add a segment group identifier to the configuration, under the `segm ### Data export Configuration in [[= product_name_cdp =]] allows you to automate the process of exporting content, users, and products. -An `ibexa_cdp.data_export` [configuration key](cdp_data_export_schedule.md#configuration-key) includes the `schedule` setting where you can find separate sections for exporting user, content, and product. +An `ibexa_cdp.data_export` [configuration key](raptor_cdp_data_export_schedule.md#configuration-key) includes the `schedule` setting where you can find separate sections for exporting user, content, and product. Structure of each section is exactly the same and includes `interval` and `options` elements: - `interval` - sets the frequency at which the command is invoked, uses cron expressions, for example, '*/30 * * * *' means "every 30 minutes", '0 */12 * * *' means "every 12th hour" @@ -77,7 +77,7 @@ It's important, because all the types of content/product must have their own par Regarding data export, currently, only Stream File transport is supported and can be initialized from the configuration. -For more information, see [CDP data export](cdp_data_export.md). +For more information, see [CDP data export](raptor_cdp_data_export.md). ### Data customization @@ -85,12 +85,12 @@ For more information, see [CDP data export](cdp_data_export.md). With [[= product_name_cdp =]], you can export field types and field type values. They're exported with metadata and attributes, for example, ID, field definition name, type, or value. -For more information, see [data customization](cdp_data_customization.md#data-customization) documentation in Developer Documentation. +For more information, see [data customization](raptor_cdp_data_customization.md#data-customization) documentation in Developer Documentation. ### Client-side Tracking The final step is setting up a tracking script. -For more information, see [CDP add client-side tracking](cdp_add_tracking.md) and [Introduction to tracking in Raptor documentation](https://content.raptorservices.com/help-center/introduction-to-tracking-documentation). +For more information, see [CDP add client-side tracking](raptor_cdp_add_tracking.md) and [Introduction to tracking in Raptor documentation](https://content.raptorservices.com/help-center/introduction-to-tracking-documentation). ### Audience Builder diff --git a/docs/cdp/cdp_installation.md b/docs/raptor_cdp/raptor_cdp_installation.md similarity index 89% rename from docs/cdp/cdp_installation.md rename to docs/raptor_cdp/raptor_cdp_installation.md index 45f98359ae8..16cbd7707aa 100644 --- a/docs/cdp/cdp_installation.md +++ b/docs/raptor_cdp/raptor_cdp_installation.md @@ -1,5 +1,5 @@ --- -description: Installation of standalone [[= product_name_cdp =]] package. +description: Installation of standalone Raptor CDP package. edition: experience --- @@ -38,4 +38,4 @@ security: ``` Now, you can configure [[= product_name_cdp =]]. -Go to [the activation documentation](cdp_activation.md) and follow the steps. +Go to [the activation documentation](raptor_cdp_activation.md) and follow the steps. diff --git a/docs/resources/new_in_doc.md b/docs/resources/new_in_doc.md index 6de590077f0..52c31fc9a40 100644 --- a/docs/resources/new_in_doc.md +++ b/docs/resources/new_in_doc.md @@ -111,9 +111,9 @@ This page contains recent highlights and notable changes in [[= product_name =]] ### CDP -- Illustrated how to [export additional user data](cdp_data_customization.md#export-additional-user-data) -- Detailed [Ibexa Messenger support for large batches of data](cdp_data_export.md#ibexa-messenger-support-for-large-batches-of-data) -- Introduced the [CDP Monolog channel](cdp_data_export.md#cdp-monolog-channel) +- Illustrated how to [export additional user data](raptor_cdp_data_customization.md#export-additional-user-data) +- Detailed [Ibexa Messenger support for large batches of data](raptor_cdp_data_export.md#ibexa-messenger-support-for-large-batches-of-data) +- Introduced the [CDP Monolog channel](raptor_cdp_data_export.md#cdp-monolog-channel) - Added [`Ibexa\Contracts\Cdp` PHP API reference](/api/php_api/php_api_reference/namespaces/ibexa-contracts-cdp.html) ### Infrastructure diff --git a/docs/update_and_migration/from_4.6/update_from_4.6.md b/docs/update_and_migration/from_4.6/update_from_4.6.md index 70949ef3463..e6fe34c6600 100644 --- a/docs/update_and_migration/from_4.6/update_from_4.6.md +++ b/docs/update_and_migration/from_4.6/update_from_4.6.md @@ -579,7 +579,7 @@ composer require guzzlehttp/guzzle:^6.5 php-http/guzzle6-adapter:^2.0 ### Messenger support in CDP -If you're using [CDP](cdp.md) and haven't configured Ibexa Messenger yet, do so now. +If you're using [CDP](raptor_cdp.md) and haven't configured Ibexa Messenger yet, do so now. Follow the [Messenger setup instructions](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/background_tasks/#install-package) to continue. diff --git a/mkdocs.yml b/mkdocs.yml index 808be3db802..576291eea7b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -519,16 +519,16 @@ nav: - Recommendations blocks: recommendations/raptor_integration/recommendation_blocks.md - Custom recommendation rendering: recommendations/raptor_integration/custom_recommendation_rendering.md - CDP (Customer Data Platform): - - Customer Data Platform: cdp/cdp.md - - CDP guide: cdp/cdp_guide.md - - CDP installation: cdp/cdp_installation.md - - CDP activation: - - CDP activation: cdp/cdp_activation/cdp_activation.md - - CDP configuration: cdp/cdp_activation/cdp_configuration.md - - CDP data export: cdp/cdp_activation/cdp_data_export.md - - CDP add tracking: cdp/cdp_activation/cdp_add_tracking.md - - CDP data export schedule: cdp/cdp_data_export_schedule.md - - CDP data customization: cdp/cdp_data_customization.md + - Raptor CDP: raptor_cdp/raptor_cdp.md + - Raptor CDP guide: raptor_cdp/raptor_cdp_guide.md + - Raptor CDP installation: raptor_cdp/raptor_cdp_installation.md + - Raptor CDP activation: + - Raptor CDP activation: raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md + - Raptor CDP configuration: raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md + - Raptor CDP data export: raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md + - Raptor CDP add tracking: raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md + - Raptor CDP data export schedule: raptor_cdp/raptor_cdp_data_export_schedule.md + - Raptor CDP data customization: raptor_cdp/raptor_cdp_data_customization.md - Search: - Search: search/search.md - Search engines: @@ -1010,7 +1010,7 @@ extra: product_name_headless: 'Ibexa Headless' product_name_exp: 'Ibexa Experience' product_name_com: 'Ibexa Commerce' - product_name_cdp: 'Ibexa CDP' + product_name_cdp: 'Raptor CDP' product_name_connect: 'Ibexa Connect' product_name_cloud: 'Ibexa Cloud' product_name_oss: 'Ibexa OSS' diff --git a/plugins.yml b/plugins.yml index 39ea2aaeed2..8233a29cea2 100644 --- a/plugins.yml +++ b/plugins.yml @@ -608,7 +608,16 @@ plugins: 'ai_actions/configure_ai_actions.md': 'ai/ai_actions/configure_ai_actions.md' 'ai_actions/extend_ai_actions.md': 'ai/ai_actions/extend_ai_actions.md' - 'cdp/cdp_activation/cdp_add_clientside_tracking.md': 'cdp/cdp_activation/cdp_add_tracking.md' + 'cdp/cdp_activation/cdp_add_clientside_tracking.md': 'raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md' + 'cdp/cdp.md': 'raptor_cdp/raptor_cdp.md' + 'cdp/cdp_guide.md': 'raptor_cdp/raptor_cdp_guide.md' + 'cdp/cdp_installation.md': 'raptor_cdp/raptor_cdp_installation.md' + 'cdp/cdp_data_customization.md': 'raptor_cdp/raptor_cdp_data_customization.md' + 'cdp/cdp_data_export_schedule.md': 'raptor_cdp/raptor_cdp_data_export_schedule.md' + 'cdp/cdp_activation/cdp_activation.md': 'raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md' + 'cdp/cdp_activation/cdp_configuration.md': 'raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md' + 'cdp/cdp_activation/cdp_data_export.md': 'raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md' + 'cdp/cdp_activation/cdp_add_tracking.md': 'raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md' - llmstxt: From 152b5a20b81309b83e97959bd4854ed69c0217cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Fri, 31 Jul 2026 13:46:03 +0200 Subject: [PATCH 03/17] CDP article titles fixed --- docs/raptor_cdp/raptor_cdp.md | 4 ++-- .../raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md | 2 +- .../raptor_cdp_activation/raptor_cdp_add_tracking.md | 2 +- .../raptor_cdp_activation/raptor_cdp_configuration.md | 2 +- .../raptor_cdp_activation/raptor_cdp_data_export.md | 2 +- docs/raptor_cdp/raptor_cdp_data_customization.md | 2 +- docs/raptor_cdp/raptor_cdp_data_export_schedule.md | 2 +- docs/raptor_cdp/raptor_cdp_guide.md | 4 ++-- mkdocs.yml | 4 ++-- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/raptor_cdp/raptor_cdp.md b/docs/raptor_cdp/raptor_cdp.md index 062fba1964a..b552035c440 100644 --- a/docs/raptor_cdp/raptor_cdp.md +++ b/docs/raptor_cdp/raptor_cdp.md @@ -3,11 +3,11 @@ description: Raptor CDP is a software system designed to collect and organize cu edition: experience --- -# Customer Data Platform (CDP) +# [[= product_name_cdp =]] ## What is [[= product_name_cdp =]] -[[= product_name_cdp =]] helps you solve one of the hardest challenges facing business world today: building unique experiences for your customers. +[[= product_name_cdp =]] (Customer Data Platform) helps you solve one of the hardest challenges facing business world today: building unique experiences for your customers. With [[= product_name_cdp =]] you're able to track and aggregate data of your customers' activity on multiple channels. It allows you to create individual customer profiles that enable you to personalize their experience on your platform. diff --git a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md index 829410fce40..d5ed8638805 100644 --- a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md @@ -4,7 +4,7 @@ page_type: landing_page edition: experience --- -# CDP Activation +# [[= product_name_cdp =]] Activation Follow a step-by-step procedure that allows you to activate [[= product_name_cdp =]]. diff --git a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md index 651dcc4772f..fa4ba68a75a 100644 --- a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md @@ -3,7 +3,7 @@ description: Adding tracking in Raptor CDP. edition: experience --- -# Add tracking +# Tracking with [[= product_name_cdp =]] The final step is setting up a tracking script that identifies visitors and records their interactions. You can set it up in two ways: diff --git a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md index 8f82c5ae901..9c62213f493 100644 --- a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md @@ -3,7 +3,7 @@ description: Step-by-step configuration procedure of Raptor CDP. edition: experience --- -# Configuration +# [[= product_name_cdp =]] configuration To configure [[= product_name_cdp =]], use the `ibexa.system..cdp` [configuration key](configuration.md#configuration-files): diff --git a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md index 524a1c06ed0..a55a111cbe3 100644 --- a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md @@ -3,7 +3,7 @@ description: Step-by-step data export procedure in Raptor CDP. edition: experience --- -# Data export +# [[= product_name_cdp =]] data export You need to specify a source of the user data that [[= product_name_cdp =]] connects to. To do so, go to **Data Manager** in **Tools** section and select **Create new dataflow**. diff --git a/docs/raptor_cdp/raptor_cdp_data_customization.md b/docs/raptor_cdp/raptor_cdp_data_customization.md index b90297cb7b3..a7c9771912c 100644 --- a/docs/raptor_cdp/raptor_cdp_data_customization.md +++ b/docs/raptor_cdp/raptor_cdp_data_customization.md @@ -3,7 +3,7 @@ description: Data customization in Ibexa CDP. edition: experience --- -# Data customization +# [[= product_name_cdp =]] data customization You can customize user, content, and product data exported to CDP and you can control what field type information you want to export. By default, custom field types have basic export functionality. diff --git a/docs/raptor_cdp/raptor_cdp_data_export_schedule.md b/docs/raptor_cdp/raptor_cdp_data_export_schedule.md index cf9a78d0e1c..87f74a486b1 100644 --- a/docs/raptor_cdp/raptor_cdp_data_export_schedule.md +++ b/docs/raptor_cdp/raptor_cdp_data_export_schedule.md @@ -4,7 +4,7 @@ edition: experience month_change: true --- -# CDP data export schedule +# [[= product_name_cdp =]] data export schedule ## Configuration key diff --git a/docs/raptor_cdp/raptor_cdp_guide.md b/docs/raptor_cdp/raptor_cdp_guide.md index 356e31ed605..8a2216cc726 100644 --- a/docs/raptor_cdp/raptor_cdp_guide.md +++ b/docs/raptor_cdp/raptor_cdp_guide.md @@ -3,11 +3,11 @@ description: The Raptor CDP product guide describes all the possibilities that t edition: experience --- -# Raptor CDP (Customer Data Platform) product guide +# [[= product_name_cdp =]] product guide ## What is [[= product_name_cdp =]] -[[= product_name_cdp =]] is a Customer Data Platform module that helps you build unique and memorable experiences for your customers. +[[= product_name_cdp =]] (Customer Data Platform) module helps you build unique and memorable experiences for your customers. By using [[= product_name_cdp =]] you can monitor and compile data about your customers' activity on multiple channels. It also allows you to create individual customer profiles so you can customize their experience on your platform. diff --git a/mkdocs.yml b/mkdocs.yml index 576291eea7b..93bd7e98c0e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -518,7 +518,7 @@ nav: - Tracking with PHP API: recommendations/raptor_integration/tracking_php_api.md - Recommendations blocks: recommendations/raptor_integration/recommendation_blocks.md - Custom recommendation rendering: recommendations/raptor_integration/custom_recommendation_rendering.md - - CDP (Customer Data Platform): + - Customer Data Platform: - Raptor CDP: raptor_cdp/raptor_cdp.md - Raptor CDP guide: raptor_cdp/raptor_cdp_guide.md - Raptor CDP installation: raptor_cdp/raptor_cdp_installation.md @@ -526,7 +526,7 @@ nav: - Raptor CDP activation: raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md - Raptor CDP configuration: raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md - Raptor CDP data export: raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md - - Raptor CDP add tracking: raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md + - Tracking with Raptor CDP: raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md - Raptor CDP data export schedule: raptor_cdp/raptor_cdp_data_export_schedule.md - Raptor CDP data customization: raptor_cdp/raptor_cdp_data_customization.md - Search: From 05ffaa08ffcf3ffbbe4ef46ca40ee6020fac402f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Fri, 31 Jul 2026 17:35:11 +0200 Subject: [PATCH 04/17] Rename Engage to Qualifio --- .../packages/ibexa_connector_qualifio.yaml | 0 docs/ibexa_products/editions.md | 2 +- docs/ibexa_products/ibexa_experience.md | 6 ++-- .../img/{ibexa_engage.png => qualifio.png} | Bin .../create_campaign.md | 8 ++--- .../img/campaign_block.png | Bin .../img/campaign_custom_tag.png | Bin .../img/configure_qualifio.png} | Bin .../img/create_scenario.png | Bin .../img/create_webhook.png | Bin .../install_qualifio.md} | 8 ++--- .../integrate_ibexa_connect.md | 8 ++--- .../ibexa_engage.md => qualifio/qualifio.md} | 8 ++--- docs/raptor_cdp/raptor_cdp.md | 2 +- docs/raptor_cdp/raptor_cdp_guide.md | 2 +- mkdocs.yml | 33 +++++++++--------- plugins.yml | 4 +++ 17 files changed, 42 insertions(+), 39 deletions(-) rename code_samples/{ibexa_engage => qualifio}/config/packages/ibexa_connector_qualifio.yaml (100%) rename docs/ibexa_products/img/{ibexa_engage.png => qualifio.png} (100%) rename docs/{ibexa_engage => qualifio}/create_campaign.md (88%) rename docs/{ibexa_engage => qualifio}/img/campaign_block.png (100%) rename docs/{ibexa_engage => qualifio}/img/campaign_custom_tag.png (100%) rename docs/{ibexa_engage/img/configure_ibexa_engage.png => qualifio/img/configure_qualifio.png} (100%) rename docs/{ibexa_engage => qualifio}/img/create_scenario.png (100%) rename docs/{ibexa_engage => qualifio}/img/create_webhook.png (100%) rename docs/{ibexa_engage/install_ibexa_engage.md => qualifio/install_qualifio.md} (88%) rename docs/{ibexa_engage => qualifio}/integrate_ibexa_connect.md (90%) rename docs/{ibexa_engage/ibexa_engage.md => qualifio/qualifio.md} (79%) diff --git a/code_samples/ibexa_engage/config/packages/ibexa_connector_qualifio.yaml b/code_samples/qualifio/config/packages/ibexa_connector_qualifio.yaml similarity index 100% rename from code_samples/ibexa_engage/config/packages/ibexa_connector_qualifio.yaml rename to code_samples/qualifio/config/packages/ibexa_connector_qualifio.yaml diff --git a/docs/ibexa_products/editions.md b/docs/ibexa_products/editions.md index 4e585d8bbfe..9768fc376e9 100644 --- a/docs/ibexa_products/editions.md +++ b/docs/ibexa_products/editions.md @@ -48,7 +48,7 @@ Compare all features available in [[= product_name_headless =]], [[= product_nam | [Customer Portal](customer_portal_guide.md) | | ✔ | ✔ | | [Segments](segments_admin_panel.md) | | ✔ | ✔ | | [Recent activity](recent_activity.md) | | ✔ | ✔ | -| [[[= product_name_engage =]] add-on]([[= user_doc =]]/ibexa_engage/ibexa_engage/) | | ✔ | ✔ | +| [[[= product_name_engage =]] add-on]([[= user_doc =]]/qualifio/qualifio/) | | ✔ | ✔ | | [[[= product_name_cdp =]] (Customer Data Platform) add-on](/raptor_cdp/raptor_cdp_guide.md) | | ✔ | ✔ | | [Order management](order_management.md) | | | ✔ | | [Payment management](payment.md) | | | ✔ | diff --git a/docs/ibexa_products/ibexa_experience.md b/docs/ibexa_products/ibexa_experience.md index e2cc5214bd3..aa1f492e803 100644 --- a/docs/ibexa_products/ibexa_experience.md +++ b/docs/ibexa_products/ibexa_experience.md @@ -100,7 +100,7 @@ You can assign users to different recommendation groups and create advanced logi ![Segments](segments.png) -#### Customer Data Platform (CDP) +#### [[= product_name_cdp =]] (Customer Data Platform) [[[= product_name_cdp =]]](/raptor_cdp/raptor_cdp_guide.md) is an add-on available for both Experience and [Commerce](ibexa_commerce.md) editions of [[= product_name =]]. To use it, you must make arrangements with [[= product_name_base =]] to define the initial configuration. @@ -114,13 +114,13 @@ This central data storage supports business growth with a scalable infrastructur #### [[= product_name_engage =]] -Another add-on available for Experience and [Commerce](ibexa_commerce.md) edition is [Ibexa Engage](ibexa_engage.md). +Another add-on available for Experience and [Commerce](ibexa_commerce.md) edition is [[[= product_name_engage =]]](/qualifio/qualifio.md). To use it, you must make arrangements with [[= product_name_base =]] to define the initial configuration, and then get and set up a user account. [[= product_name_engage =]] is a data collection tool. It gives you the ability to use the [Qualifio](https://qualifio.com/) tools to engage your audiences. You can use Qualifio's existing templates and interactive elements, such as quizzes, pools, and forms, to create visually appealing, customized campaigns and collect important data. To promote your campaign, you can add a Campaign block to a page in Page Builder or embed a campaign within the Rich Text field by using a Campaign custom tag. -![Ibexa Engage](ibexa_engage.png) +![Qualifio](qualifio.png) ### Use cases diff --git a/docs/ibexa_products/img/ibexa_engage.png b/docs/ibexa_products/img/qualifio.png similarity index 100% rename from docs/ibexa_products/img/ibexa_engage.png rename to docs/ibexa_products/img/qualifio.png diff --git a/docs/ibexa_engage/create_campaign.md b/docs/qualifio/create_campaign.md similarity index 88% rename from docs/ibexa_engage/create_campaign.md rename to docs/qualifio/create_campaign.md index dd789be337a..3f36c838a61 100644 --- a/docs/ibexa_engage/create_campaign.md +++ b/docs/qualifio/create_campaign.md @@ -1,11 +1,11 @@ --- -description: Create campaign with Ibexa Engage. +description: Create a campaign with Qualifio. edition: experience --- -# Create campaign +# Create [[= product_name_engage =]] campaign -[Campaign]([[= user_doc =]]/ibexa_engage/ibexa_engage/#campaign) is a set of concepts, divided into steps, that the user can configure. +[Campaign]([[= user_doc =]]/qualifio/qualifio/#campaign) is a set of concepts, divided into steps, that the user can configure. It can contain, for example, a welcome screen, an interaction element, a form step, and an exit screen. To create new campaign, you need to use Qualifio Manager. You can use Qualifio's existing templates and interactive elements, such as quizzes, pools, and forms, to create visually appealing, customized campaigns. @@ -18,7 +18,7 @@ For more information about creating and managing campaigns, see [Qualifio docume ## Publication channels Each campaign includes a minimum of one publication channel that you can choose from the three options the platform provides for publishing a campaign. -For more information about publication channels, see [Publication channel]([[= user_doc =]]/ibexa_engage/ibexa_engage/#publication-channel) in User Documentation. +For more information about publication channels, see [Publication channel]([[= user_doc =]]/qualifio/qualifio/#publication-channel) in User Documentation. ## Use Campaign block in Page Builder diff --git a/docs/ibexa_engage/img/campaign_block.png b/docs/qualifio/img/campaign_block.png similarity index 100% rename from docs/ibexa_engage/img/campaign_block.png rename to docs/qualifio/img/campaign_block.png diff --git a/docs/ibexa_engage/img/campaign_custom_tag.png b/docs/qualifio/img/campaign_custom_tag.png similarity index 100% rename from docs/ibexa_engage/img/campaign_custom_tag.png rename to docs/qualifio/img/campaign_custom_tag.png diff --git a/docs/ibexa_engage/img/configure_ibexa_engage.png b/docs/qualifio/img/configure_qualifio.png similarity index 100% rename from docs/ibexa_engage/img/configure_ibexa_engage.png rename to docs/qualifio/img/configure_qualifio.png diff --git a/docs/ibexa_engage/img/create_scenario.png b/docs/qualifio/img/create_scenario.png similarity index 100% rename from docs/ibexa_engage/img/create_scenario.png rename to docs/qualifio/img/create_scenario.png diff --git a/docs/ibexa_engage/img/create_webhook.png b/docs/qualifio/img/create_webhook.png similarity index 100% rename from docs/ibexa_engage/img/create_webhook.png rename to docs/qualifio/img/create_webhook.png diff --git a/docs/ibexa_engage/install_ibexa_engage.md b/docs/qualifio/install_qualifio.md similarity index 88% rename from docs/ibexa_engage/install_ibexa_engage.md rename to docs/qualifio/install_qualifio.md index 8f4177890f4..2c87bb23838 100644 --- a/docs/ibexa_engage/install_ibexa_engage.md +++ b/docs/qualifio/install_qualifio.md @@ -1,9 +1,9 @@ --- -description: Install and configure [[= product_name_engage =]]. +description: Install and configure Qualifio. edition: experience --- -# [[= product_name_engage =]] +# Install [[= product_name_engage =]] [[= product_name_engage =]] is a data collection tool. It enables you to engage your audiences by using the [Qualifio](https://qualifio.com/) tools. You can use interactive content to gather valuable data, for example, customer data or recent orders list, and create connections. @@ -16,7 +16,7 @@ To use [[= product_name_engage =]], you must make arrangements with [[= product_ [[= product_name_base =]] team creates and provides user account. An invitation link is sent during the setup process. -For more information, see [[[= product_name_engage =]] in User Documentation]([[= user_doc =]]/ibexa_engage/ibexa_engage/#request-access). +For more information, see [[[= product_name_engage =]] in User Documentation]([[= user_doc =]]/qualifio/qualifio/#request-access). ## Install [[= product_name_engage =]] @@ -40,7 +40,7 @@ This command adds to your project configuration files required for using [[= pro In `config/packages` directory add the following `ibexa_connector_qualifio.yaml` [YAML configuration](configuration.md#configuration-files): ``` yaml -[[= include_file('code_samples/ibexa_engage/config/packages/ibexa_connector_qualifio.yaml') =]] +[[= include_file('code_samples/qualifio/config/packages/ibexa_connector_qualifio.yaml') =]] ``` - `client_id` - an identifier of the user. diff --git a/docs/ibexa_engage/integrate_ibexa_connect.md b/docs/qualifio/integrate_ibexa_connect.md similarity index 90% rename from docs/ibexa_engage/integrate_ibexa_connect.md rename to docs/qualifio/integrate_ibexa_connect.md index 560a5d31e41..302d59db7df 100644 --- a/docs/ibexa_engage/integrate_ibexa_connect.md +++ b/docs/qualifio/integrate_ibexa_connect.md @@ -1,9 +1,9 @@ --- -description: Integrate Ibexa Engage with Ibexa Connect. +description: Integrate Qualifio with Ibexa Connect. edition: experience --- -# Use Ibexa Connect +# Integrate with [[= product_name_connect =]] You can use [[[= product_name_connect =]]]([[= connect_doc =]]/general/ibexa_connect/) to create workflows. [[= product_name_engage =]] collects user data and passes it directly to [[= product_name_connect =]]. @@ -11,7 +11,7 @@ With this data, you can create scenarios, for example, to add a user to newslett For more information, see [[[= product_name_connect =]] documentation]([[= connect_doc =]]/). -## Integrate [[= product_name_engage =]] with [[= product_name_connect =]] +## Use [[= product_name_connect =]] Webhooks provide a powerful way to transfer data between applications in real-time. You can use webhooks to connect [[= product_name_engage =]] with [[= product_name_connect =]] - integration platform (iPaaS). @@ -52,7 +52,7 @@ To do it, perform the following actions:: 3\. Paste the URL from the clipboard into **Webhook Host** field and click **Save**. -![Configure Ibexa Engage](configure_ibexa_engage.png "Configure Ibexa Engage") +![Configure Qualifio](configure_qualifio.png "Configure Qualifio") 4\. Then, go to **Engage** -> **Integrations** -> **Push rules** to define the default or specific rules for new campaign or website. Select the created webhook. diff --git a/docs/ibexa_engage/ibexa_engage.md b/docs/qualifio/qualifio.md similarity index 79% rename from docs/ibexa_engage/ibexa_engage.md rename to docs/qualifio/qualifio.md index 5fc2515d68d..84d8005092f 100644 --- a/docs/ibexa_engage/ibexa_engage.md +++ b/docs/qualifio/qualifio.md @@ -4,7 +4,7 @@ edition: experience month_change: false --- -# [[= product_name_engage =]] +# [[= product_name_engage =]] integration [[= product_name_engage =]] is a data collection tool. It gives you the ability to use the [Qualifio](https://qualifio.com/) tools to engage your audiences. @@ -12,7 +12,7 @@ You can use interactive content to build relationships and collect important dat You can also integrate [[= product_name_engage =]] with [[= product_name_connect =]] to create workflows. [[= cards([ - "ibexa_engage/install_ibexa_engage", - "ibexa_engage/create_campaign", - "ibexa_engage/integrate_ibexa_connect", + "qualifio/install_qualifio", + "qualifio/create_campaign", + "qualifio/integrate_ibexa_connect", ], columns=3) =]] diff --git a/docs/raptor_cdp/raptor_cdp.md b/docs/raptor_cdp/raptor_cdp.md index b552035c440..918ebbdf9d3 100644 --- a/docs/raptor_cdp/raptor_cdp.md +++ b/docs/raptor_cdp/raptor_cdp.md @@ -3,7 +3,7 @@ description: Raptor CDP is a software system designed to collect and organize cu edition: experience --- -# [[= product_name_cdp =]] +# [[= product_name_cdp =]] integration ## What is [[= product_name_cdp =]] diff --git a/docs/raptor_cdp/raptor_cdp_guide.md b/docs/raptor_cdp/raptor_cdp_guide.md index 8a2216cc726..b4edbdf0e69 100644 --- a/docs/raptor_cdp/raptor_cdp_guide.md +++ b/docs/raptor_cdp/raptor_cdp_guide.md @@ -85,7 +85,7 @@ For more information, see [CDP data export](raptor_cdp_data_export.md). With [[= product_name_cdp =]], you can export field types and field type values. They're exported with metadata and attributes, for example, ID, field definition name, type, or value. -For more information, see [data customization](raptor_cdp_data_customization.md#data-customization) documentation in Developer Documentation. +For more information, see [data customization](raptor_cdp_data_customization.md) documentation in Developer Documentation. ### Client-side Tracking diff --git a/mkdocs.yml b/mkdocs.yml index 93bd7e98c0e..02775589ffd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -374,7 +374,7 @@ nav: - Product catalog: product_catalog/product_catalog.md - Product catalog guide: product_catalog/product_catalog_guide.md - Quable integration: - - Quable Integration: product_catalog/quable/quable.md + - Quable integration: product_catalog/quable/quable.md - Quable product guide: product_catalog/quable/quable_guide.md - Install Quable: product_catalog/quable/install_quable.md - Configure Quable: product_catalog/quable/configure_quable_connector.md @@ -461,11 +461,11 @@ nav: - Create Customer Portal: customer_management/cp_page_builder.md - Customer Portal Applications: customer_management/cp_applications.md - Create registration form: customer_management/create_user_registration_form.md - - Ibexa Engage: - - Ibexa Engage: ibexa_engage/ibexa_engage.md - - Install Ibexa Engage: ibexa_engage/install_ibexa_engage.md - - Create campaign with Ibexa Engage: ibexa_engage/create_campaign.md - - Integrate Ibexa Engage with Ibexa Connect: ibexa_engage/integrate_ibexa_connect.md + - Data collection: + - Qualifio integration: qualifio/qualifio.md + - Install Qualifio: qualifio/install_qualifio.md + - Create campaign with Qualifio: qualifio/create_campaign.md + - Integrate Qualifio with Ibexa Connect: qualifio/integrate_ibexa_connect.md - Multisite: - Multisite: multisite/multisite.md - Multisite configuration: multisite/multisite_configuration.md @@ -509,17 +509,16 @@ nav: - Customer groups: users/customer_groups.md - Segment API: users/segment_api.md - Recommendations: - - Integration with Raptor: - - Raptor connector: recommendations/raptor_integration/raptor_connector.md - - Raptor connector guide: recommendations/raptor_integration/raptor_connector_guide.md - - Installation and configuration: recommendations/raptor_integration/connector_installation_configuration.md - - Tracking functions: recommendations/raptor_integration/tracking_functions.md - - Hybrid tracking: recommendations/raptor_integration/hybrid_tracking.md - - Tracking with PHP API: recommendations/raptor_integration/tracking_php_api.md - - Recommendations blocks: recommendations/raptor_integration/recommendation_blocks.md - - Custom recommendation rendering: recommendations/raptor_integration/custom_recommendation_rendering.md + - Raptor integration: recommendations/raptor_integration/raptor_connector.md + - Raptor connector guide: recommendations/raptor_integration/raptor_connector_guide.md + - Installation and configuration: recommendations/raptor_integration/connector_installation_configuration.md + - Tracking functions: recommendations/raptor_integration/tracking_functions.md + - Hybrid tracking: recommendations/raptor_integration/hybrid_tracking.md + - Tracking with PHP API: recommendations/raptor_integration/tracking_php_api.md + - Recommendations blocks: recommendations/raptor_integration/recommendation_blocks.md + - Custom recommendation rendering: recommendations/raptor_integration/custom_recommendation_rendering.md - Customer Data Platform: - - Raptor CDP: raptor_cdp/raptor_cdp.md + - Raptor CDP integration: raptor_cdp/raptor_cdp.md - Raptor CDP guide: raptor_cdp/raptor_cdp_guide.md - Raptor CDP installation: raptor_cdp/raptor_cdp_installation.md - Raptor CDP activation: @@ -1014,7 +1013,7 @@ extra: product_name_connect: 'Ibexa Connect' product_name_cloud: 'Ibexa Cloud' product_name_oss: 'Ibexa OSS' - product_name_engage: 'Ibexa Engage' + product_name_engage: 'Qualifio' pim_product_name: 'Quable' eol_versions: ['2.5', '3.3'] diff --git a/plugins.yml b/plugins.yml index 8233a29cea2..a7c1c044bf1 100644 --- a/plugins.yml +++ b/plugins.yml @@ -609,6 +609,10 @@ plugins: 'ai_actions/extend_ai_actions.md': 'ai/ai_actions/extend_ai_actions.md' 'cdp/cdp_activation/cdp_add_clientside_tracking.md': 'raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md' + 'ibexa_engage/ibexa_engage.md': 'qualifio/qualifio.md' + 'ibexa_engage/install_ibexa_engage.md': 'qualifio/install_qualifio.md' + 'ibexa_engage/create_campaign.md': 'qualifio/create_campaign.md' + 'ibexa_engage/integrate_ibexa_connect.md': 'qualifio/integrate_ibexa_connect.md' 'cdp/cdp.md': 'raptor_cdp/raptor_cdp.md' 'cdp/cdp_guide.md': 'raptor_cdp/raptor_cdp_guide.md' 'cdp/cdp_installation.md': 'raptor_cdp/raptor_cdp_installation.md' From d55ddd912629c1a380928f382c5b2ea82d8d09a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:11:06 +0200 Subject: [PATCH 05/17] Adjust article titles --- .../raptor_cdp_activation.md | 2 +- .../raptor_cdp_add_tracking.md | 2 +- .../raptor_cdp_configuration.md | 2 +- .../raptor_cdp_data_export.md | 2 +- .../raptor_cdp_data_customization.md | 2 +- .../raptor_cdp_data_export_schedule.md | 2 +- docs/raptor_cdp/raptor_cdp_installation.md | 2 +- .../connector_installation_configuration.md | 2 +- .../custom_recommendation_rendering.md | 2 +- .../raptor_integration/hybrid_tracking.md | 2 +- .../raptor_integration/raptor_connector.md | 4 +-- .../raptor_connector_guide.md | 10 +++--- .../raptor_integration/tracking_functions.md | 2 +- mkdocs.yml | 31 ++++++++++--------- 14 files changed, 34 insertions(+), 33 deletions(-) diff --git a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md index d5ed8638805..d436a15a1c7 100644 --- a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md @@ -4,7 +4,7 @@ page_type: landing_page edition: experience --- -# [[= product_name_cdp =]] Activation +# Activate [[= product_name_cdp =]] Follow a step-by-step procedure that allows you to activate [[= product_name_cdp =]]. diff --git a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md index fa4ba68a75a..81ee5236537 100644 --- a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md @@ -3,7 +3,7 @@ description: Adding tracking in Raptor CDP. edition: experience --- -# Tracking with [[= product_name_cdp =]] +# Track with [[= product_name_cdp =]] The final step is setting up a tracking script that identifies visitors and records their interactions. You can set it up in two ways: diff --git a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md index 9c62213f493..3723fdc21cf 100644 --- a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md @@ -3,7 +3,7 @@ description: Step-by-step configuration procedure of Raptor CDP. edition: experience --- -# [[= product_name_cdp =]] configuration +# Configure [[= product_name_cdp =]] To configure [[= product_name_cdp =]], use the `ibexa.system..cdp` [configuration key](configuration.md#configuration-files): diff --git a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md index a55a111cbe3..92578e0f63f 100644 --- a/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md +++ b/docs/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md @@ -3,7 +3,7 @@ description: Step-by-step data export procedure in Raptor CDP. edition: experience --- -# [[= product_name_cdp =]] data export +# Export [[= product_name_cdp =]] data You need to specify a source of the user data that [[= product_name_cdp =]] connects to. To do so, go to **Data Manager** in **Tools** section and select **Create new dataflow**. diff --git a/docs/raptor_cdp/raptor_cdp_data_customization.md b/docs/raptor_cdp/raptor_cdp_data_customization.md index a7c9771912c..54662eb2c71 100644 --- a/docs/raptor_cdp/raptor_cdp_data_customization.md +++ b/docs/raptor_cdp/raptor_cdp_data_customization.md @@ -3,7 +3,7 @@ description: Data customization in Ibexa CDP. edition: experience --- -# [[= product_name_cdp =]] data customization +# Customize [[= product_name_cdp =]] data You can customize user, content, and product data exported to CDP and you can control what field type information you want to export. By default, custom field types have basic export functionality. diff --git a/docs/raptor_cdp/raptor_cdp_data_export_schedule.md b/docs/raptor_cdp/raptor_cdp_data_export_schedule.md index 87f74a486b1..7b7a189e59d 100644 --- a/docs/raptor_cdp/raptor_cdp_data_export_schedule.md +++ b/docs/raptor_cdp/raptor_cdp_data_export_schedule.md @@ -4,7 +4,7 @@ edition: experience month_change: true --- -# [[= product_name_cdp =]] data export schedule +# Schedule [[= product_name_cdp =]] data export ## Configuration key diff --git a/docs/raptor_cdp/raptor_cdp_installation.md b/docs/raptor_cdp/raptor_cdp_installation.md index 16cbd7707aa..2d5e67cf542 100644 --- a/docs/raptor_cdp/raptor_cdp_installation.md +++ b/docs/raptor_cdp/raptor_cdp_installation.md @@ -3,7 +3,7 @@ description: Installation of standalone Raptor CDP package. edition: experience --- -# [[= product_name_cdp =]] installation +# Install [[= product_name_cdp =]] There are three steps required to install [[= product_name_cdp =]]. First, you need to register your [[= product_name_cdp =]] account, then you can download a CDP package and update the configuration. diff --git a/docs/recommendations/raptor_integration/connector_installation_configuration.md b/docs/recommendations/raptor_integration/connector_installation_configuration.md index 75e626a5164..69e30633451 100644 --- a/docs/recommendations/raptor_integration/connector_installation_configuration.md +++ b/docs/recommendations/raptor_integration/connector_installation_configuration.md @@ -3,7 +3,7 @@ description: To configure the Raptor integration, follow the step-by-step proced month_change: true --- -# Configuration procedure +# Install and configure Raptor To configure the [Raptor](https://www.raptorservices.com/) integration add-on, follow the step-by-step procedure below. diff --git a/docs/recommendations/raptor_integration/custom_recommendation_rendering.md b/docs/recommendations/raptor_integration/custom_recommendation_rendering.md index fb79746e695..3ff45a2abcf 100644 --- a/docs/recommendations/raptor_integration/custom_recommendation_rendering.md +++ b/docs/recommendations/raptor_integration/custom_recommendation_rendering.md @@ -3,7 +3,7 @@ description: Use existing controllers to render recommendations outside the Page month_change: true --- -# Custom recommendation rendering +# Render recommendations You can use existing controllers to render [recommendations](recommendation_blocks.md) outside the Page Builder. The controllers responsible for rendering block recommendations on the front-end are independent and can be used to render recommendations for specific strategies. diff --git a/docs/recommendations/raptor_integration/hybrid_tracking.md b/docs/recommendations/raptor_integration/hybrid_tracking.md index 6a9a75f2240..09dabb35ba8 100644 --- a/docs/recommendations/raptor_integration/hybrid_tracking.md +++ b/docs/recommendations/raptor_integration/hybrid_tracking.md @@ -3,7 +3,7 @@ description: Enable hybrid tracking to avoid ad blockers and proxy events throug month_change: true --- -# Raptor hybrid tracking +# Hybrid tracking Hybrid tracking mode is an additional tracking mode available alongside [`client` and `server`](tracking_functions.md). In hybrid mode, the bundle includes a client-side [shim](https://en.wikipedia.org/wiki/Shim_(computing)) that captures Raptor tracking events and sends them to a same-origin endpoint instead of communicating directly with Raptor SaaS. diff --git a/docs/recommendations/raptor_integration/raptor_connector.md b/docs/recommendations/raptor_integration/raptor_connector.md index c266a2b4ce8..1102055ca12 100644 --- a/docs/recommendations/raptor_integration/raptor_connector.md +++ b/docs/recommendations/raptor_integration/raptor_connector.md @@ -4,9 +4,9 @@ page_type: landing_page month_change: false --- -# Raptor connector +# Raptor integration -The [Raptor](https://www.raptorservices.com/) connector is an add-on that provides a seamless integration between [[= product_name =]] and Raptor recommendation engine. +The [Raptor](https://www.raptorservices.com/) integration is an add-on that provides a seamless integration between [[= product_name =]] and Raptor recommendation engine. Its primary goal is to enable editors and managers to deliver personalized experiences across digital channels, which helps increase conversion rates, drive sales, and improve user engagement. diff --git a/docs/recommendations/raptor_integration/raptor_connector_guide.md b/docs/recommendations/raptor_integration/raptor_connector_guide.md index 3814914e758..1662a7c035f 100644 --- a/docs/recommendations/raptor_integration/raptor_connector_guide.md +++ b/docs/recommendations/raptor_integration/raptor_connector_guide.md @@ -3,14 +3,14 @@ description: Discover Raptor integration - an add-on focused on recommendations month_change: true --- -# Raptor integration guide +# Raptor integration product guide Discover [Raptor](https://www.raptorservices.com/) integration - an add-on that is focused on recommendations and tracking customer behaviors. -It includes Raptor connector with tracking scripts and events, used to track and analyze customer behaviors, and a set of Recommendation blocks. +It includes the connector with tracking scripts and events that are used to track and analyze customer behaviors, and a set of Recommendation blocks. -## What is Raptor connector +## What is Raptor integration -The [Raptor connector](raptor_connector.md) provides a seamless integration between [[= product_name =]] and Raptor recommendation engine. +The [Raptor integration](raptor_connector.md) provides a seamless integration between [[= product_name =]] and the Raptor recommendation engine. Its primary goal is to enable editors and managers to deliver personalized experiences across digital channels, which helps to increase conversion rates, drive sales, and improve user engagement. @@ -56,7 +56,7 @@ This gives you the data you need to better understand user behavior, improve rec ### Recommendation blocks -The Raptor Integration add-on provides a set of ready-to-use recommendation blocks that can be added directly in the [Page Builder](page_builder_guide.md). +The Raptor integration add-on provides a set of ready-to-use recommendation blocks that can be added directly in the [Page Builder](page_builder_guide.md). These blocks can be configured to adjust how they work and what they display. Content, Product, and Commerce recommendations can be placed on landing pages using these components. diff --git a/docs/recommendations/raptor_integration/tracking_functions.md b/docs/recommendations/raptor_integration/tracking_functions.md index 4fc378fef8b..e3b0b8f7c3d 100644 --- a/docs/recommendations/raptor_integration/tracking_functions.md +++ b/docs/recommendations/raptor_integration/tracking_functions.md @@ -3,7 +3,7 @@ description: Integrate the tracking script to collect user interactions. month_change: true --- -# Raptor tracking functions +# Tracking functions [Raptor connector](raptor_connector.md) introduces [visit tracking functionality](https://content.raptorservices.com/help-center/introduction-to-tracking-documentation) for collecting user interactions with products and content. The implementation includes product visit tracking with mapping to tracking parameters, and Twig functions for straightforward integration. diff --git a/mkdocs.yml b/mkdocs.yml index 02775589ffd..952505e18e9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -510,24 +510,25 @@ nav: - Segment API: users/segment_api.md - Recommendations: - Raptor integration: recommendations/raptor_integration/raptor_connector.md - - Raptor connector guide: recommendations/raptor_integration/raptor_connector_guide.md - - Installation and configuration: recommendations/raptor_integration/connector_installation_configuration.md - - Tracking functions: recommendations/raptor_integration/tracking_functions.md - - Hybrid tracking: recommendations/raptor_integration/hybrid_tracking.md - - Tracking with PHP API: recommendations/raptor_integration/tracking_php_api.md - - Recommendations blocks: recommendations/raptor_integration/recommendation_blocks.md - - Custom recommendation rendering: recommendations/raptor_integration/custom_recommendation_rendering.md + - Raptor integration guide: recommendations/raptor_integration/raptor_connector_guide.md + - Install and configure Raptor: recommendations/raptor_integration/connector_installation_configuration.md + - Track with Raptor: + - Tracking functions: recommendations/raptor_integration/tracking_functions.md + - Hybrid tracking: recommendations/raptor_integration/hybrid_tracking.md + - Tracking with PHP API: recommendations/raptor_integration/tracking_php_api.md + - Recommendation blocks: recommendations/raptor_integration/recommendation_blocks.md + - Render recommendations: recommendations/raptor_integration/custom_recommendation_rendering.md - Customer Data Platform: - Raptor CDP integration: raptor_cdp/raptor_cdp.md - Raptor CDP guide: raptor_cdp/raptor_cdp_guide.md - - Raptor CDP installation: raptor_cdp/raptor_cdp_installation.md - - Raptor CDP activation: - - Raptor CDP activation: raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md - - Raptor CDP configuration: raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md - - Raptor CDP data export: raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md - - Tracking with Raptor CDP: raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md - - Raptor CDP data export schedule: raptor_cdp/raptor_cdp_data_export_schedule.md - - Raptor CDP data customization: raptor_cdp/raptor_cdp_data_customization.md + - Install Raptor CDP: raptor_cdp/raptor_cdp_installation.md + - Activate Raptor CDP: + - Activate Raptor CDP: raptor_cdp/raptor_cdp_activation/raptor_cdp_activation.md + - Configure Raptor CDP: raptor_cdp/raptor_cdp_activation/raptor_cdp_configuration.md + - Export Raptor CDP data: raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md + - Track with Raptor CDP: raptor_cdp/raptor_cdp_activation/raptor_cdp_add_tracking.md + - Schedule Raptor CDP data export: raptor_cdp/raptor_cdp_data_export_schedule.md + - Customize Raptor CDP data: raptor_cdp/raptor_cdp_data_customization.md - Search: - Search: search/search.md - Search engines: From ad77652e020d94891ee921150983446bd82bca5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:27:33 +0200 Subject: [PATCH 06/17] Fix leftovers --- docs/administration/project_organization/bundles.md | 4 ++-- docs/ibexa_products/img/cdp.drawio | 4 ++-- docs/ibexa_products/img/customizable_dashboard.drawio | 4 ++-- docs/ibexa_products/img/form_builder.drawio | 4 ++-- docs/ibexa_products/img/ibexa_engage.drawio | 4 ++-- docs/ibexa_products/img/segments.drawio | 4 ++-- docs/qualifio/qualifio.md | 2 +- docs/raptor_cdp/raptor_cdp_data_customization.md | 2 +- docs/raptor_cdp/raptor_cdp_installation.md | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/administration/project_organization/bundles.md b/docs/administration/project_organization/bundles.md index c9f0b97f283..8d8202490e4 100644 --- a/docs/administration/project_organization/bundles.md +++ b/docs/administration/project_organization/bundles.md @@ -113,7 +113,7 @@ To remove a bundle (either one you created yourself, or an out-of-the-box one th |ibexa/permissions|Additional permission functionalities| |ibexa/segmentation|Segment functionality for profiling the content displayed to specific users| |ibexa/site-factory|Enables configuration of sites from UI| -|ibexa/engage|Enables integration with [Qualifio Engage platform](https://developers.qualifio.com/docs/engage/)| +|ibexa/engage|Enables integration with [[[= product_name_engage =]]](https://developers.qualifio.com/docs/engage/)| ## [[= product_name_com =]] packages @@ -138,7 +138,7 @@ The following packages are optional and can be installed independently. |Bundle|Description| |---------|-----------| |[ibexa/automated-translation](https://github.com/ibexa/automated-translation)|Automated translation of content using [Google Translate or DeepL](automated_translations.md)| -|ibexa/cdp|Integration with [Raptor CDP](raptor_cdp.md)| +|ibexa/cdp|Integration with [[[= product_name_cdp =]]](raptor_cdp.md)| |[ibexa/cloud](https://github.com/ibexa/cloud)|Integration with [[[= product_name_cloud =]]](/ibexa_cloud/ibexa_cloud.md)| In addition, you can extend the capabilities of your project by installing additional [LTS Updates](editions.md#lts-updates). diff --git a/docs/ibexa_products/img/cdp.drawio b/docs/ibexa_products/img/cdp.drawio index 16df86642a3..2baf3661d1c 100644 --- a/docs/ibexa_products/img/cdp.drawio +++ b/docs/ibexa_products/img/cdp.drawio @@ -22,7 +22,7 @@ - + @@ -298,7 +298,7 @@ - + diff --git a/docs/ibexa_products/img/customizable_dashboard.drawio b/docs/ibexa_products/img/customizable_dashboard.drawio index ba4995167e3..2766db435ca 100644 --- a/docs/ibexa_products/img/customizable_dashboard.drawio +++ b/docs/ibexa_products/img/customizable_dashboard.drawio @@ -22,7 +22,7 @@ - + @@ -298,7 +298,7 @@ - + diff --git a/docs/ibexa_products/img/form_builder.drawio b/docs/ibexa_products/img/form_builder.drawio index dedbb29ca89..4df1ac76b1c 100644 --- a/docs/ibexa_products/img/form_builder.drawio +++ b/docs/ibexa_products/img/form_builder.drawio @@ -22,7 +22,7 @@ - + @@ -298,7 +298,7 @@ - + diff --git a/docs/ibexa_products/img/ibexa_engage.drawio b/docs/ibexa_products/img/ibexa_engage.drawio index 8f484a2c884..84ddcf03496 100644 --- a/docs/ibexa_products/img/ibexa_engage.drawio +++ b/docs/ibexa_products/img/ibexa_engage.drawio @@ -22,7 +22,7 @@ - + @@ -298,7 +298,7 @@ - + diff --git a/docs/ibexa_products/img/segments.drawio b/docs/ibexa_products/img/segments.drawio index fe8e5d6d334..fbb4904bc88 100644 --- a/docs/ibexa_products/img/segments.drawio +++ b/docs/ibexa_products/img/segments.drawio @@ -22,7 +22,7 @@ - + @@ -298,7 +298,7 @@ - + diff --git a/docs/qualifio/qualifio.md b/docs/qualifio/qualifio.md index 84d8005092f..94316de59be 100644 --- a/docs/qualifio/qualifio.md +++ b/docs/qualifio/qualifio.md @@ -1,5 +1,5 @@ --- -description: Use Ibexa Engage to collect customer data by creating interactive content. +description: Use Qualifio to collect customer data by creating interactive content. edition: experience month_change: false --- diff --git a/docs/raptor_cdp/raptor_cdp_data_customization.md b/docs/raptor_cdp/raptor_cdp_data_customization.md index 54662eb2c71..c4755bc5ee9 100644 --- a/docs/raptor_cdp/raptor_cdp_data_customization.md +++ b/docs/raptor_cdp/raptor_cdp_data_customization.md @@ -1,5 +1,5 @@ --- -description: Data customization in Ibexa CDP. +description: Data customization in Raptor CDP. edition: experience --- diff --git a/docs/raptor_cdp/raptor_cdp_installation.md b/docs/raptor_cdp/raptor_cdp_installation.md index 2d5e67cf542..5b4c954c02f 100644 --- a/docs/raptor_cdp/raptor_cdp_installation.md +++ b/docs/raptor_cdp/raptor_cdp_installation.md @@ -13,7 +13,7 @@ First, you need to register your [[= product_name_cdp =]] account, then you can If you decide to acquire [[= product_name_cdp =]], contact your sales representative to receive a registration link to [[= product_name_cdp =]]. After registration, you get access to a separate instance where you can find data required for configuring, activating, and using this feature. -## Install CDP package +## Install package [[= product_name_cdp =]] comes in an additional package that is opt-in and needs to be downloaded separately. From 79db23d91c1346b1bd719ec2f8456f6d0735e79e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Mon, 3 Aug 2026 15:40:50 +0200 Subject: [PATCH 07/17] Rename PIM to product catalog where needed --- .../customer_portal_guide.md | 2 +- docs/product_catalog/catalogs.md | 2 +- .../create_custom_catalog_filter.md | 4 ++-- docs/product_catalog/product_api.md | 2 +- docs/resources/new_in_doc.md | 18 +++++++++--------- mkdocs.yml | 4 ++-- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/customer_management/customer_portal_guide.md b/docs/customer_management/customer_portal_guide.md index b3a41e7d39b..b81e830a90d 100644 --- a/docs/customer_management/customer_portal_guide.md +++ b/docs/customer_management/customer_portal_guide.md @@ -15,7 +15,7 @@ With this feature, your customers can self-register, edit their organization inf ## Availability -Customer Portal is available in [[= product_name_exp =]]. It's also compatible with PIM, Commerce and [[= product_name_connect =]]. +Customer Portal is available in [[= product_name_exp =]]. It's also compatible with Product catalog, Commerce and [[= product_name_connect =]]. ## How does Customer Portal work? diff --git a/docs/product_catalog/catalogs.md b/docs/product_catalog/catalogs.md index 032c6ed4ba7..7ed7e7d3c03 100644 --- a/docs/product_catalog/catalogs.md +++ b/docs/product_catalog/catalogs.md @@ -1,5 +1,5 @@ --- -description: Catalogs enable filtering our a selection of products from the PIM. +description: Catalogs enable filtering out a selection of products from the Product catalog. --- # Catalogs diff --git a/docs/product_catalog/create_custom_catalog_filter.md b/docs/product_catalog/create_custom_catalog_filter.md index 367871505e8..5e56631c902 100644 --- a/docs/product_catalog/create_custom_catalog_filter.md +++ b/docs/product_catalog/create_custom_catalog_filter.md @@ -1,10 +1,10 @@ --- -description: Fine-tune product catalogs by adding a custom catalog filter for selecting products from the PIM. +description: Fine-tune catalogs by adding a custom catalog filter for selecting products from the Product catalog. --- # Create custom catalog filter -Catalog filters let you narrow down the products from the PIM that are available in the given [catalog](catalogs.md). +Catalog filters let you narrow down the products from the Product catalog that are available in the given [catalog](catalogs.md). Besides the built-in catalog filters, you can also create custom ones. The following example shows how to create a filter that selects products with the entered name. diff --git a/docs/product_catalog/product_api.md b/docs/product_catalog/product_api.md index d5ffb771dbc..da43f935339 100644 --- a/docs/product_catalog/product_api.md +++ b/docs/product_catalog/product_api.md @@ -1,5 +1,5 @@ --- -description: Use PHP API to manage products in PIM, their attributes, availability, and prices. +description: Use PHP API to manage products, their attributes, availability, and prices. month_change: false --- diff --git a/docs/resources/new_in_doc.md b/docs/resources/new_in_doc.md index 52c31fc9a40..fb3affdb2db 100644 --- a/docs/resources/new_in_doc.md +++ b/docs/resources/new_in_doc.md @@ -792,7 +792,7 @@ Enhanced the PHP API with the following new classes and interfaces: - Updated configuration details (including endpoint addresses and code examples) in multiple how-to articles -### PIM +### Product catalog - Updated the [Product API](https://doc.ibexa.co/en/4.6/pim/product_api/) article by fixing method signatures and adding links to the PHP API reference @@ -980,7 +980,7 @@ Enhanced the PHP API with the following new classes and interfaces: - [Ibexa DAM](https://doc.ibexa.co/projects/userguide/en/4.6/dam/ibexa_dam/) -### PIM +### Product catalog - [Price engine REST API](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#product-catalog-load-the-list-of-product-prices) @@ -1028,7 +1028,7 @@ Enhanced the PHP API with the following new classes and interfaces: - Customize recommendation request with segment parameters -### PIM +### Product catalog - Product search Aggregations: - [BasePriceStatsAggregation](https://doc.ibexa.co/en/4.6/search/aggregation_reference/basepricestats_aggregation/) @@ -1042,7 +1042,7 @@ Enhanced the PHP API with the following new classes and interfaces: - [Checkbox page block attribute type](https://doc.ibexa.co/en/4.6/content_management/pages/page_block_attributes/#block-attribute-types) - [Updated Create Form Builder Form attribute procedure](https://doc.ibexa.co/en/4.6/content_management/forms/create_form_attribute/#create-form-builder-form-attribute) -### PIM +### Product catalog - [Reorganized and updated information in User Documentation](https://doc.ibexa.co/projects/userguide/en/4.6/pim/pim/) @@ -1094,7 +1094,7 @@ Enhanced the PHP API with the following new classes and interfaces: - Post visit and price drop triggers - Wishlist and Deletefromwishlist events -### PIM +### Product catalog - [VAT category configuration update](https://doc.ibexa.co/en/4.6/pim/pim_configuration/#vat-rates) - [Payment Method Name Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/payment_method_name_criterion/) @@ -1127,7 +1127,7 @@ Enhanced the PHP API with the following new classes and interfaces: - Send messages with recommendations - Email triggers in User Documentation -### PIM +### Product catalog - [Product availability Twig extension](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/product_twig_functions/#ibexa_has_product_availability) - [PriceQuery with its criteria](https://doc.ibexa.co/en/4.6/search/criteria_reference/price_search_criteria/) @@ -1153,7 +1153,7 @@ Enhanced the PHP API with the following new classes and interfaces: - [Form Builder](https://doc.ibexa.co/en/4.6/content_management/forms/form_builder_guide/) - [Online editor](https://doc.ibexa.co/en/4.6/content_management/rich_text/online_editor_guide/) - Personalization - - [PIM](https://doc.ibexa.co/en/4.6/pim/pim_guide/) + - [Product catalog](https://doc.ibexa.co/en/4.6/pim/pim_guide/) - [Updated bundles list](https://doc.ibexa.co/en/4.6/administration/project_organization/bundles/) @@ -1186,7 +1186,7 @@ Enhanced the PHP API with the following new classes and interfaces: - [Add CKEditor plugins](https://doc.ibexa.co/en/4.6/content_management/rich_text/extend_online_editor/#add-ckeditor-plugins) -### PIM +### Product catalog - [Custom name schema strategy](https://doc.ibexa.co/en/4.6/pim/create_custom_name_schema_strategy/) - [IsVirtual Search Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/isvirtual_criterion/) @@ -1224,7 +1224,7 @@ Enhanced the PHP API with the following new classes and interfaces: - Multiple attributes in submodel computation - Multiple attributes in submodel computation in User Documentation -### PIM +### Product catalog - Updated [Enable purchasing products](https://doc.ibexa.co/en/4.6/pim/enable_purchasing_products/#region-and-currency) - [Virtual products](https://doc.ibexa.co/en/4.6/pim/products/#product-types) diff --git a/mkdocs.yml b/mkdocs.yml index 952505e18e9..28d64577719 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -391,13 +391,13 @@ nav: - Prices: product_catalog/prices.md - Price API: product_catalog/price_api.md - Customize product catalog: + - Customize product catalog: product_catalog/customize_product_catalog.md - Create custom attribute type: product_catalog/create_custom_attribute_type.md - Create custom availability strategy: product_catalog/create_custom_availability_strategy.md - Create custom catalog filter: product_catalog/create_custom_catalog_filter.md - Create custom name schema: product_catalog/create_custom_name_schema_strategy.md - Create product code generator: product_catalog/create_product_code_generator.md - Customize product attribute templates: product_catalog/customize_product_attribute_templates.md - - Customize product catalog: product_catalog/customize_product_catalog.md - Customize product embed templates: product_catalog/customize_product_embed_templates.md - Add remote PIM support: product_catalog/add_remote_pim_support.md - Commerce: @@ -1011,7 +1011,7 @@ extra: product_name_exp: 'Ibexa Experience' product_name_com: 'Ibexa Commerce' product_name_cdp: 'Raptor CDP' - product_name_connect: 'Ibexa Connect' + product_name_cdp_base: 'Raptor' product_name_cloud: 'Ibexa Cloud' product_name_oss: 'Ibexa OSS' product_name_engage: 'Qualifio' From d8d1bba700dfd6df81ed962c407220bdc62d0f60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Mon, 3 Aug 2026 18:16:02 +0200 Subject: [PATCH 08/17] Hardcode old Ibexa DXP name where needed --- docs/release_notes/ibexa_dxp_v3.2.md | 4 +-- docs/release_notes/ibexa_dxp_v3.3.md | 4 +-- docs/release_notes/ibexa_dxp_v4.0.md | 2 +- .../ibexa_dxp_v4.0_deprecations.md | 2 +- docs/release_notes/ibexa_dxp_v4.2.md | 2 +- docs/release_notes/ibexa_dxp_v4.4.md | 4 +-- docs/release_notes/ibexa_dxp_v4.5.md | 4 +-- docs/release_notes/ibexa_dxp_v4.6.md | 34 +++++++++--------- docs/release_notes/ibexa_dxp_v5.0.md | 36 +++++++++---------- .../ibexa_dxp_v5.0_deprecations.md | 6 ++-- docs/release_notes/release_notes.md | 5 +-- docs/resources/new_in_doc.md | 26 +++++++------- .../from_3.3/update_from_3.3.md | 2 +- .../from_5.0/update_from_5.0.md | 2 +- .../{update_ibexa_dxp.md => update_system.md} | 4 +-- mkdocs.yml | 16 ++++----- plugins.yml | 3 +- 17 files changed, 79 insertions(+), 77 deletions(-) rename docs/update_and_migration/{update_ibexa_dxp.md => update_system.md} (91%) diff --git a/docs/release_notes/ibexa_dxp_v3.2.md b/docs/release_notes/ibexa_dxp_v3.2.md index f9699b36b6d..d517efb0af7 100644 --- a/docs/release_notes/ibexa_dxp_v3.2.md +++ b/docs/release_notes/ibexa_dxp_v3.2.md @@ -110,6 +110,6 @@ to [get object states and object state groups](https://doc.ibexa.co/en/3.2/api/p ## Full changelog -| Ibexa Platform | [[= product_name =]] | [[= product_name_com =]] | +| Ibexa Platform | Ibexa DXP | [[= product_name_com =]] | |--------------|------------|------------| -| [Ibexa Platform v3.2.0](https://github.com/ezsystems/ezplatform/releases/tag/v3.2.0) | [[[= product_name =]] v3.2.0](https://github.com/ezsystems/ezplatform-ee/releases/tag/v3.2.0) | [[[= product_name_com =]] v3.2.0](https://github.com/ezsystems/ezcommerce/releases/tag/v3.2.0) | +| [Ibexa Platform v3.2.0](https://github.com/ezsystems/ezplatform/releases/tag/v3.2.0) | [Ibexa DXP v3.2.0](https://github.com/ezsystems/ezplatform-ee/releases/tag/v3.2.0) | [[[= product_name_com =]] v3.2.0](https://github.com/ezsystems/ezcommerce/releases/tag/v3.2.0) | diff --git a/docs/release_notes/ibexa_dxp_v3.3.md b/docs/release_notes/ibexa_dxp_v3.3.md index e495095174d..45189f5027c 100644 --- a/docs/release_notes/ibexa_dxp_v3.3.md +++ b/docs/release_notes/ibexa_dxp_v3.3.md @@ -20,7 +20,7 @@ This release brings a completely reconstructed user interface of the Personaliza ### Symfony Flex -[[= product_name =]] is now installed using [Symfony Flex]([[= symfony_doc =]]/quick_tour/flex_recipes.html). +Ibexa DXP is now installed using [Symfony Flex]([[= symfony_doc =]]/quick_tour/flex_recipes.html). See [the updated installation instruction](https://doc.ibexa.co/en/3.3/getting_started/install_ez_platform/) for a new guide to installing the product. @@ -89,6 +89,6 @@ See [list of changes in Symfony 5.2](https://symfony.com/blog/symfony-5-2-curate ### Symfony 5.4 -The version v3.3.15 moves [[= product_name =]] to Symfony 5.4. +The version v3.3.15 moves Ibexa DXP to Symfony 5.4. For more information, see [Symfony 5.4 documentation](https://symfony.com/releases/5.4) and [update documentation](update_from_3.3.md#v3315). diff --git a/docs/release_notes/ibexa_dxp_v4.0.md b/docs/release_notes/ibexa_dxp_v4.0.md index aaae03cf62e..d524a669b02 100644 --- a/docs/release_notes/ibexa_dxp_v4.0.md +++ b/docs/release_notes/ibexa_dxp_v4.0.md @@ -109,7 +109,7 @@ Personalization service has been enhanced with a feature which allows to exclude v4.0 sees significant code cleanup, including renaming of namespaces, services, REST API endpoints and many other internal names. -Refer to [[[= product_name =]] v4.0 deprecations and backwards compatibility breaks](ibexa_dxp_v4.0_deprecations.md) +Refer to [Ibexa DXP v4.0 deprecations and backwards compatibility breaks](ibexa_dxp_v4.0_deprecations.md) for full details of changes and how they influence your project. ## Full changelog diff --git a/docs/release_notes/ibexa_dxp_v4.0_deprecations.md b/docs/release_notes/ibexa_dxp_v4.0_deprecations.md index 7feaee9df8e..aaefd0814aa 100644 --- a/docs/release_notes/ibexa_dxp_v4.0_deprecations.md +++ b/docs/release_notes/ibexa_dxp_v4.0_deprecations.md @@ -2,7 +2,7 @@ # Ibexa DXP v4.0 deprecations and backwards compatibility breaks -[[= product_name =]] v4.0 introduces changes to significant parts of the code +Ibexa DXP v4.0 introduces changes to significant parts of the code to align with the product name change from earlier eZ Platform. These changes include changing repository names, namespaces, filenames, function names, and others. diff --git a/docs/release_notes/ibexa_dxp_v4.2.md b/docs/release_notes/ibexa_dxp_v4.2.md index 614a391f773..df5cd8f3e82 100644 --- a/docs/release_notes/ibexa_dxp_v4.2.md +++ b/docs/release_notes/ibexa_dxp_v4.2.md @@ -209,7 +209,7 @@ You can now hide and reveal content items in data migrations by using the [`hide ### Fastly shielding -[[= product_name =]] now supports Fastly shielding. +Ibexa DXP now supports Fastly shielding. ## Deprecations diff --git a/docs/release_notes/ibexa_dxp_v4.4.md b/docs/release_notes/ibexa_dxp_v4.4.md index 5a9f845a2f5..a459605c600 100644 --- a/docs/release_notes/ibexa_dxp_v4.4.md +++ b/docs/release_notes/ibexa_dxp_v4.4.md @@ -50,7 +50,7 @@ You can now use Fastly IO to serve optimized versions of your images in real tim Fastly can perform multiple transformations on your image, for example, cropping, resizing, and trimming before serving it to end user. Fastly is an external service that requires a separate subscription, to learn more see, [Fastly Image Optimizer website](https://www.fastly.com/documentation/guides/full-site-delivery/image-optimization/about-fastly-image-optimizer/). -If you already have Fastly IO subscription, you can move to [Fastly IO configuration in [[= product_name =]]](https://doc.ibexa.co/en/4.4/content_management/images/fastly_io/). +If you already have Fastly IO subscription, you can move to [Fastly IO configuration in Ibexa DXP](https://doc.ibexa.co/en/4.4/content_management/images/fastly_io/). #### Fastly VCL upload @@ -84,7 +84,7 @@ provide the best recommendations. ## [[= product_name_connect =]] You can now take advantage of [[[= product_name_connect =]]](https://www.ibexa.co/products/features/integration-and-automation), -an iPaaS (integration platform-as-a-service) which allows you to connect [[= product_name =]] with third-party applications. +an iPaaS (integration platform-as-a-service) which allows you to connect Ibexa DXP with third-party applications. [[= product_name_connect =]] features a low-code drag-and-drop interface and hundreds of connectors to different services that help you automate business processes. See [[[= product_name_connect =]] documentation]([[= connect_doc =]]/). diff --git a/docs/release_notes/ibexa_dxp_v4.5.md b/docs/release_notes/ibexa_dxp_v4.5.md index 02f193a2031..142094c95ae 100644 --- a/docs/release_notes/ibexa_dxp_v4.5.md +++ b/docs/release_notes/ibexa_dxp_v4.5.md @@ -31,7 +31,7 @@ Modules can interact with each other, for example, to decrease stock as a result With order management in place, it's now possible to create orders, configure and customize the order processing workflow, and manage orders by using the APIs. -New screens added to the back office user interface let [[= product_name =]] users search for orders and filter search results. +New screens added to the back office user interface let Ibexa DXP users search for orders and filter search results. Users can also review order details and completion status, and cancel orders. ![The order list screen](img/4.5_order_list.png "The order list screen") @@ -122,7 +122,7 @@ In this release, the CDP configuration becomes more generic and allows supporting other transport types accepted by CDP. Currently, only `stream_file` transport is supported and can be initialized from the configuration. -[[= product_name =]] v4.5 adds the abstraction that allows you to implement other transport types from third parties. +Ibexa DXP v4.5 adds the abstraction that allows you to implement other transport types from third parties. For more information, see [CDP configuration](https://doc.ibexa.co/en/4.5/cdp/cdp_activation/#configuration). diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index 894d2d768c9..b614571f86a 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -83,7 +83,7 @@ For more information, see [Workflow API](https://doc.ibexa.co/en/5.0/content_man ### Product tour -The product tour is a new Integrated help feature that helps back office contributors to discover [[= product_name =]]. +The product tour is a new Integrated help feature that helps back office contributors to discover Ibexa DXP. With product tours, you can create customized onboarding journeys. This accelerates user adoption, reduces training time, and helps users confidently navigate the platform. @@ -270,7 +270,7 @@ The PHP API has been enhanced with the following classes and interfaces: [[= release_note_entry_begin("Integrated help " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] -Integrated help, a new [LTS Update](https://doc.ibexa.co/en/4.6/ibexa_products/editions/#lts-updates), brings contextual documentation, guidance, and partner-specific resources right into the user interface of [[= product_name =]]. +Integrated help, a new [LTS Update](https://doc.ibexa.co/en/4.6/ibexa_products/editions/#lts-updates), brings contextual documentation, guidance, and partner-specific resources right into the user interface of Ibexa DXP. It helps editors, store managers, and developers to quickly access relevant content, training and resources without leaving the UI, narrowing the gap between product and documentation. The default help menu can be modified to include links to internal editorial guidelines, custom tutorials, or support pages. @@ -290,7 +290,7 @@ Real-time editing is now part of the [Collaborative editing](https://doc.ibexa.c By using it, users can edit and review content in real time, making teamwork faster, more efficient, and streamlining the content review process. The system automatically tracks changes, allowing seamless collaboration within a single content item. -This extends the already existing capabilities allowing editors to work on the same content created in [[= product_name =]] simultaneously, streamlining the content creation and review process. +This extends the already existing capabilities allowing editors to work on the same content created in Ibexa DXP simultaneously, streamlining the content creation and review process. ![Participants list](img/participants_list.png) @@ -428,7 +428,7 @@ With improved reasoning and greater accuracy in mind, the AI Connector package h #### Discount indexing Discounts now allow scheduling a re-indexing of discounted product catalog prices at the most convenient time by using the Ibexa Messenger package. -Ibexa Messenger is a customization of the Symfony Messenger package, created to adjust it to [[= product_name =]]'s needs. +Ibexa Messenger is a customization of the Symfony Messenger package, created to adjust it to Ibexa DXP's needs. Once properly configured, it uses a background queue to trigger price re-indexing, ensuring efficient use of system resources without causing performance disruptions. @@ -461,7 +461,7 @@ Developers can now create and configure their own notification types, while user ##### New packages -The only package that has been introduced in [[= product_name =]] v4.6.24 is ibexa/messenger. +The only package that has been introduced in Ibexa DXP v4.6.24 is ibexa/messenger. ##### New version of PHP Storm Plugin @@ -576,7 +576,7 @@ It uses the [special characters plugin](https://ckeditor.com/docs/ckeditor5/late #### Support for Solr 9 -With this release, [[= product_name =]] starts supporting [Solr 9](https://doc.ibexa.co/en/4.6/getting_started/requirements/#search). +With this release, Ibexa DXP starts supporting [Solr 9](https://doc.ibexa.co/en/4.6/getting_started/requirements/#search). Solr 9 comes with support for [Dense Vector Search](https://solr.apache.org/guide/solr/latest/query-guide/dense-vector-search.html), paving the way for incoming improvements to the [AI Actions](https://doc.ibexa.co/en/4.6/ai_actions/ai_actions/) feature. @@ -697,7 +697,7 @@ To update to the latest version, see the [update instructions](https://doc.ibexa #### Twig Components -- The new [Twig Components](https://doc.ibexa.co/en/4.6/templating/components/) feature allow you to effortlessly build customizable and reusable Twig templates in [[= product_name =]] +- The new [Twig Components](https://doc.ibexa.co/en/4.6/templating/components/) feature allow you to effortlessly build customizable and reusable Twig templates in Ibexa DXP #### Extending Sub-items view @@ -1454,16 +1454,16 @@ For more information, see [Ibexa DAM](https://doc.ibexa.co/projects/userguide/en ##### Remote PIM support -This release introduces a foundation for connecting [[= product_name =]]'s product catalog capabilities to external Product Information Management (PIM) systems. +This release introduces a foundation for connecting Ibexa DXP's product catalog capabilities to external Product Information Management (PIM) systems. You can use it to implement a custom solution and connect to external PIM or ERP systems, import product data, and present it side-by-side with your organization's existing content, while managing product data in a remote system of your choice. Here are the most important benefits of Remote PIM support: -- Integration with external data sources: your organization can utilize [[= product_name =]]'s features, without having to migrate data to a new environment. -- Increased accessibility of product information: customers and users can access product data through different channels, including [[= product_name =]]. +- Integration with external data sources: your organization can utilize Ibexa DXP's features, without having to migrate data to a new environment. +- Increased accessibility of product information: customers and users can access product data through different channels, including Ibexa DXP. - Centralized product data management: product information can be maintained and edited in one place, which then serves as a single source of truth for different applications. -Among other things, the Remote PIM support feature allows [[= product_name =]] customers to: +Among other things, the Remote PIM support feature allows Ibexa DXP customers to: - let their users purchase products by following a regular or quick order path, - manage certain aspects of product data, @@ -1565,7 +1565,7 @@ For more information, see [Define cancel order](https://doc.ibexa.co/en/5.0/comm ##### Integrate with payment gateways -[[= product_name =]] can now be configured to integrate with various payment gateways, like Stripe and PayPal, by using the solution provided by [Payum](https://github.com/Payum). +Ibexa DXP can now be configured to integrate with various payment gateways, like Stripe and PayPal, by using the solution provided by [Payum](https://github.com/Payum). ##### Shipments @@ -1726,9 +1726,9 @@ For more information, see [[[= product_name_connect =]] scenario block](https:// #### DDEV -[[[= product_name =]] can officially be run on DDEV](https://docs.ddev.com/en/stable/users/quickstart/#ibexa-dxp). +[Ibexa DXP can officially be run on DDEV](https://docs.ddev.com/en/stable/users/quickstart/#ibexa-dxp). -For more information, see the [DDEV guide](https://doc.ibexa.co/en/5.0/getting_started/install_with_ddev/), which offers a step-by-step walkthrough for installing [[= product_name =]]. +For more information, see the [DDEV guide](https://doc.ibexa.co/en/5.0/getting_started/install_with_ddev/), which offers a step-by-step walkthrough for installing Ibexa DXP. #### Customer Data Platform (CDP) @@ -1741,7 +1741,7 @@ For more information, see [CDP Activation](https://doc.ibexa.co/en/5.0/cdp/cdp_a #### New packages -The following packages have been introduced in [[= product_name =]] v4.6.0: +The following packages have been introduced in Ibexa DXP v4.6.0: - [ibexa/oauth2-server](https://doc.ibexa.co/en/4.6/users/oauth_server/) (optional) - ibexa/site-context @@ -1762,7 +1762,7 @@ The following packages have been introduced in [[= product_name =]] v4.6.0: #### REST APIs -[[= product_name =]] v4.6.0 adds REST API coverage for the following features: +Ibexa DXP v4.6.0 adds REST API coverage for the following features: - Price engine - Shipping @@ -1927,7 +1927,7 @@ The following events have been added in the v4.6.0 release (39 events in total): #### View matchers -The following view matchers have been introduced in [[= product_name =]] v4.6.0: +The following view matchers have been introduced in Ibexa DXP v4.6.0: - `\Ibexa\Core\MVC\Symfony\Matcher\ContentBased\IsPreview` - `\Ibexa\Taxonomy\View\Matcher\TaxonomyEntryBased\Id` diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 7ce9a7a0484..0a7d0b8d1c3 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -102,7 +102,7 @@ The following additions were made to the PHP API: ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release'] ) =]] -MCP servers make it easier for AI agents to discover the available interactions with [[= product_name =]]. +MCP servers make it easier for AI agents to discover the available interactions with Ibexa DXP. With the MCP Servers feature, you can configure multiple MCP servers with their specific sets of tools. For more information, see [MCP Servers product guide](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_guide/). @@ -151,7 +151,7 @@ For more information, see [connector installation and configuration](https://doc ### Anonymous user segmentation in [[= product_name_cdp =]] [[% include 'snippets/experience_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] [[= product_name_cdp =]] can now build audiences for anonymous visitors. -Use them in [[= product_name =]] to deliver personalized experiences even before users log in. +Use them in Ibexa DXP to deliver personalized experiences even before users log in. For more information, see [Anonymous user segmentation](https://doc.ibexa.co/en/5.0/cdp/cdp_activation/cdp_configuration/#anonymous-user-segmentation). @@ -237,7 +237,7 @@ For more information, see how to [install and configure the Google Gemini connec ### Product tour -The product tour is a new Integrated help feature that helps back office contributors to discover [[= product_name =]]. +The product tour is a new Integrated help feature that helps back office contributors to discover Ibexa DXP. With product tours, you can create customized onboarding journeys. This accelerates user adoption, reduces training time, and helps users confidently navigate the platform. @@ -259,7 +259,7 @@ To learn more, see the [corresponding security advisory](https://developers.ibex ### Raptor connector -The Raptor connector provides a seamless integration between [[= product_name =]] and [Raptor Recommendation Engine](https://www.raptorservices.com/website-recommendations/). +The Raptor connector provides a seamless integration between Ibexa DXP and [Raptor Recommendation Engine](https://www.raptorservices.com/website-recommendations/). For more information, see [Raptor connector](https://doc.ibexa.co/en/5.0/recommendations/raptor_integration/raptor_connector/). @@ -280,10 +280,10 @@ For more information about Recommendation blocks in Page Builder, see the releva ### [[= pim_product_name =]] -The [[= pim_product_name =]] integration add-on allows you to connect [[= product_name =]] with [[[= pim_product_name =]]](https://www.quable.com/en), making [[= pim_product_name =]] the authoritative source of product information for every website powered by [[= product_name =]]. +The [[= pim_product_name =]] integration add-on allows you to connect Ibexa DXP with [[[= pim_product_name =]]](https://www.quable.com/en), making [[= pim_product_name =]] the authoritative source of product information for every website powered by Ibexa DXP. [[= pim_product_name =]] can serve as the single source of truth for all product data, including attributes, classifications, variants, and translations. -[[= product_name =]] consumes this data and makes it available for use in content and digital experiences. +Ibexa DXP consumes this data and makes it available for use in content and digital experiences. For more information, see [[[= pim_product_name =]] Integration](https://doc.ibexa.co/en/5.0/product_catalog/quable/quable/). @@ -297,7 +297,7 @@ You can now use the [refining text AI Actions](https://doc.ibexa.co/en/5.0/ai/ai Symfony is upgraded from 7.3 to 7.4. It's the latest [LTS release](https://symfony.com/releases#long-term-support-release), maintained till November 2029. -See [what's new in Symfony 7.4](https://symfony.com/blog/category/living-on-the-edge/8.0-7.4) and [how to update Symfony within [[= product_name =]]](https://doc.ibexa.co/en/5.0/update_and_migration/from_5.0/update_from_5.0/#update-symfony-from-73-to-74). +See [what's new in Symfony 7.4](https://symfony.com/blog/category/living-on-the-edge/8.0-7.4) and [how to update Symfony within Ibexa DXP](https://doc.ibexa.co/en/5.0/update_and_migration/from_5.0/update_from_5.0/#update-symfony-from-73-to-74). #### Taxonomy search @@ -540,7 +540,7 @@ The [Collaborative editing](https://doc.ibexa.co/en/5.0/content_management/colla [[= release_note_entry_begin("Integrated help " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]] -Integrated help brings contextual documentation, guidance, and partner-specific resources right into the user interface of [[= product_name =]]. +Integrated help brings contextual documentation, guidance, and partner-specific resources right into the user interface of Ibexa DXP. It helps editors, store managers, and developers to quickly access relevant content, training and resources without leaving the UI, narrowing the gap between product and documentation. The default help menu can be modified to include links to internal editorial guidelines, custom tutorials, or support pages. @@ -573,7 +573,7 @@ Real-time editing is now part of the [Collaborative editing](https://doc.ibexa.c By using it, users can edit and review content in real time, making teamwork faster, more efficient, and streamlining the content review process. The system automatically tracks changes, allowing seamless collaboration within a single content item. -This extends the already existing capabilities allowing editors to work on the same content created in [[= product_name =]] simultaneously, streamlining the content creation and review process. +This extends the already existing capabilities allowing editors to work on the same content created in Ibexa DXP simultaneously, streamlining the content creation and review process. ![Participants list](img/participants_list.png) @@ -727,7 +727,7 @@ Additionally, shared drafts can be accessed and managed through new dashboard ta ### Discount indexing Discounts now allow scheduling a re-indexing of discounted product catalog prices at the most convenient time by using the Ibexa Messenger package. -Ibexa Messenger is a customization of the Symfony Messenger package, created to adjust it to [[= product_name =]]'s needs. +Ibexa Messenger is a customization of the Symfony Messenger package, created to adjust it to Ibexa DXP's needs. Once properly configured, it uses a background queue to trigger price re-indexing, ensuring efficient use of system resources without causing performance disruptions. @@ -858,7 +858,7 @@ It uses the [special characters plugin](https://ckeditor.com/docs/ckeditor5/late ### Support for Solr 9 -With this release, [[= product_name =]] starts supporting [Solr 9](https://doc.ibexa.co/en/5.0/getting_started/requirements/#search). +With this release, Ibexa DXP starts supporting [Solr 9](https://doc.ibexa.co/en/5.0/getting_started/requirements/#search). Solr 9 comes with support for [Dense Vector Search](https://solr.apache.org/guide/solr/latest/query-guide/dense-vector-search.html), paving the way for incoming improvements to the [AI Actions](https://doc.ibexa.co/en/5.0/ai/ai_actions/ai_actions/) feature. @@ -904,7 +904,7 @@ This version incorporates into the product numerous features brought by LTS Upda #### AI Actions -The AI Actions feature enhances the usability and flexibility of [[= product_name =]] by harnessing the potential of artificial intelligence to automate time-consuming editorial tasks. +The AI Actions feature enhances the usability and flexibility of Ibexa DXP by harnessing the potential of artificial intelligence to automate time-consuming editorial tasks. By default, the AI Actions feature can help users with their work in following scenarios: - Refining text: when editing a content item, users can request that a passage selected in online editor is modified, for example, by adjusting the length of the text, changing its tone, or correcting linguistic errors @@ -957,17 +957,17 @@ For a full list of updated system requirements, see [Requirements](https://doc.i #### Symfony 7.3 -With this release, [[= product_name =]] moves to Symfony 7.3 from the previously used versions of Symfony. +With this release, Ibexa DXP moves to Symfony 7.3 from the previously used versions of Symfony. For details, see [Symfony 7.3](https://symfony.com/blog/symfony-7-3-curated-new-features). #### Doctrine DBAL 3.9 -By moving to Doctrine DBAL 3.9, [[= product_name =]] brings developers better performance, cleaner code, and stronger foundation for a more modern and maintainable application. +By moving to Doctrine DBAL 3.9, Ibexa DXP brings developers better performance, cleaner code, and stronger foundation for a more modern and maintainable application. #### PHP 8.3 -With performance, coding safety and security in mind, with this version, [[= product_name =]] moves to [PHP 8.3](https://www.php.net/releases/8.3/en.php) and drops support for lower versions of the language. +With performance, coding safety and security in mind, with this version, Ibexa DXP moves to [PHP 8.3](https://www.php.net/releases/8.3/en.php) and drops support for lower versions of the language. #### OpenAPI support @@ -979,14 +979,14 @@ Support for serialization and deserialization of REST payloads with the [Symfony #### React 19 -[[= product_name =]]'s Back Office now uses [React 19](https://react.dev/blog/2024/12/05/react-19). +Ibexa DXP's Back Office now uses [React 19](https://react.dev/blog/2024/12/05/react-19). This upgrade enhances maintainability, unlocks new UI capabilities, and simplifies future feature development. ### Developer experience #### New packages -The following packages have been introduced in [[= product_name =]] v5.0.0: +The following packages have been introduced in Ibexa DXP v5.0.0: - ibexa/collaboration - ibexa/connector-ai @@ -999,7 +999,7 @@ The following packages have been introduced in [[= product_name =]] v5.0.0: #### REST APIs -[[= product_name =]] v5.0.0 adds REST API coverage for the following features: +Ibexa DXP v5.0.0 adds REST API coverage for the following features: - AI Actions: - Action Configurations diff --git a/docs/release_notes/ibexa_dxp_v5.0_deprecations.md b/docs/release_notes/ibexa_dxp_v5.0_deprecations.md index bbee6902841..6180edd97e0 100644 --- a/docs/release_notes/ibexa_dxp_v5.0_deprecations.md +++ b/docs/release_notes/ibexa_dxp_v5.0_deprecations.md @@ -2,20 +2,20 @@ # Ibexa DXP v5.0 renames, deprecations and removals -This page lists backwards compatibility breaks and deprecations introduced in [[= product_name =]] v5.0. +This page lists backwards compatibility breaks and deprecations introduced in Ibexa DXP v5.0. !!! tip "Upgrade to v5" For a guide on moving your project to v5.0, see [Update and migration instructions](../update_and_migration/from_4.6/update_to_5.0.md). -[[= product_name =]] v5.0 introduces further modifications to significant parts of the code to align with the ones introduced in previous versions. +Ibexa DXP v5.0 introduces further modifications to significant parts of the code to align with the ones introduced in previous versions. These changes include dropped packages, changing database table and column names, field identifiers, namespaces, function names, and others. ## Dropped packages -[[= product_name =]] v5.0 no longer includes legacy Commerce packages. +Ibexa DXP v5.0 no longer includes legacy Commerce packages. The solution has been replaced with [Commerce](commerce.md) that is included as standard and has been continuously developed since v4.4. Also, packages `compatibility-layer` and `icons` have been dropped. diff --git a/docs/release_notes/release_notes.md b/docs/release_notes/release_notes.md index c27d5359f00..3a128728d45 100644 --- a/docs/release_notes/release_notes.md +++ b/docs/release_notes/release_notes.md @@ -1,13 +1,14 @@ --- -description: Learn about the latest releases on Ibexa DXP. +description: Learn about the latest releases of Cohesivo. page_type: landing_page --- # Release notes -The latest stable and LTS (Long Term Support) version of [[= product_name =]] is [[[= product_name =]] v5.0](ibexa_dxp_v5.0.md). +The latest stable and LTS (Long Term Support) version of [[= product_name =]] is [[[= product_name =]] v6.0](cohesivo_v6.0.md). [[= cards([ + "release_notes/cohesivo_v6.0", "release_notes/ibexa_dxp_v5.0", "release_notes/ibexa_dxp_v4.6", ], columns=2) =]] diff --git a/docs/resources/new_in_doc.md b/docs/resources/new_in_doc.md index fb3affdb2db..925b234be75 100644 --- a/docs/resources/new_in_doc.md +++ b/docs/resources/new_in_doc.md @@ -5,7 +5,7 @@ month_change: true # New in documentation -This page contains recent highlights and notable changes in [[= product_name =]] documentation. +This page contains recent highlights and notable changes in Ibexa DXP and [[= product_name =]] documentation. ## June 2026 @@ -148,7 +148,7 @@ This promotes skipping the rebuild of the Symfony container when environment var ### Discounts -- Added Ibexa Messenger instructions for [[= product_name =]] 4.6 +- Added Ibexa Messenger instructions for Ibexa DXP 4.6 - Modified [discounts configuration](https://doc.ibexa.co/en/4.6/discounts/configure_discounts/#discount-re-indexing) - Added [installation instructions](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/background_tasks/#installation) @@ -183,7 +183,7 @@ This promotes skipping the rebuild of the Symfony container when environment var ### Infrastructure -- Updated [requirements](https://doc.ibexa.co/en/4.6/getting_started/requirements/) for [[= product_name =]] 4.6 and 5.0: PostgreSQL 18 is now officially supported +- Updated [requirements](https://doc.ibexa.co/en/4.6/getting_started/requirements/) for Ibexa DXP 4.6 and 5.0: PostgreSQL 18 is now officially supported ### Ibexa Cloud @@ -232,7 +232,7 @@ This promotes skipping the rebuild of the Symfony container when environment var ### PHP API -- Enhanced the PHP API reference with the following new classes for [[= product_name =]] 4.6 and 5.0: +- Enhanced the PHP API reference with the following new classes for Ibexa DXP 4.6 and 5.0: - [`Ibexa\Contracts\Elasticsearch\Query\EmbeddingVisitor`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Elasticsearch-Query-EmbeddingVisitor.html) - [`Ibexa\Contracts\AdminUi\ContentType\ContentTypeFieldsByExpressionServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-ContentType-ContentTypeFieldsByExpressionServiceInterface.html) @@ -304,7 +304,7 @@ We want to thank ### Trainings -- The [Advanced Developer training](https://learn.ibexa.co) for [[= product_name =]] v5 is now available +- The [Advanced Developer training](https://learn.ibexa.co) for Ibexa DXP v5 is now available ### Documentation improvements @@ -342,7 +342,7 @@ We want to thank ### Collaborative editing - Added the [Collaborative editing product guide](collaborative_editing_guide.md), describing the high-level overview of this feature -- Described collaborative editing endpoints to the [REST API reference](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#collaborative-editing) for [[= product_name =]] v4.6 +- Described collaborative editing endpoints to the [REST API reference](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#collaborative-editing) for Ibexa DXP v4.6 ### Infrastructure @@ -350,7 +350,7 @@ We want to thank ### PHP API -- Enhanced the PHP API reference with the following new classes for [[= product_name =]] 4.6 and 5.0: +- Enhanced the PHP API reference with the following new classes for Ibexa DXP 4.6 and 5.0: - [`Ibexa\Contracts\AdminUi\Event\ResolveVersionPreviewUrlEvent`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Event-ResolveVersionPreviewUrlEvent.html) - [`Ibexa\Contracts\AdminUi\Exception\UnresolvedPreviewUrlException`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Exception-UnresolvedPreviewUrlException.html) - [`Ibexa\Contracts\AdminUi\PreviewUrlResolver\VersionPreviewUrlResolverInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-PreviewUrlResolver-VersionPreviewUrlResolverInterface.html) @@ -490,7 +490,7 @@ Discounts documentation includes: ### Twig Components -- Documented new [Twig Components](https://doc.ibexa.co/en/4.6/templating/components/) feature that allows you to effortlessly build customizable and reusable Twig templates in [[= product_name =]] +- Documented new [Twig Components](https://doc.ibexa.co/en/4.6/templating/components/) feature that allows you to effortlessly build customizable and reusable Twig templates in Ibexa DXP ### Extending Sub-items view @@ -509,7 +509,7 @@ Discounts documentation includes: ### Requirements update -- Updated [requirements](https://doc.ibexa.co/en/4.6/getting_started/requirements/) for [[= product_name =]] 4.6: MySQL 8.4, Node 20 and Node 22 are now officially supported +- Updated [requirements](https://doc.ibexa.co/en/4.6/getting_started/requirements/) for Ibexa DXP 4.6: MySQL 8.4, Node 20 and Node 22 are now officially supported ### AI Actions Connect handler @@ -546,11 +546,11 @@ We want to thank [todomagichere](https://github.com/todomagichere) and [hgieseno ### Requirements update -- Updated [requirements](https://doc.ibexa.co/en/4.6/getting_started/requirements/#operating-system) for [[= product_name =]]: RHEL 9.5 and CentOS Stream 9 are now supported for v4.6 +- Updated [requirements](https://doc.ibexa.co/en/4.6/getting_started/requirements/#operating-system) for Ibexa DXP: RHEL 9.5 and CentOS Stream 9 are now supported for v4.6 ### AI Actions -- Specified minimum [[= product_name =]] version supported while working with AI Actions +- Specified minimum Ibexa DXP version supported while working with AI Actions - AI Actions product guide: [Availability](https://doc.ibexa.co/en/4.6/ai_actions/ai_actions_guide/#availability) - AI Actions section: [Install AI Actions](https://doc.ibexa.co/en/4.6/ai_actions/install_ai_actions/) @@ -851,7 +851,7 @@ Enhanced the PHP API with the following new classes and interfaces: ### Getting started -- Added instructions in [Install [[= product_name =]]](https://doc.ibexa.co/en/4.6/getting_started/install_ibexa_dxp/#create-project) about using PHP 8.3 to create a project +- Added instructions in [Install Ibexa DXP](https://doc.ibexa.co/en/4.6/getting_started/install_ibexa_dxp/#create-project) about using PHP 8.3 to create a project - Updated the [requirements for running v3.3.x on PHP 8.3](https://doc.ibexa.co/en/4.6/getting_started/requirements/#php) ### Infrastructure and maintenance @@ -1165,7 +1165,7 @@ Enhanced the PHP API with the following new classes and interfaces: ### Administration -- [Install [[= product_name =]] with DDEV](https://doc.ibexa.co/en/4.6/getting_started/install_with_ddev/) +- [Install Ibexa DXP with DDEV](https://doc.ibexa.co/en/4.6/getting_started/install_with_ddev/) - [Update from v3.3.x to v3.3.latest](https://doc.ibexa.co/en/4.6/update_and_migration/from_3.3/update_from_3.3/) ### Commerce diff --git a/docs/update_and_migration/from_3.3/update_from_3.3.md b/docs/update_and_migration/from_3.3/update_from_3.3.md index 43a0f026332..175ac17e293 100644 --- a/docs/update_and_migration/from_3.3/update_from_3.3.md +++ b/docs/update_and_migration/from_3.3/update_from_3.3.md @@ -7,7 +7,7 @@ month_change: false This update procedure applies if you're using a v3.3 installation without the latest maintenance release. To update from an 3.2 to 3.3, see [Updating the app to v3.3](to_3.3.md). -From older version, explore [this section](update_ibexa_dxp.md). +From older version, explore [this section](update_system.md). Go through the following steps to update to the latest maintenance release of v3.3 (v[[= latest_tag_3_3 =]]). diff --git a/docs/update_and_migration/from_5.0/update_from_5.0.md b/docs/update_and_migration/from_5.0/update_from_5.0.md index 800b8f793f8..cd68d1cb74d 100644 --- a/docs/update_and_migration/from_5.0/update_from_5.0.md +++ b/docs/update_and_migration/from_5.0/update_from_5.0.md @@ -6,7 +6,7 @@ month_change: true # Update from v5.0.x to v5.0.latest To update from v4.6.x, see [Update from v4.6 to v5.0](update_to_5.0.md). -To update from an older version, visit [the update page](update_ibexa_dxp.md) and choose the applicable path. +To update from an older version, visit [the update page](update_system.md) and choose the applicable path. ## Update the application diff --git a/docs/update_and_migration/update_ibexa_dxp.md b/docs/update_and_migration/update_system.md similarity index 91% rename from docs/update_and_migration/update_ibexa_dxp.md rename to docs/update_and_migration/update_system.md index fbeec4c43c8..08010086d1d 100644 --- a/docs/update_and_migration/update_ibexa_dxp.md +++ b/docs/update_and_migration/update_system.md @@ -2,9 +2,9 @@ description: Update your installation to the latest supported version. --- -# Updating [[= product_name =]] +# Updating Ibexa DXP and [[= product_name =]] -To update [[= product_name =]] to a newer version, select the version you're currently using: +To update Ibexa DXP and [[= product_name =]] to a newer version, select the version you're currently using: === "I am using v1.13 or v2.x" diff --git a/mkdocs.yml b/mkdocs.yml index 28d64577719..32ba35f371c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -20,15 +20,15 @@ not_in_nav: | /snippets/* nav: - Ibexa Developer Documentation: index.md - - Ibexa DXP editions: + - Cohesivo editions: - Editions: ibexa_products/editions.md - - Ibexa Headless: ibexa_products/ibexa_headless.md - - Ibexa Experience: ibexa_products/ibexa_experience.md - - Ibexa Commerce: ibexa_products/ibexa_commerce.md + - Cohesivo Headless: ibexa_products/ibexa_headless.md + - Cohesivo Experience: ibexa_products/ibexa_experience.md + - Cohesivo Commerce: ibexa_products/ibexa_commerce.md - Getting started: - Getting started: getting_started/getting_started.md - Requirements: getting_started/requirements.md - - Install Ibexa DXP: getting_started/install_ibexa_dxp.md + - Install Cohesivo: getting_started/install_cohesivo.md - Install on MacOS and Windows: getting_started/install_on_mac_os_and_windows.md - Install with DDEV: getting_started/install_with_ddev.md - First steps: getting_started/first_steps.md @@ -885,7 +885,7 @@ nav: - Security advisories: infrastructure_and_maintenance/security/security_advisories.md - Support and maintenance FAQ: infrastructure_and_maintenance/support_and_maintenance_faq.md - Update and migration: - - Update Ibexa DXP: update_and_migration/update_ibexa_dxp.md + - Update your system: update_and_migration/update_system.md - Update from v1.13 and v2.x: - Update from v1.13 and v2.x: update_and_migration/from_1.x_2.x/update_from_1.x_2.x.md - Update app to v2.5: update_and_migration/from_1.x_2.x/update_app_to_2.5.md @@ -934,7 +934,7 @@ nav: - Resources: - Resources: resources/resources.md - Release process and roadmap: resources/release_process_and_roadmap.md - - Ibexa DXP PhpStorm plugin: resources/phpstorm_plugin.md + - Ibexa PhpStorm plugin: resources/phpstorm_plugin.md - New in documentation: resources/new_in_doc.md - Contributing: - Report and follow issues: resources/contributing/report_and_follow_issues.md @@ -1005,7 +1005,7 @@ extra: # Global variables site_display_name: 'Ibexa Documentation' product_name_base: 'Ibexa' - product_name: 'Ibexa DXP' + product_name: 'Cohesivo' product_name_content: 'Ibexa Content' product_name_headless: 'Ibexa Headless' product_name_exp: 'Ibexa Experience' diff --git a/plugins.yml b/plugins.yml index a7c1c044bf1..e4c2df93642 100644 --- a/plugins.yml +++ b/plugins.yml @@ -520,7 +520,8 @@ plugins: 'community_resources/translations.md': 'resources/contributing/contribute_translations.md' 'community_resources/package_structure.md': 'resources/contributing/package_structure.md' - 'updating/update_ibexa_dxp.md': 'update_and_migration/update_ibexa_dxp.md' + 'updating/update_ibexa_dxp.md': 'update_and_migration/update_system.md' + 'update_and_migration/update_ibexa_dxp.md': 'update_and_migration/update_system.md' 'updating/from_1.x_2.x/update_from_1.x_2.x.md': 'update_and_migration/from_1.x_2.x/update_from_1.x_2.x.md' 'updating/from_1.x_2.x/update_app_to_2.5.md': 'update_and_migration/from_1.x_2.x/update_app_to_2.5.md' 'updating/from_1.x_2.x/update_db_to_2.5.md': 'update_and_migration/from_1.x_2.x/update_db_to_2.5.md' From f04b191ddcb37e274effd114bee9b16bca65066f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Tue, 4 Aug 2026 07:29:40 +0200 Subject: [PATCH 09/17] Replace Ibexa DXP in descriptions, rename installation article --- docs/administration/administration.md | 2 +- docs/administration/project_organization/bundles.md | 2 +- docs/administration/recent_activity/recent_activity.md | 2 +- docs/api/api.md | 2 +- docs/commerce/commerce.md | 2 +- docs/content_management/content_management.md | 2 +- docs/content_management/content_model.md | 2 +- docs/content_management/url_management/url_management.md | 2 +- docs/discounts/configure_discounts.md | 2 +- docs/getting_started/first_steps.md | 2 +- docs/getting_started/getting_started.md | 4 ++-- .../{install_ibexa_dxp.md => install_cohesivo.md} | 4 ++-- docs/getting_started/install_on_mac_os_and_windows.md | 6 +++--- docs/getting_started/install_with_ddev.md | 8 ++++---- docs/getting_started/requirements.md | 2 +- docs/getting_started/troubleshooting.md | 2 +- docs/ibexa_cloud/ibexa_cloud_guide.md | 2 +- docs/ibexa_cloud/install_on_ibexa_cloud.md | 4 ++-- docs/ibexa_products/editions.md | 2 +- docs/ibexa_products/ibexa_commerce.md | 4 ++-- docs/ibexa_products/ibexa_experience.md | 2 +- docs/infrastructure_and_maintenance/databases.md | 4 ++-- docs/infrastructure_and_maintenance/devops.md | 4 ++-- docs/infrastructure_and_maintenance/environments.md | 2 +- docs/infrastructure_and_maintenance/performance.md | 2 +- docs/infrastructure_and_maintenance/request_lifecycle.md | 2 +- .../security/security_checklist.md | 2 +- docs/infrastructure_and_maintenance/sessions.md | 2 +- docs/product_catalog/product_catalog.md | 2 +- docs/product_guides/product_guides.md | 2 +- docs/raptor_cdp/raptor_cdp_data_export_schedule.md | 2 +- docs/raptor_cdp/raptor_cdp_guide.md | 2 +- docs/release_notes/release_notes.md | 3 +-- docs/resources/new_in_doc.md | 4 ++-- docs/resources/resources.md | 2 +- docs/search/search.md | 2 +- docs/tutorials/beginner_tutorial/1_get_ready.md | 2 +- .../1_implement_the_point2d_value_class.md | 2 +- .../page_and_form_tutorial/1_get_a_starter_website.md | 2 +- docs/tutorials/tutorials.md | 2 +- docs/users/oauth_client.md | 2 +- docs/users/oauth_server.md | 2 +- docs/users/user_management_guide.md | 2 +- docs/users/users.md | 2 +- mkdocs.yml | 1 + plugins.yml | 3 ++- 46 files changed, 59 insertions(+), 58 deletions(-) rename docs/getting_started/{install_ibexa_dxp.md => install_cohesivo.md} (99%) diff --git a/docs/administration/administration.md b/docs/administration/administration.md index 6a333d4feab..b371a4788a6 100644 --- a/docs/administration/administration.md +++ b/docs/administration/administration.md @@ -1,5 +1,5 @@ --- -description: Administer and configure your Ibexa DXP installation. +description: Administer and configure your Cohesivo installation. page_type: landing_page --- diff --git a/docs/administration/project_organization/bundles.md b/docs/administration/project_organization/bundles.md index 8d8202490e4..e9904e107d4 100644 --- a/docs/administration/project_organization/bundles.md +++ b/docs/administration/project_organization/bundles.md @@ -138,7 +138,7 @@ The following packages are optional and can be installed independently. |Bundle|Description| |---------|-----------| |[ibexa/automated-translation](https://github.com/ibexa/automated-translation)|Automated translation of content using [Google Translate or DeepL](automated_translations.md)| -|ibexa/cdp|Integration with [[[= product_name_cdp =]]](raptor_cdp.md)| +|ibexa/cdp|Integration with [[[= product_name_cdp =]]](../../raptor_cdp/raptor_cdp.md)| |[ibexa/cloud](https://github.com/ibexa/cloud)|Integration with [[[= product_name_cloud =]]](/ibexa_cloud/ibexa_cloud.md)| In addition, you can extend the capabilities of your project by installing additional [LTS Updates](editions.md#lts-updates). diff --git a/docs/administration/recent_activity/recent_activity.md b/docs/administration/recent_activity/recent_activity.md index eb39877f93f..59a00dd93bc 100644 --- a/docs/administration/recent_activity/recent_activity.md +++ b/docs/administration/recent_activity/recent_activity.md @@ -34,7 +34,7 @@ ibexa: To automate a regular truncation, you must schedule the command `ibexa:activity-log:truncate`. To minimize the number of entries to delete, it's recommended that you execute the command more than one time a day. -For more information, see [Additional scheduled tasks and advanced usage](install_ibexa_dxp.md#additional-scheduled-tasks-and-advanced-usage). +For more information, see [Additional scheduled tasks and advanced usage](install_cohesivo.md#additional-scheduled-tasks-and-advanced-usage). ### Display limit diff --git a/docs/api/api.md b/docs/api/api.md index 7d3cf2ede9d..b7f13972d57 100644 --- a/docs/api/api.md +++ b/docs/api/api.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP is an API-first product and provides APIs to handle content and repository information. +description: Cohesivo is an API-first product and provides APIs to handle content and repository information. page_type: landing_page --- diff --git a/docs/commerce/commerce.md b/docs/commerce/commerce.md index 773bdb8f99c..9e84ecfb728 100644 --- a/docs/commerce/commerce.md +++ b/docs/commerce/commerce.md @@ -1,5 +1,5 @@ --- -description: The commerce component of Ibexa DXP covers various steps of making a transaction from listing available products, through adding products to a cart, to checkout and confirmation. +description: The commerce component of Cohesivo covers various steps of making a transaction from listing available products, through adding products to a cart, to checkout and confirmation. edition: commerce page_type: landing_page --- diff --git a/docs/content_management/content_management.md b/docs/content_management/content_management.md index d83dda32712..02d6abe4efd 100644 --- a/docs/content_management/content_management.md +++ b/docs/content_management/content_management.md @@ -1,5 +1,5 @@ --- -description: Manage content in Ibexa DXP by learning about the content model, field types, pages, forms, workflows, and more. +description: Manage content in Cohesivo by learning about the content model, field types, pages, forms, workflows, and more. page_type: landing_page --- diff --git a/docs/content_management/content_model.md b/docs/content_management/content_model.md index 272c76fedf8..7a80c06ca4d 100644 --- a/docs/content_management/content_model.md +++ b/docs/content_management/content_model.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP's content model relies on content items that are instances of content types and contain content fields. +description: Cohesivo's content model relies on content items that are instances of content types and contain content fields. --- # Content model diff --git a/docs/content_management/url_management/url_management.md b/docs/content_management/url_management/url_management.md index 8fdb19956f5..6d109ae0b55 100644 --- a/docs/content_management/url_management/url_management.md +++ b/docs/content_management/url_management/url_management.md @@ -37,7 +37,7 @@ The following protocols are currently supported: To enable automatic URL validation, set up a scheduled task to run the `ibexa:check-urls` command periodically. -For more information, see [Additional scheduled tasks and advanced usage](install_ibexa_dxp.md#additional-scheduled-tasks-and-advanced-usage). +For more information, see [Additional scheduled tasks and advanced usage](install_cohesivo.md#additional-scheduled-tasks-and-advanced-usage). ### Configuration diff --git a/docs/discounts/configure_discounts.md b/docs/discounts/configure_discounts.md index 425915e4b8a..00868134f2e 100644 --- a/docs/discounts/configure_discounts.md +++ b/docs/discounts/configure_discounts.md @@ -55,7 +55,7 @@ php bin/console messenger:consume ibexa.messenger.transport --bus=ibexa.messenge php bin/console ibexa:discounts:reindex ``` -For more information about command scheduling, see [Additional scheduled tasks and advanced usage](install_ibexa_dxp.md#additional-scheduled-tasks-and-advanced-usage). +For more information about command scheduling, see [Additional scheduled tasks and advanced usage](install_cohesivo.md#additional-scheduled-tasks-and-advanced-usage). !!! note "Deploying Symfony Messenger" diff --git a/docs/getting_started/first_steps.md b/docs/getting_started/first_steps.md index 9f9ffbb916d..2cdbb1df347 100644 --- a/docs/getting_started/first_steps.md +++ b/docs/getting_started/first_steps.md @@ -1,5 +1,5 @@ --- -description: Start off working with Ibexa DXP by doing initial configuration and testing system capabilities. +description: Start off working with Cohesivo by doing initial configuration and testing system capabilities. --- # First steps diff --git a/docs/getting_started/getting_started.md b/docs/getting_started/getting_started.md index 67e89c4cd3e..84eace2204c 100644 --- a/docs/getting_started/getting_started.md +++ b/docs/getting_started/getting_started.md @@ -1,5 +1,5 @@ --- -description: Get started working with Ibexa DXP by learning about the requirements and installing the platform. +description: Get started working with Cohesivo by learning about the requirements and installing the platform. page_type: landing_page --- @@ -9,6 +9,6 @@ To get started working with [[= product_name =]], see how you can get an install [[= cards([ "getting_started/requirements", - "getting_started/install_ibexa_dxp", + "getting_started/install_cohesivo", "getting_started/first_steps", ], columns=3) =]] diff --git a/docs/getting_started/install_ibexa_dxp.md b/docs/getting_started/install_cohesivo.md similarity index 99% rename from docs/getting_started/install_ibexa_dxp.md rename to docs/getting_started/install_cohesivo.md index 2049cd7fe8a..2a59a4f8a3c 100644 --- a/docs/getting_started/install_ibexa_dxp.md +++ b/docs/getting_started/install_cohesivo.md @@ -1,9 +1,9 @@ --- -description: Install Ibexa DXP on a Linux system and prepare your installation for production. +description: Install Cohesivo on a Linux system and prepare your installation for production. month_change: false --- -# Install Ibexa DXP +# Install [[= product_name =]] !!! note diff --git a/docs/getting_started/install_on_mac_os_and_windows.md b/docs/getting_started/install_on_mac_os_and_windows.md index ac25171b4db..ea89f0a07b8 100644 --- a/docs/getting_started/install_on_mac_os_and_windows.md +++ b/docs/getting_started/install_on_mac_os_and_windows.md @@ -1,5 +1,5 @@ --- -description: Install Ibexa DXP on a macOS or Windows system to use it for development. +description: Install Cohesivo on a macOS or Windows system to use it for development. --- # Install [[= product_name =]] on macOS or Windows @@ -11,7 +11,7 @@ This page explains how to install [[= product_name =]] on macOS or Windows. This procedure is **for development purposes only**. Installing [[= product_name =]] for production purposes is supported only on Linux. - For information about installing the product on Linux, see [Install [[= product_name =]]](install_ibexa_dxp.md). + For information about installing the product on Linux, see [Install [[= product_name =]]](install_cohesivo.md). ## Prepare work environment @@ -74,7 +74,7 @@ The instructions below assume that you're using Apache. ## Install [[= product_name =]] At this point the installation procedure is the same as when installing on Linux. -Follow the steps from the main [Install [[= product_name =]]](install_ibexa_dxp.md#install-ibexa-dxp) page. +Follow the steps from the main [Install [[= product_name =]]](install_cohesivo.md#install-cohesivo) page. ## Set up virtual host diff --git a/docs/getting_started/install_with_ddev.md b/docs/getting_started/install_with_ddev.md index f959c0a3990..931f2a0f7be 100644 --- a/docs/getting_started/install_with_ddev.md +++ b/docs/getting_started/install_with_ddev.md @@ -1,5 +1,5 @@ --- -description: Install Ibexa DXP with Docker and DDEV to use it for development. +description: Install Cohesivo with Docker and DDEV to use it for development. month_change: false --- @@ -63,7 +63,7 @@ Depending on your database of choice (MySQL or PostgreSQL), use the appropriate !!! note - Those commands set a `DATABASE_URL` environment variable inside the container which overrides [the variable from `.env`](install_ibexa_dxp.md#change-installation-parameters). + Those commands set a `DATABASE_URL` environment variable inside the container which overrides [the variable from `.env`](install_cohesivo.md#change-installation-parameters). To use `.env.local` file instead of server-level environment variables, see [Using dotenv](#using-dotenv). @@ -131,7 +131,7 @@ ddev start ### 4. Composer authentication -Next, you need to [set up authentication tokens](install_ibexa_dxp.md#set-up-authentication-tokens) by modifying the Composer configuration. +Next, you need to [set up authentication tokens](install_cohesivo.md#set-up-authentication-tokens) by modifying the Composer configuration. You must run the following command **after** executing `ddev start`, because the command runs inside the container. Replace `` and `` with your actual installation key and token password. @@ -387,7 +387,7 @@ To run an existing project, you need to: - getting a clean database with `ddev php bin/console ibexa:install` and adding some data with [Ibexa data migration](importing_data.md), or - injecting a dump with [`ddev import-db`](https://docs.ddev.com/en/stable/users/usage/commands/#import-db) and copying related binary files into `public/var`. -The following examples run an already [version-controlled project](install_ibexa_dxp.md#add-project-to-version-control) and have the right content structure (but no content): +The following examples run an already [version-controlled project](install_cohesivo.md#add-project-to-version-control) and have the right content structure (but no content): ```bash # Clone the version-controlled project and enter its local directory diff --git a/docs/getting_started/requirements.md b/docs/getting_started/requirements.md index b6a9d9545f6..311ad4e4a1e 100644 --- a/docs/getting_started/requirements.md +++ b/docs/getting_started/requirements.md @@ -1,5 +1,5 @@ --- -description: System, component and package requirements for running Ibexa DXP. +description: System, component and package requirements for running Cohesivo. month_change: false --- diff --git a/docs/getting_started/troubleshooting.md b/docs/getting_started/troubleshooting.md index 0561268afe4..3c7fcb37a3c 100644 --- a/docs/getting_started/troubleshooting.md +++ b/docs/getting_started/troubleshooting.md @@ -1,5 +1,5 @@ --- -description: See what issues you can encounter when installing Ibexa DXP and how to resolve them. +description: See what issues you can encounter when installing Cohesivo and how to resolve them. --- # Troubleshooting diff --git a/docs/ibexa_cloud/ibexa_cloud_guide.md b/docs/ibexa_cloud/ibexa_cloud_guide.md index baa3536bfad..2b77923693e 100644 --- a/docs/ibexa_cloud/ibexa_cloud_guide.md +++ b/docs/ibexa_cloud/ibexa_cloud_guide.md @@ -13,7 +13,7 @@ As a diverse Platform as a Service (PaaS), it's designed to allow you to focus o [[= product_name_cloud =]] is a part of [[= product_name =]] - a software that is designed to provide your business with all the features, functionality, and support your need to transform your business for the digital age. -![Ibexa Cloud - part of Ibexa DXP](ibexa_cloud_dxp.png) +![Ibexa Cloud - part of [[= product_name =]]](../getting_started/img/ibexa_cloud_dxp.png) ## Availability diff --git a/docs/ibexa_cloud/install_on_ibexa_cloud.md b/docs/ibexa_cloud/install_on_ibexa_cloud.md index 793fe9d5a42..c41b94cf8e6 100644 --- a/docs/ibexa_cloud/install_on_ibexa_cloud.md +++ b/docs/ibexa_cloud/install_on_ibexa_cloud.md @@ -1,5 +1,5 @@ --- -description: Install and configure Ibexa DXP to run in cloud using [[= product_name_cloud =]]. +description: Install and configure Cohesivo to run in cloud using [[= product_name_cloud =]]. month_change: false --- @@ -104,7 +104,7 @@ You can also use the [[[= product_name_cloud =]] CLI](https://cli.ibexa.cloud/) ibexa_cloud push main ``` -The [database installer](install_ibexa_dxp.md#create-a-database) runs in non-interactive mode and keeps the default password for the `admin` user. +The [database installer](install_cohesivo.md#create-a-database) runs in non-interactive mode and keeps the default password for the `admin` user. Modify this password after the installation, for example, by using [data migrations](importing_data.md#users) or the [user management command](update_basic_user_data.md#change-password). !!! note diff --git a/docs/ibexa_products/editions.md b/docs/ibexa_products/editions.md index 9768fc376e9..9c1842a134f 100644 --- a/docs/ibexa_products/editions.md +++ b/docs/ibexa_products/editions.md @@ -1,5 +1,5 @@ --- -description: Learn more about various Ibexa DXP editions' features to help yourself choose the right one for your project. +description: Learn more about various Cohesivo editions' features to help yourself choose the right one for your project. page_type: landing_page --- diff --git a/docs/ibexa_products/ibexa_commerce.md b/docs/ibexa_products/ibexa_commerce.md index 67392155bfd..64cdbfbe2d0 100644 --- a/docs/ibexa_products/ibexa_commerce.md +++ b/docs/ibexa_products/ibexa_commerce.md @@ -1,5 +1,5 @@ --- -description: Explore all of the key features, functionalities, and advantages of Ibexa Commerce, the most powerful edition that Ibexa DXP has to offer. +description: Explore all of the key features, functionalities, and advantages of Ibexa Commerce, the most powerful edition that Cohesivo has to offer. month_change: false --- @@ -27,7 +27,7 @@ You can also [contact us](https://www.ibexa.co/about-ibexa/contact-us) or [one o ### Technical backstage -With an active license, you can start the [installation process](install_ibexa_dxp.md) that uses the Composer. +With an active license, you can start the [installation process](install_cohesivo.md) that uses the Composer. [[= product_name_com =]] is based on [Symfony]([[= symfony_doc =]]). With a help of documentation and trainings, any developer familiar with Symfony or even PHP alone can learn how to use available extension points and extend the platform. diff --git a/docs/ibexa_products/ibexa_experience.md b/docs/ibexa_products/ibexa_experience.md index aa1f492e803..8676f394a11 100644 --- a/docs/ibexa_products/ibexa_experience.md +++ b/docs/ibexa_products/ibexa_experience.md @@ -25,7 +25,7 @@ You can also [contact us](https://www.ibexa.co/about-ibexa/contact-us) or [one o ### Technical backstage -With an active license, you can start the [installation process](install_ibexa_dxp.md) that uses the Composer. +With an active license, you can start the [installation process](install_cohesivo.md) that uses the Composer. [[= product_name_exp =]] is based on [Symfony]([[= symfony_doc =]]). With a help of documentation and trainings, any developer familiar with Symfony or simply PHP may learn how to use available extension points and extend the platform. diff --git a/docs/infrastructure_and_maintenance/databases.md b/docs/infrastructure_and_maintenance/databases.md index 0ad31fe7884..eba92e555ed 100644 --- a/docs/infrastructure_and_maintenance/databases.md +++ b/docs/infrastructure_and_maintenance/databases.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP can use MySQL, PostgreSQL or MariaDB as its database. +description: Cohesivo can use MySQL, PostgreSQL or MariaDB as its database. --- # Databases @@ -14,7 +14,7 @@ To use PostgreSQL, you need to have the `pdo_pgsql` PHP extension installed. ### Provide parameters -When you run `composer install`, you're asked to [provide installation parameters](install_ibexa_dxp.md#change-installation-parameters). +When you run `composer install`, you're asked to [provide installation parameters](install_cohesivo.md#change-installation-parameters). !!! tip diff --git a/docs/infrastructure_and_maintenance/devops.md b/docs/infrastructure_and_maintenance/devops.md index 2fb47269b5b..ea604d7449c 100644 --- a/docs/infrastructure_and_maintenance/devops.md +++ b/docs/infrastructure_and_maintenance/devops.md @@ -1,5 +1,5 @@ --- -description: See various tools that can help you debug your Ibexa DXP installation. +description: See various tools that can help you debug your Cohesivo installation. --- # DevOps @@ -86,7 +86,7 @@ composer require --dev symfony/debug-pack After you have installed Symfony Web Debug Toolbar, it's available when running [[= product_name =]] in the `dev` environment. It's extended with some [[= product_name =]]-specific information: -![Ibexa DXP info in Web Debug Toolbar](web_debug_toolbar.png "Ibexa DXP info in Web Debug Toolbar") +![[[= product_name =]] info in Web Debug Toolbar](img/web_debug_toolbar.png "Ibexa DXP info in Web Debug Toolbar") ### SPI (persistence) diff --git a/docs/infrastructure_and_maintenance/environments.md b/docs/infrastructure_and_maintenance/environments.md index 752011d68fd..91287a9d803 100644 --- a/docs/infrastructure_and_maintenance/environments.md +++ b/docs/infrastructure_and_maintenance/environments.md @@ -1,5 +1,5 @@ --- -description: In Ibexa DXP you can use environment provided by Symfony in virtual host configuration, and to create custom environments. +description: In Cohesivo you can use environment provided by Symfony in virtual host configuration, and to create custom environments. --- # Environments diff --git a/docs/infrastructure_and_maintenance/performance.md b/docs/infrastructure_and_maintenance/performance.md index b3886d3625e..4f033dcf474 100644 --- a/docs/infrastructure_and_maintenance/performance.md +++ b/docs/infrastructure_and_maintenance/performance.md @@ -1,5 +1,5 @@ --- -description: Ensure that your Ibexa DXP installation performs well by following our set of recommendations. +description: Ensure that your Cohesivo installation performs well by following our set of recommendations. --- # Performance diff --git a/docs/infrastructure_and_maintenance/request_lifecycle.md b/docs/infrastructure_and_maintenance/request_lifecycle.md index bd403c5ae24..5977c30c946 100644 --- a/docs/infrastructure_and_maintenance/request_lifecycle.md +++ b/docs/infrastructure_and_maintenance/request_lifecycle.md @@ -1,5 +1,5 @@ --- -description: See the lifecycle of an HTTP request in Ibexa DXP, from request to response. +description: See the lifecycle of an HTTP request in Cohesivo, from request to response. --- # Request lifecycle: from request to response diff --git a/docs/infrastructure_and_maintenance/security/security_checklist.md b/docs/infrastructure_and_maintenance/security/security_checklist.md index 174ace2a370..9f752043c58 100644 --- a/docs/infrastructure_and_maintenance/security/security_checklist.md +++ b/docs/infrastructure_and_maintenance/security/security_checklist.md @@ -223,7 +223,7 @@ For more information, see [PHP's own security manual](https://www.php.net/manual ### Block execution of scripts in `var` directory Make sure that the web server blocks the execution of PHP files and other scripts in the `var` directory. -See the line below `# Disable .php(3) and other executable extensions in the var directory` in the example virtual host files for Apache and Nginx, provided in the [installation documentation](install_ibexa_dxp.md#set-up-virtual-host). +See the line below `# Disable .php(3) and other executable extensions in the var directory` in the example virtual host files for Apache and Nginx, provided in the [installation documentation](install_cohesivo.md#set-up-virtual-host). ### Security headers diff --git a/docs/infrastructure_and_maintenance/sessions.md b/docs/infrastructure_and_maintenance/sessions.md index 697fcc04222..fe793fab142 100644 --- a/docs/infrastructure_and_maintenance/sessions.md +++ b/docs/infrastructure_and_maintenance/sessions.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP uses Symfony to handle user sessions, with support for SiteAccess-aware session cookie configuration. +description: Cohesivo uses Symfony to handle user sessions, with support for SiteAccess-aware session cookie configuration. --- # Sessions diff --git a/docs/product_catalog/product_catalog.md b/docs/product_catalog/product_catalog.md index 72a7e307c25..be02c6b51c0 100644 --- a/docs/product_catalog/product_catalog.md +++ b/docs/product_catalog/product_catalog.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP provides product catalog capabilities for managing products, product types, variants, attributes, pricing, and catalogs. +description: Cohesivo provides product catalog capabilities for managing products, product types, variants, attributes, pricing, and catalogs. page_type: landing_page month_change: false --- diff --git a/docs/product_guides/product_guides.md b/docs/product_guides/product_guides.md index 23e7c70dd24..3f0a53f5030 100644 --- a/docs/product_guides/product_guides.md +++ b/docs/product_guides/product_guides.md @@ -1,5 +1,5 @@ --- -description: Discover various Ibexa DXP features. +description: Discover various Cohesivo features. page_type: landing_page month_change: false --- diff --git a/docs/raptor_cdp/raptor_cdp_data_export_schedule.md b/docs/raptor_cdp/raptor_cdp_data_export_schedule.md index 7b7a189e59d..5986ac9c7ff 100644 --- a/docs/raptor_cdp/raptor_cdp_data_export_schedule.md +++ b/docs/raptor_cdp/raptor_cdp_data_export_schedule.md @@ -70,4 +70,4 @@ php bin/console ibexa:cdp:stream-content-data --help The configuration is executed by `ibexa:cron:run` command which must be configured as a cron job. -For more information, see [Schedule tasks](install_ibexa_dxp.md#schedule-tasks). +For more information, see [Schedule tasks](install_cohesivo.md#schedule-tasks). diff --git a/docs/raptor_cdp/raptor_cdp_guide.md b/docs/raptor_cdp/raptor_cdp_guide.md index b4edbdf0e69..fc4dcebebe2 100644 --- a/docs/raptor_cdp/raptor_cdp_guide.md +++ b/docs/raptor_cdp/raptor_cdp_guide.md @@ -34,7 +34,7 @@ Customer data is gathered through a system of trackers embedded in various areas To start using [[= product_name_cdp =]], first you need to contact your sales representative, who provides you with a link to [register your [[= product_name_cdp =]] account](/raptor_cdp/raptor_cdp_installation.md#register-in-raptor-cdp-dashboard). When you're done with registration process, you're able to access a separate instance with the data needed to configure, activate, and use this feature. -After your account is created, you can [download and install the [[= product_name_cdp =]] package](/raptor_cdp/raptor_cdp_installation.md#install-cdp-package) that is opt-in and needs to be downloaded separately. +After your account is created, you can [download and install the [[= product_name_cdp =]] package](/raptor_cdp/raptor_cdp_installation.md#install-package) that is opt-in and needs to be downloaded separately. Last step is to go through the [configuration process](raptor_cdp_configuration.md). ### Customer profile diff --git a/docs/release_notes/release_notes.md b/docs/release_notes/release_notes.md index 3a128728d45..c8991814274 100644 --- a/docs/release_notes/release_notes.md +++ b/docs/release_notes/release_notes.md @@ -5,10 +5,9 @@ page_type: landing_page # Release notes -The latest stable and LTS (Long Term Support) version of [[= product_name =]] is [[[= product_name =]] v6.0](cohesivo_v6.0.md). +The latest stable and LTS (Long Term Support) version of [[= product_name =]] is [Ibexa DXP v5.0](ibexa_dxp_v5.0.md). [[= cards([ - "release_notes/cohesivo_v6.0", "release_notes/ibexa_dxp_v5.0", "release_notes/ibexa_dxp_v4.6", ], columns=2) =]] diff --git a/docs/resources/new_in_doc.md b/docs/resources/new_in_doc.md index 925b234be75..8ce43b2b40a 100644 --- a/docs/resources/new_in_doc.md +++ b/docs/resources/new_in_doc.md @@ -21,7 +21,7 @@ This page contains recent highlights and notable changes in Ibexa DXP and [[= pr ### Background tasks and scheduled tasks -- Reworked documentation about [scheduled tasks](install_ibexa_dxp.md#schedule-tasks) +- Reworked documentation about [scheduled tasks](install_cohesivo.md#schedule-tasks) - Described [Ibexa Messenger configuration for production](background_tasks.md#configure-for-production-environment) ## May 2026 @@ -140,7 +140,7 @@ This promotes skipping the rebuild of the Symfony container when environment var ### Getting started -- Added a description of password constraints in [Install Ibexa DXP](install_ibexa_dxp.md#create-a-database) and [Install with DDEV](install_with_ddev.md#6-install-the-platform-and-its-database) +- Added a description of password constraints in [Install Ibexa DXP](install_cohesivo.md#create-a-database) and [Install with DDEV](install_with_ddev.md#6-install-the-platform-and-its-database) ### Administration diff --git a/docs/resources/resources.md b/docs/resources/resources.md index c93d0b86dee..720d17daf16 100644 --- a/docs/resources/resources.md +++ b/docs/resources/resources.md @@ -1,5 +1,5 @@ --- -description: See additional information about Ibexa DXP development process, helpful tools, and learn how you can contribute to the creation of the platform. +description: See additional information about Cohesivo development process, helpful tools, and learn how you can contribute to the creation of the platform. page_type: landing_page --- diff --git a/docs/search/search.md b/docs/search/search.md index c1aa69d006a..1b4d7bf5f9b 100644 --- a/docs/search/search.md +++ b/docs/search/search.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP search functionalities allow working with three search engines and using search API to run complex and precise queries about content and products. +description: Cohesivo search functionalities allow working with three search engines and using search API to run complex and precise queries about content and products. page_type: landing_page --- diff --git a/docs/tutorials/beginner_tutorial/1_get_ready.md b/docs/tutorials/beginner_tutorial/1_get_ready.md index 2d4534e09be..aa822acac4e 100644 --- a/docs/tutorials/beginner_tutorial/1_get_ready.md +++ b/docs/tutorials/beginner_tutorial/1_get_ready.md @@ -6,7 +6,7 @@ description: Start the tutorial by getting a clean installation of Ibexa DXP. To begin the tutorial, you need a clean installation of [[= product_name =]]. -Get it by following the [install Ibexa DXP](install_ibexa_dxp.md) guide. +Get it by following the [install Ibexa DXP](install_cohesivo.md) guide. You need a web server, a relational database and PHP. The clean installation contains only a root content item which displays a welcome page. diff --git a/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md b/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md index d0af45e5ac5..8f50a166e76 100644 --- a/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md +++ b/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md @@ -7,7 +7,7 @@ description: Learn how to create a Value class that stores the value of the fiel ## Project installation To start the tutorial, you need to make a clean [[= product_name =]] installation. -Follow the guide for your system to [install Ibexa DXP](install_ibexa_dxp.md), [configure a server](requirements.md), and [start the web server](install_ibexa_dxp.md#use-phps-built-in-server). +Follow the guide for your system to [install Ibexa DXP](install_cohesivo.md), [configure a server](requirements.md), and [start the web server](install_cohesivo.md#use-phps-built-in-server). Remember to install using the `dev` environment. Open your project with a clean installation and create the base directory for a new Point 2D field type in `src/FieldType/Point2D`. diff --git a/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md b/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md index 7b99553e4ca..f883165543d 100644 --- a/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md +++ b/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md @@ -11,7 +11,7 @@ To set up the starter website, you need to follow these steps: To begin the tutorial, you need a clean installation of [[= product_name_exp =]]. -Get it by following the [Install Ibexa DXP](install_ibexa_dxp.md) guide. +Get it by following the [Install Ibexa DXP](install_cohesivo.md) guide. ## Add content types diff --git a/docs/tutorials/tutorials.md b/docs/tutorials/tutorials.md index bba1ea65bc0..f8e2cc4d9db 100644 --- a/docs/tutorials/tutorials.md +++ b/docs/tutorials/tutorials.md @@ -1,5 +1,5 @@ --- -description: Get started with tutorials to learn how to create a site with Ibexa DXP +description: Get started with tutorials to learn how to create a site with Cohesivo page_type: landing_page --- diff --git a/docs/users/oauth_client.md b/docs/users/oauth_client.md index 889f140682e..9dbb80e6fc1 100644 --- a/docs/users/oauth_client.md +++ b/docs/users/oauth_client.md @@ -1,5 +1,5 @@ --- -description: Allow users to log into Ibexa DXP through external OAuth2 authorization servers. +description: Allow users to log into Cohesivo through external OAuth2 authorization servers. --- # OAuth client diff --git a/docs/users/oauth_server.md b/docs/users/oauth_server.md index d61f152fc34..2210e47b120 100644 --- a/docs/users/oauth_server.md +++ b/docs/users/oauth_server.md @@ -1,5 +1,5 @@ --- -description: Other applications can authenticate Ibexa DXP users through OAuth2 protocol then access to their resources on the platform. +description: Other applications can authenticate Cohesivo users through OAuth2 protocol then access to their resources on the platform. --- # OAuth Server diff --git a/docs/users/user_management_guide.md b/docs/users/user_management_guide.md index cbedff4cda6..3e964c76e80 100644 --- a/docs/users/user_management_guide.md +++ b/docs/users/user_management_guide.md @@ -1,5 +1,5 @@ --- -description: Find out what's user management and check what functions Ibexa DXP offers in this area to effectively manage the digital ecosystem. +description: Find out what's user management and check what functions Cohesivo offers in this area to effectively manage the digital ecosystem. --- # User management product guide diff --git a/docs/users/users.md b/docs/users/users.md index 5ce0f277cb4..04a1152c1df 100644 --- a/docs/users/users.md +++ b/docs/users/users.md @@ -1,5 +1,5 @@ --- -description: Users in Ibexa DXP refer to all kinds of user accounts, such as administrators, editors, managers or shop customers. +description: Users in Cohesivo refer to all kinds of user accounts, such as administrators, editors, managers or shop customers. page_type: landing_page --- diff --git a/mkdocs.yml b/mkdocs.yml index 32ba35f371c..5fb14b0258a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1012,6 +1012,7 @@ extra: product_name_com: 'Ibexa Commerce' product_name_cdp: 'Raptor CDP' product_name_cdp_base: 'Raptor' + product_name_connect: 'Ibexa Connect' product_name_cloud: 'Ibexa Cloud' product_name_oss: 'Ibexa OSS' product_name_engage: 'Qualifio' diff --git a/plugins.yml b/plugins.yml index e4c2df93642..16ce974ee4e 100644 --- a/plugins.yml +++ b/plugins.yml @@ -571,7 +571,8 @@ plugins: 'releases/ez_platform_v1.8.0.md': 'release_notes/ez_platform_v1.8.0.md' 'releases/ez_platform_v1.7.0_lts.md': 'release_notes/ez_platform_v1.7.0_lts.md' - 'getting_started/install_ez_platform.md': 'getting_started/install_ibexa_dxp.md' + 'getting_started/install_ez_platform.md': 'getting_started/install_cohesivo.md' + 'getting_started/install_ibexa_dxp.md': 'getting_started/install_cohesivo.md' 'templating/layout/create_user_registration_form.md': 'customer_management/create_user_registration_form.md' 'templating/twig_function_reference/other_twig_filters.md': 'templating/twig_function_reference/icon_twig_functions.md' From 9068874fc2148cab4939192381f0f8a1c27e3b8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Tue, 4 Aug 2026 10:43:36 +0200 Subject: [PATCH 10/17] Replace missed Ibexa DXP occurrences in article metadata --- docs/administration/admin_panel/admin_panel.md | 2 +- .../admin_panel/languages_admin_panel.md | 2 +- docs/administration/back_office/product_tour.md | 2 +- .../configuration/configuration.md | 2 +- .../project_organization/architecture.md | 2 +- .../project_organization/bundles.md | 2 +- .../project_organization/project_organization.md | 2 +- docs/ai/ai.md | 2 +- docs/ai/mcp/mcp.md | 2 +- docs/api/event_reference/event_reference.md | 2 +- docs/api/graphql/graphql.md | 2 +- .../rest_api/rest_api_usage/rest_api_usage.md | 2 +- .../field_type_reference/field_type_reference.md | 2 +- .../pages/page_builder_guide.md | 2 +- .../rich_text/online_editor_guide.md | 2 +- docs/content_management/rich_text/rich_text.md | 2 +- .../cache/cache.md | 2 +- .../cache/http_cache/fastly.md | 2 +- .../cache/http_cache/http_cache.md | 2 +- .../cache/http_cache/http_cache_configuration.md | 2 +- .../cache/http_cache/reverse_proxy.md | 2 +- .../clustering/clustering.md | 2 +- .../security/development_security.md | 2 +- .../security/reporting_issues.md | 2 +- .../security/security_checklist.md | 2 +- .../quable/configure_quable_connector.md | 2 +- docs/product_catalog/quable/install_quable.md | 2 +- docs/product_catalog/quable/quable.md | 2 +- docs/product_catalog/quable/quable_guide.md | 2 +- .../contributing/contribute_translations.md | 2 +- docs/resources/contributing/package_structure.md | 2 +- docs/resources/new_in_doc.md | 2 +- docs/resources/phpstorm_plugin.md | 16 ++++++++-------- docs/resources/release_process_and_roadmap.md | 2 +- .../elasticsearch/configure_elasticsearch.md | 2 +- .../elasticsearch/install_elasticsearch.md | 2 +- .../legacy_search_engine/configure_repository.md | 2 +- docs/search/search_engines/search_engines.md | 2 +- .../solr_search_engine/configure_solr.md | 2 +- .../solr_search_engine/install_solr.md | 2 +- docs/templating/templates/templates.md | 2 +- docs/tutorials/beginner_tutorial/1_get_ready.md | 2 +- .../beginner_tutorial/6_improve_configuration.md | 2 +- .../beginner_tutorial/beginner_tutorial.md | 2 +- .../migrate_to_ibexa_dxp/common_issues.md | 2 +- 45 files changed, 52 insertions(+), 52 deletions(-) diff --git a/docs/administration/admin_panel/admin_panel.md b/docs/administration/admin_panel/admin_panel.md index dc5c18cad13..5b4f0abe15c 100644 --- a/docs/administration/admin_panel/admin_panel.md +++ b/docs/administration/admin_panel/admin_panel.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP back office contains managements options for permissions, users, languages, content types, and system information. +description: Cohesivo back office contains managements options for permissions, users, languages, content types, and system information. page_type: landing_page --- diff --git a/docs/administration/admin_panel/languages_admin_panel.md b/docs/administration/admin_panel/languages_admin_panel.md index fd6842bf400..5395bbbd807 100644 --- a/docs/administration/admin_panel/languages_admin_panel.md +++ b/docs/administration/admin_panel/languages_admin_panel.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP offers the ability to create multiple translations of your website. +description: Cohesivo offers the ability to create multiple translations of your website. --- # Languages diff --git a/docs/administration/back_office/product_tour.md b/docs/administration/back_office/product_tour.md index 1fa5f5cb3ee..ec8df708c5c 100644 --- a/docs/administration/back_office/product_tour.md +++ b/docs/administration/back_office/product_tour.md @@ -1,5 +1,5 @@ --- -description: Product tours provide interactive guided walkthroughs to help users learn Ibexa DXP features. +description: Product tours provide interactive guided walkthroughs to help users learn Cohesivo features. edition: lts-update month_change: false --- diff --git a/docs/administration/configuration/configuration.md b/docs/administration/configuration/configuration.md index 5ff421bebb7..2d9b8c9900d 100644 --- a/docs/administration/configuration/configuration.md +++ b/docs/administration/configuration/configuration.md @@ -1,5 +1,5 @@ --- -description: In Ibexa DXP you store and manage configuration in project files, typically in YAML format. +description: In Cohesivo you store and manage configuration in project files, typically in YAML format. --- # Configuration diff --git a/docs/administration/project_organization/architecture.md b/docs/administration/project_organization/architecture.md index ae9519f1b28..0adfb1ea409 100644 --- a/docs/administration/project_organization/architecture.md +++ b/docs/administration/project_organization/architecture.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP architecture is structured in multiple layers connected by APIs. +description: Cohesivo architecture is structured in multiple layers connected by APIs. --- # Architecture diff --git a/docs/administration/project_organization/bundles.md b/docs/administration/project_organization/bundles.md index e9904e107d4..b374e70b85a 100644 --- a/docs/administration/project_organization/bundles.md +++ b/docs/administration/project_organization/bundles.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP is composed of bundles containing different parts of the application. +description: Cohesivo is composed of bundles containing different parts of the application. page_type: reference --- diff --git a/docs/administration/project_organization/project_organization.md b/docs/administration/project_organization/project_organization.md index 5803cea48de..077e607dfc2 100644 --- a/docs/administration/project_organization/project_organization.md +++ b/docs/administration/project_organization/project_organization.md @@ -1,5 +1,5 @@ --- -description: An Ibexa DXP project follows Symfony's directory structure to organize files in the project. +description: An Cohesivo project follows Symfony's directory structure to organize files in the project. --- # Project organization diff --git a/docs/ai/ai.md b/docs/ai/ai.md index 846866e5de9..775b6e4b6ef 100644 --- a/docs/ai/ai.md +++ b/docs/ai/ai.md @@ -1,5 +1,5 @@ --- -description: AI interactions with [[= product_name =]] +description: AI interactions with Cohesivo page_type: landing_page month_change: false --- diff --git a/docs/ai/mcp/mcp.md b/docs/ai/mcp/mcp.md index aa23e201396..d6f7df2b662 100644 --- a/docs/ai/mcp/mcp.md +++ b/docs/ai/mcp/mcp.md @@ -1,5 +1,5 @@ --- -description: Overview of MCP resources in [[= product_name =]] +description: Overview of MCP resources in Cohesivo page_type: landing_page edition: lts-update month_change: false diff --git a/docs/api/event_reference/event_reference.md b/docs/api/event_reference/event_reference.md index 6cc5792d698..99bab1fa3a3 100644 --- a/docs/api/event_reference/event_reference.md +++ b/docs/api/event_reference/event_reference.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP dispatches events before and after you perform different operations in the back office and on the Repository. +description: Cohesivo dispatches events before and after you perform different operations in the back office and on the Repository. page_type: reference --- diff --git a/docs/api/graphql/graphql.md b/docs/api/graphql/graphql.md index 6268c09a635..8693f353c57 100644 --- a/docs/api/graphql/graphql.md +++ b/docs/api/graphql/graphql.md @@ -1,5 +1,5 @@ --- -description: GraphQL enables making concise, readable requests to Ibexa DXP APIs. +description: GraphQL enables making concise, readable requests to Cohesivo APIs. --- # GraphQL diff --git a/docs/api/rest_api/rest_api_usage/rest_api_usage.md b/docs/api/rest_api/rest_api_usage/rest_api_usage.md index db775828fee..26072c89c19 100644 --- a/docs/api/rest_api/rest_api_usage/rest_api_usage.md +++ b/docs/api/rest_api/rest_api_usage/rest_api_usage.md @@ -1,5 +1,5 @@ --- -description: The REST API covers objects in the Ibexa DXP Repository with regular and custom HTTP methods, such as GET or PUBLISH, and HTTP headers. +description: The REST API covers objects in the Cohesivo Repository with regular and custom HTTP methods, such as GET or PUBLISH, and HTTP headers. --- # REST API usage diff --git a/docs/content_management/field_types/field_type_reference/field_type_reference.md b/docs/content_management/field_types/field_type_reference/field_type_reference.md index 275a3527bea..a39315f7e70 100644 --- a/docs/content_management/field_types/field_type_reference/field_type_reference.md +++ b/docs/content_management/field_types/field_type_reference/field_type_reference.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP offers a range of built-in field types that cover most common needs when creating content. +description: Cohesivo offers a range of built-in field types that cover most common needs when creating content. page_type: reference month_change: false --- diff --git a/docs/content_management/pages/page_builder_guide.md b/docs/content_management/pages/page_builder_guide.md index 4dc104396d8..c788655ffc6 100644 --- a/docs/content_management/pages/page_builder_guide.md +++ b/docs/content_management/pages/page_builder_guide.md @@ -1,5 +1,5 @@ --- -description: Read about the Page Builder - a powerful tool for creating and modifying pages in Ibexa DXP. +description: Read about the Page Builder - a powerful tool for creating and modifying pages in Cohesivo. edition: experience month_change: false --- diff --git a/docs/content_management/rich_text/online_editor_guide.md b/docs/content_management/rich_text/online_editor_guide.md index 72471f2ef48..a2a641e7b09 100644 --- a/docs/content_management/rich_text/online_editor_guide.md +++ b/docs/content_management/rich_text/online_editor_guide.md @@ -1,5 +1,5 @@ --- -description: Learn how to use the Online Editor, a tool that allows you to edit RichText Fields in any content item in Ibexa DXP. +description: Learn how to use the Online Editor, a tool that allows you to edit RichText Fields in any content item in Cohesivo. --- # Online Editor product guide diff --git a/docs/content_management/rich_text/rich_text.md b/docs/content_management/rich_text/rich_text.md index 5921b7017f0..60013a8700c 100644 --- a/docs/content_management/rich_text/rich_text.md +++ b/docs/content_management/rich_text/rich_text.md @@ -1,5 +1,5 @@ --- -description: RichText is a type of field that you add in any content item in Ibexa DXP and edit in Online Editor. +description: RichText is a type of field that you add in any content item in Cohesivo and edit in Online Editor. page_type: landing_page --- diff --git a/docs/infrastructure_and_maintenance/cache/cache.md b/docs/infrastructure_and_maintenance/cache/cache.md index 0ca8bf13cd8..2b34058271a 100644 --- a/docs/infrastructure_and_maintenance/cache/cache.md +++ b/docs/infrastructure_and_maintenance/cache/cache.md @@ -1,5 +1,5 @@ --- -description: For caching, Ibexa DXP offers both HTTP cache for content views, and persistence cache. +description: For caching, Cohesivo offers both HTTP cache for content views, and persistence cache. page_type: landing_page --- diff --git a/docs/infrastructure_and_maintenance/cache/http_cache/fastly.md b/docs/infrastructure_and_maintenance/cache/http_cache/fastly.md index fc009185ac1..426c880e9eb 100644 --- a/docs/infrastructure_and_maintenance/cache/http_cache/fastly.md +++ b/docs/infrastructure_and_maintenance/cache/http_cache/fastly.md @@ -1,5 +1,5 @@ --- -description: Configure Fastly for use with Ibexa DXP. +description: Configure Fastly for use with Cohesivo. month_change: false --- diff --git a/docs/infrastructure_and_maintenance/cache/http_cache/http_cache.md b/docs/infrastructure_and_maintenance/cache/http_cache/http_cache.md index 56d010379c0..0f2e21a17eb 100644 --- a/docs/infrastructure_and_maintenance/cache/http_cache/http_cache.md +++ b/docs/infrastructure_and_maintenance/cache/http_cache/http_cache.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP's HTTP cache functionalities enable using reverse proxies - Symfony HttpCache Proxy, Varnish or Fastly. +description: Cohesivo's HTTP cache functionalities enable using reverse proxies - Symfony HttpCache Proxy, Varnish or Fastly. --- # HTTP cache diff --git a/docs/infrastructure_and_maintenance/cache/http_cache/http_cache_configuration.md b/docs/infrastructure_and_maintenance/cache/http_cache/http_cache_configuration.md index 44373504cdb..5a06104e24c 100644 --- a/docs/infrastructure_and_maintenance/cache/http_cache/http_cache_configuration.md +++ b/docs/infrastructure_and_maintenance/cache/http_cache/http_cache_configuration.md @@ -1,5 +1,5 @@ --- -description: Configure HTTP cache for Ibexa DXP, including cache header rules and time-to-live. HTTP cache configuration is SiteAccess-aware. +description: Configure HTTP cache for Cohesivo, including cache header rules and time-to-live. HTTP cache configuration is SiteAccess-aware. --- # HTTP cache configuration diff --git a/docs/infrastructure_and_maintenance/cache/http_cache/reverse_proxy.md b/docs/infrastructure_and_maintenance/cache/http_cache/reverse_proxy.md index e0badab7b1e..e3a85faef6b 100644 --- a/docs/infrastructure_and_maintenance/cache/http_cache/reverse_proxy.md +++ b/docs/infrastructure_and_maintenance/cache/http_cache/reverse_proxy.md @@ -1,5 +1,5 @@ --- -description: You can use Symfony HttpCache Proxy, Varnish or Fastly as reverse proxies with Ibexa DXP. +description: You can use Symfony HttpCache Proxy, Varnish or Fastly as reverse proxies with Cohesivo. month_change: false --- diff --git a/docs/infrastructure_and_maintenance/clustering/clustering.md b/docs/infrastructure_and_maintenance/clustering/clustering.md index dff879be1b1..475500bee46 100644 --- a/docs/infrastructure_and_maintenance/clustering/clustering.md +++ b/docs/infrastructure_and_maintenance/clustering/clustering.md @@ -1,5 +1,5 @@ --- -description: Clustering enables you to host one installation of Ibexa DXP on multiple servers. +description: Clustering enables you to host one installation of Cohesivo on multiple servers. --- # Clustering diff --git a/docs/infrastructure_and_maintenance/security/development_security.md b/docs/infrastructure_and_maintenance/security/development_security.md index 61f5c08b0eb..5c2ecfefcdc 100644 --- a/docs/infrastructure_and_maintenance/security/development_security.md +++ b/docs/infrastructure_and_maintenance/security/development_security.md @@ -1,5 +1,5 @@ --- -description: Ensure the security of your Ibexa DXP installation by using one of the available authentication methods. +description: Ensure the security of your Cohesivo installation by using one of the available authentication methods. --- # Development security diff --git a/docs/infrastructure_and_maintenance/security/reporting_issues.md b/docs/infrastructure_and_maintenance/security/reporting_issues.md index aad919e18fd..043d7ba33d5 100644 --- a/docs/infrastructure_and_maintenance/security/reporting_issues.md +++ b/docs/infrastructure_and_maintenance/security/reporting_issues.md @@ -1,5 +1,5 @@ --- -description: Learn how to report security issues in Ibexa DXP. +description: Learn how to report security issues in Cohesivo. --- # Reporting security issues in Ibexa products diff --git a/docs/infrastructure_and_maintenance/security/security_checklist.md b/docs/infrastructure_and_maintenance/security/security_checklist.md index 9f752043c58..79d1a22f569 100644 --- a/docs/infrastructure_and_maintenance/security/security_checklist.md +++ b/docs/infrastructure_and_maintenance/security/security_checklist.md @@ -1,5 +1,5 @@ --- -description: Ensure that your Ibexa DXP installation is secure by following our set of recommendations. +description: Ensure that your Cohesivo installation is secure by following our set of recommendations. --- # Security checklist diff --git a/docs/product_catalog/quable/configure_quable_connector.md b/docs/product_catalog/quable/configure_quable_connector.md index 5ebebc398f4..80c9c3d7a49 100644 --- a/docs/product_catalog/quable/configure_quable_connector.md +++ b/docs/product_catalog/quable/configure_quable_connector.md @@ -1,5 +1,5 @@ --- -description: Quable connector configuration reference for Ibexa DXP +description: Quable connector configuration reference for Cohesivo page_type: reference month_change: false --- diff --git a/docs/product_catalog/quable/install_quable.md b/docs/product_catalog/quable/install_quable.md index ff44ad6d90a..0f9049fd264 100644 --- a/docs/product_catalog/quable/install_quable.md +++ b/docs/product_catalog/quable/install_quable.md @@ -1,5 +1,5 @@ --- -description: Install and configure Quable connector for Ibexa DXP +description: Install and configure Quable connector for Cohesivo month_change: false --- diff --git a/docs/product_catalog/quable/quable.md b/docs/product_catalog/quable/quable.md index 14ebfadc620..f516745d93f 100644 --- a/docs/product_catalog/quable/quable.md +++ b/docs/product_catalog/quable/quable.md @@ -1,5 +1,5 @@ --- -description: Quable integration with Ibexa DXP +description: Quable integration with Cohesivo page_type: landing_page month_change: false --- diff --git a/docs/product_catalog/quable/quable_guide.md b/docs/product_catalog/quable/quable_guide.md index fe5103c57dd..e4af8d6f06c 100644 --- a/docs/product_catalog/quable/quable_guide.md +++ b/docs/product_catalog/quable/quable_guide.md @@ -1,5 +1,5 @@ --- -description: The Quable product guide describes how you can use the product data from Quable in Ibexa DXP to create marketing campaigns built around your products. +description: The Quable product guide describes how you can use the product data from Quable in Cohesivo to create marketing campaigns built around your products. month_change: false --- diff --git a/docs/resources/contributing/contribute_translations.md b/docs/resources/contributing/contribute_translations.md index 656474ace78..5102ec50b45 100644 --- a/docs/resources/contributing/contribute_translations.md +++ b/docs/resources/contributing/contribute_translations.md @@ -1,5 +1,5 @@ --- -description: You can contribute back office translations to Ibexa DXP by using Crowdin. +description: You can contribute back office translations to Cohesivo by using Crowdin. month_change: false --- diff --git a/docs/resources/contributing/package_structure.md b/docs/resources/contributing/package_structure.md index 392610ed4bd..dcda1396d51 100644 --- a/docs/resources/contributing/package_structure.md +++ b/docs/resources/contributing/package_structure.md @@ -1,5 +1,5 @@ --- -description: All code contributions to Ibexa DXP must follow package and bundle structure and namespace standards. +description: All code contributions to Cohesivo must follow package and bundle structure and namespace standards. --- # Package and bundle structure and namespaces diff --git a/docs/resources/new_in_doc.md b/docs/resources/new_in_doc.md index 8ce43b2b40a..d8553c9f9df 100644 --- a/docs/resources/new_in_doc.md +++ b/docs/resources/new_in_doc.md @@ -1,5 +1,5 @@ --- -description: Overview of major recent additions to Ibexa DXP documentation. +description: Overview of major recent additions to Ibexa DXP and Cohesivo documentation. month_change: true --- diff --git a/docs/resources/phpstorm_plugin.md b/docs/resources/phpstorm_plugin.md index 527f412b3d3..ec8c5505aa2 100644 --- a/docs/resources/phpstorm_plugin.md +++ b/docs/resources/phpstorm_plugin.md @@ -4,7 +4,7 @@ description: The Ibexa DXP PhpStorm plugin helps you speed up your development b # Ibexa DXP plugin for PhpStorm -[[= product_name =]] plugin for PhpStorm helps you to work with [[= product_name =]] by speeding up installation and providing file templates, intentions, autocompletion, and other features. +Ibexa DXP plugin for PhpStorm helps you to work with [[= product_name =]] by speeding up installation and providing file templates, intentions, autocompletion, and other features. ## Requirements @@ -13,13 +13,13 @@ description: The Ibexa DXP PhpStorm plugin helps you speed up your development b ## Install PhpStorm plugin -You can install the [[= product_name =]] plugin for PhpStorm from the JetBrains Marketplace, or manually, from a downloaded .jar file. +You can install the Ibexa DXP plugin for PhpStorm from the JetBrains Marketplace, or manually, from a downloaded .jar file. ### Install from JetBrains Marketplace To install plugin from JetBrains marketplace: -Look for "[[= product_name =]]" in the plugin browser and click **Install**. +Look for "Ibexa DXP" in the plugin browser and click **Install**. ### Install from file @@ -31,7 +31,7 @@ You can also install the plugin manually from a `.jar` file: ## Configuration -Plugin configuration is available in PhpStorm settings/preferences (depending on your system), under **PHP** > **Frameworks** > **[[= product_name =]]**. +Plugin configuration is available in PhpStorm settings/preferences (depending on your system), under **PHP** > **Frameworks** > **Ibexa DXP**. You can use it to: @@ -46,16 +46,16 @@ You can use it to: For example, "deprecated namespaces usage" inspection is enabled only if the project uses v4.x. Plugin configuration is automatically resolved when opening [[= product_name =]] project for the first time. -If detection is successful, a notification appears with an "Enable [[= product_name =]] support for this project" link. +If detection is successful, a notification appears with an "Enable Ibexa DXP support for this project" link. -If you created your project by using [[= product_name =]] project wizard, the plugin is automatically enabled and configured based on wizard data. +If you created your project by using Ibexa DXP project wizard, the plugin is automatically enabled and configured based on wizard data. ## Features ### Project wizard The plugin enables creating a new [[= product_name =]] project directly from PhpStorm. -To do it, select **File** > **New Project...** > **[[= product_name =]]**. +To do it, select **File** > **New Project...** > **Ibexa DXP**. In project settings form you can choose: @@ -99,7 +99,7 @@ The plugin provides the following built-in file templates: | Value object visitor | REST value visitor class based on `Ibexa\Contracts\Rest\Output\ValueObjectVisitor` | | Workflow action listener | Workflow action listener class based on `Ibexa\Contracts\Workflow\Event\Action\AbstractTransitionWorkflowActionListener` | -The templates are available in, for example, the context menu in **Project window** > **New** > **[[= product_name =]]**. +The templates are available in, for example, the context menu in **Project window** > **New** > **Ibexa DXP**. The list of available file templates depends on the [[= product_name =]] edition used by the project. diff --git a/docs/resources/release_process_and_roadmap.md b/docs/resources/release_process_and_roadmap.md index 0357090395e..f8c36cefb8c 100644 --- a/docs/resources/release_process_and_roadmap.md +++ b/docs/resources/release_process_and_roadmap.md @@ -1,5 +1,5 @@ --- -description: "Ibexa DXP releases new versions periodically in different flavors: Ibexa Headless, Ibexa Experience and Ibexa Commerce, plus open-source Ibexa OSS." +description: Cohesivo releases new versions periodically in different flavors: Headless, Experience and Commerce, plus open-source OSS. --- # [[= product_name =]] release process and roadmap diff --git a/docs/search/search_engines/elasticsearch/configure_elasticsearch.md b/docs/search/search_engines/elasticsearch/configure_elasticsearch.md index 79b64326288..4204e109ab6 100644 --- a/docs/search/search_engines/elasticsearch/configure_elasticsearch.md +++ b/docs/search/search_engines/elasticsearch/configure_elasticsearch.md @@ -1,6 +1,6 @@ --- month_change: false -description: Configure Elasticsearch to use it with Ibexa DXP. +description: Configure Elasticsearch to use it with Cohesivo. --- # Configure Elasticsearch diff --git a/docs/search/search_engines/elasticsearch/install_elasticsearch.md b/docs/search/search_engines/elasticsearch/install_elasticsearch.md index 69a3cf5f48f..9c56aba55a9 100644 --- a/docs/search/search_engines/elasticsearch/install_elasticsearch.md +++ b/docs/search/search_engines/elasticsearch/install_elasticsearch.md @@ -1,6 +1,6 @@ --- month_change: false -description: Install Elasticsearch to use it with Ibexa DXP. +description: Install Elasticsearch to use it with Cohesivo. --- # Install Elasticsearch diff --git a/docs/search/search_engines/legacy_search_engine/configure_repository.md b/docs/search/search_engines/legacy_search_engine/configure_repository.md index b2c9cef2f07..34dfc8ea2bc 100644 --- a/docs/search/search_engines/legacy_search_engine/configure_repository.md +++ b/docs/search/search_engines/legacy_search_engine/configure_repository.md @@ -1,5 +1,5 @@ --- -description: Configure Legacy search engine to use it with Ibexa DXP. +description: Configure Legacy search engine to use it with Cohesivo. --- # Configure repository with Legacy search engine diff --git a/docs/search/search_engines/search_engines.md b/docs/search/search_engines/search_engines.md index d1fdfdac827..f8013fae474 100644 --- a/docs/search/search_engines/search_engines.md +++ b/docs/search/search_engines/search_engines.md @@ -1,5 +1,5 @@ --- -description: Learn about different search engines that are supported by Ibexa DXP. +description: Learn about different search engines that are supported by Cohesivo. --- # Search engines diff --git a/docs/search/search_engines/solr_search_engine/configure_solr.md b/docs/search/search_engines/solr_search_engine/configure_solr.md index f8e835577ee..6f7592b812a 100644 --- a/docs/search/search_engines/solr_search_engine/configure_solr.md +++ b/docs/search/search_engines/solr_search_engine/configure_solr.md @@ -1,5 +1,5 @@ --- -description: Configure Solr search engine to use it with Ibexa DXP. +description: Configure Solr search engine to use it with Cohesivo. --- # Configure Solr diff --git a/docs/search/search_engines/solr_search_engine/install_solr.md b/docs/search/search_engines/solr_search_engine/install_solr.md index 46f9b0e4bf4..5feae5a66fd 100644 --- a/docs/search/search_engines/solr_search_engine/install_solr.md +++ b/docs/search/search_engines/solr_search_engine/install_solr.md @@ -1,5 +1,5 @@ --- -description: Install Solr search engine to use it with Ibexa DXP. +description: Install Solr search engine to use it with Cohesivo. --- # Install Solr search engine diff --git a/docs/templating/templates/templates.md b/docs/templating/templates/templates.md index 820453b77fb..94f340663a0 100644 --- a/docs/templating/templates/templates.md +++ b/docs/templating/templates/templates.md @@ -1,5 +1,5 @@ --- -description: Ibexa DXP uses the Twig template engine to customize the rendering of content in the site. +description: Cohesivo uses the Twig template engine to customize the rendering of content in the site. --- # Templates diff --git a/docs/tutorials/beginner_tutorial/1_get_ready.md b/docs/tutorials/beginner_tutorial/1_get_ready.md index aa822acac4e..db830c9dcbe 100644 --- a/docs/tutorials/beginner_tutorial/1_get_ready.md +++ b/docs/tutorials/beginner_tutorial/1_get_ready.md @@ -1,5 +1,5 @@ --- -description: Start the tutorial by getting a clean installation of Ibexa DXP. +description: Start the tutorial by getting a clean installation of Cohesivo. --- # Step 1 — Get ready diff --git a/docs/tutorials/beginner_tutorial/6_improve_configuration.md b/docs/tutorials/beginner_tutorial/6_improve_configuration.md index 6368f572253..35604220436 100644 --- a/docs/tutorials/beginner_tutorial/6_improve_configuration.md +++ b/docs/tutorials/beginner_tutorial/6_improve_configuration.md @@ -1,5 +1,5 @@ --- -description: See how you can manage Ibexa DXP configuration files. +description: See how you can manage Cohesivo configuration files. --- # Step 6 — Improve configuration diff --git a/docs/tutorials/beginner_tutorial/beginner_tutorial.md b/docs/tutorials/beginner_tutorial/beginner_tutorial.md index 21e71b8f685..a25b9523bb9 100644 --- a/docs/tutorials/beginner_tutorial/beginner_tutorial.md +++ b/docs/tutorials/beginner_tutorial/beginner_tutorial.md @@ -1,5 +1,5 @@ --- -description: Go through a beginner tutorial which presents the Ibexa DXP content model and show how to configure and use templates to create a basic site. +description: Go through a beginner tutorial which presents the Cohesivo content model and show how to configure and use templates to create a basic site. --- # Beginner tutorial diff --git a/docs/update_and_migration/migrate_to_ibexa_dxp/common_issues.md b/docs/update_and_migration/migrate_to_ibexa_dxp/common_issues.md index aa319317805..4535214c708 100644 --- a/docs/update_and_migration/migrate_to_ibexa_dxp/common_issues.md +++ b/docs/update_and_migration/migrate_to_ibexa_dxp/common_issues.md @@ -1,5 +1,5 @@ --- -description: Check common issues that occur when updating from earlier version to Ibexa DXP and how to resolve them. +description: Check common issues that occur when updating from earlier version to Cohesivo and how to resolve them. --- # Common migration issues From 94147ed81119e9828a45910fd589138067ff68d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Tue, 4 Aug 2026 11:10:40 +0200 Subject: [PATCH 11/17] Replace Ibexa DXP in links and descriptive text --- docs/ai/mcp/mcp_guide.md | 4 ++-- docs/content_management/images/fastly_io.md | 2 +- docs/getting_started/install_cohesivo.md | 12 ++++++------ docs/index.md | 6 +++--- .../cache/http_cache/http_cache_configuration.md | 2 +- docs/infrastructure_and_maintenance/devops.md | 2 +- docs/infrastructure_and_maintenance/sessions.md | 2 +- docs/tutorials/beginner_tutorial/1_get_ready.md | 2 +- .../beginner_tutorial/3_customize_the_front_page.md | 6 +++--- .../1_implement_the_point2d_value_class.md | 2 +- .../1_get_a_starter_website.md | 2 +- 11 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/ai/mcp/mcp_guide.md b/docs/ai/mcp/mcp_guide.md index 7c3a6d244ed..d176eb06a51 100644 --- a/docs/ai/mcp/mcp_guide.md +++ b/docs/ai/mcp/mcp_guide.md @@ -21,13 +21,13 @@ However, when facing a specific REST or GraphQL API, an agent may misunderstand MCP servers make the discovery of available capabilities much easier. They help AI agents translate natural language prompts into concrete actions on the system. -![MCP communication diagram showing AI agent client connecting to MCP Server within Ibexa DXP.](img/mcp-com-diagram.png) +![MCP communication diagram showing AI agent client connecting to MCP Server within [[= product_name =]].](img/mcp-com-diagram.png) An MCP server allows the agent to discover available tools, inspect their parameters, learn how to use them, and select the correct action. ## Availability -MCP Servers feature is an [LTS Update package](editions.md#lts-updates) available starting with the v5.0.8 in all Ibexa DXP editions. +MCP Servers feature is an [LTS Update package](editions.md#lts-updates) available starting with the v5.0.8 in all [[= product_name =]] editions. ## Capabilities diff --git a/docs/content_management/images/fastly_io.md b/docs/content_management/images/fastly_io.md index bd3eab6c35e..d9ab9a2d88b 100644 --- a/docs/content_management/images/fastly_io.md +++ b/docs/content_management/images/fastly_io.md @@ -11,7 +11,7 @@ To be able to configure this feature, you need [Fastly IO subscription](https:// ## Enable shielding -To use Fastly Image Optimizer, you first need a [working setup of Ibexa DXP and Fastly](reverse_proxy.md#using-varnish-or-fastly) +To use Fastly Image Optimizer, you first need a [working setup of [[= product_name =]] and Fastly](reverse_proxy.md#using-varnish-or-fastly) with shielding enabled. To enable shielding, follow the steps in [Fastly Developer Documentation](https://www.fastly.com/documentation/guides/concepts/shielding/#enabling-and-disabling-shielding). Remember to choose a shield location from the **Shielding** menu, as described in [Fastly User Documentation](https://www.fastly.com/documentation/guides/getting-started/hosts/shielding/#enabling-shielding). diff --git a/docs/getting_started/install_cohesivo.md b/docs/getting_started/install_cohesivo.md index 2a59a4f8a3c..3760c09b9ae 100644 --- a/docs/getting_started/install_cohesivo.md +++ b/docs/getting_started/install_cohesivo.md @@ -435,7 +435,7 @@ Use [`cron`](https://en.wikipedia.org/wiki/Cron) to run it every minute. The following example creates a temporary crontab entry file and appends it to the existing crontab for the web server user (`www-data`): ```bash -echo '* * * * * cd ; php bin/console ibexa:cron:run --quiet --env=prod' > ibexa_cron.txt +echo '* * * * * cd ; php bin/console ibexa:cron:run --quiet --env=prod' > ibexa_cron.txt crontab -u www-data -l | cat - ibexa_cron.txt | crontab -u www-data - rm ibexa_cron.txt ``` @@ -473,10 +473,10 @@ The following example schedules these commands separately: This shell script creates a temporary file with the job lines, then replaces the existing crontab for the web server user: ```bash -echo '* * * * * cd ; php bin/console ibexa:cron:run --quiet --env=prod' > ibexa_cron.txt -echo '0 0 * * 0 cd ; php bin/console ibexa:check-urls --quiet --env=prod' >> ibexa_cron.txt -echo '0 * * * * cd ; php bin/console ibexa:activity-log:truncate --quiet --env=prod' >> ibexa_cron.txt -echo '0 0 * * * cd ; php bin/console ibexa:discounts:reindex --quiet --env=prod' >> ibexa_cron.txt +echo '* * * * * cd ; php bin/console ibexa:cron:run --quiet --env=prod' > ibexa_cron.txt +echo '0 0 * * 0 cd ; php bin/console ibexa:check-urls --quiet --env=prod' >> ibexa_cron.txt +echo '0 * * * * cd ; php bin/console ibexa:activity-log:truncate --quiet --env=prod' >> ibexa_cron.txt +echo '0 0 * * * cd ; php bin/console ibexa:discounts:reindex --quiet --env=prod' >> ibexa_cron.txt crontab -u www-data ibexa_cron.txt rm ibexa_cron.txt ``` @@ -530,7 +530,7 @@ The following example shows how to set up a different schedule for a specific Si This command schedules `ibexa:cron:run` for the SiteAccess `minor_website` and the job category `minor_website`: ```bash -(crontab -u www-data -l; echo '* * * * * cd ; php bin/console ibexa:cron:run --quiet --env=prod --siteaccess=minor_website --category=minor_website') | crontab -u www-data - +(crontab -u www-data -l; echo '* * * * * cd ; php bin/console ibexa:cron:run --quiet --env=prod --siteaccess=minor_website --category=minor_website') | crontab -u www-data - ``` Then, run `ibexa:scheduled:run` on this SiteAccess at a different frequency from the default: diff --git a/docs/index.md b/docs/index.md index ab522242b98..19d8d08ec2a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -33,7 +33,7 @@
- Install Ibexa DXP + Install Cohesivo
@@ -75,7 +75,7 @@
-

The latest Ibexa DXP is v5.0 LTS

+

The latest Cohesivo is v5.0 LTS

The latest v5.0 LTS release is [[= latest_tag_5_0 =]]. You can now update your application.
@@ -90,7 +90,7 @@

The newest LTS Update is MCP Servers

-
Set up MCP servers to help AI agents interact with Ibexa DXP.
+
Set up MCP servers to help AI agents interact with Cohesivo.
Learn more about this LTS Update diff --git a/docs/infrastructure_and_maintenance/cache/http_cache/http_cache_configuration.md b/docs/infrastructure_and_maintenance/cache/http_cache/http_cache_configuration.md index 5a06104e24c..5e5fa35ae0b 100644 --- a/docs/infrastructure_and_maintenance/cache/http_cache/http_cache_configuration.md +++ b/docs/infrastructure_and_maintenance/cache/http_cache/http_cache_configuration.md @@ -36,7 +36,7 @@ To avoid this, the installation ships with configuration to match these specific fos_http_cache: cache_control: rules: - # Make sure cacheable (fresh) responses from Ibexa DXP which are errors/redirects get lower TTL than default_ttl + # Make sure cacheable (fresh) responses from Cohesivo which are errors/redirects get lower TTL than default_ttl - match: match_response: 'response.isFresh() && ( response.isServerError() || response.isClientError() || response.isRedirect() )' diff --git a/docs/infrastructure_and_maintenance/devops.md b/docs/infrastructure_and_maintenance/devops.md index ea604d7449c..b1d830f3a79 100644 --- a/docs/infrastructure_and_maintenance/devops.md +++ b/docs/infrastructure_and_maintenance/devops.md @@ -86,7 +86,7 @@ composer require --dev symfony/debug-pack After you have installed Symfony Web Debug Toolbar, it's available when running [[= product_name =]] in the `dev` environment. It's extended with some [[= product_name =]]-specific information: -![[[= product_name =]] info in Web Debug Toolbar](img/web_debug_toolbar.png "Ibexa DXP info in Web Debug Toolbar") +![[[= product_name =]] info in Web Debug Toolbar](img/web_debug_toolbar.png "Cohesivo info in Web Debug Toolbar") ### SPI (persistence) diff --git a/docs/infrastructure_and_maintenance/sessions.md b/docs/infrastructure_and_maintenance/sessions.md index fe793fab142..b93f7afc145 100644 --- a/docs/infrastructure_and_maintenance/sessions.md +++ b/docs/infrastructure_and_maintenance/sessions.md @@ -60,7 +60,7 @@ Symfony can be configured to use custom handlers, or fall back to what is confi framework: session: # handler_id can be set to null (~) like default in Symfony, if it so will use default session handler from php.ini - # But in order to use %ibexa.session.save_path%, default Ibexa DXP instead sets %ibexa.session.handler_id% to: + # But in order to use %ibexa.session.save_path%, default Cohesivo instead sets %ibexa.session.handler_id% to: # - session.handler.native_file (default) # - Ibexa\Bundle\Core\Session\Handler\NativeSessionHandler (recommended value for Cluster usage, using php-redis session handler ) handler_id: '%ibexa.session.handler_id%' diff --git a/docs/tutorials/beginner_tutorial/1_get_ready.md b/docs/tutorials/beginner_tutorial/1_get_ready.md index db830c9dcbe..0b51cd014a4 100644 --- a/docs/tutorials/beginner_tutorial/1_get_ready.md +++ b/docs/tutorials/beginner_tutorial/1_get_ready.md @@ -6,7 +6,7 @@ description: Start the tutorial by getting a clean installation of Cohesivo. To begin the tutorial, you need a clean installation of [[= product_name =]]. -Get it by following the [install Ibexa DXP](install_cohesivo.md) guide. +Get it by following the [Install [[= product_name =]]](install_cohesivo.md) guide. You need a web server, a relational database and PHP. The clean installation contains only a root content item which displays a welcome page. diff --git a/docs/tutorials/beginner_tutorial/3_customize_the_front_page.md b/docs/tutorials/beginner_tutorial/3_customize_the_front_page.md index 1844dc7a3be..f67caa305cd 100644 --- a/docs/tutorials/beginner_tutorial/3_customize_the_front_page.md +++ b/docs/tutorials/beginner_tutorial/3_customize_the_front_page.md @@ -88,9 +88,9 @@ To add a template like this to your site, create a `main_layout.html.twig` file - + - Ibexa DXP Beginner Tutorial + Cohesivo Beginner Tutorial @@ -162,7 +162,7 @@ To add a template like this to your site, create a `main_layout.html.twig` file
-

Website design & content © copyright {{ "now"|date("Y") }} Ibexa. This website was made with Ibexa DXP.

+

Website design & content © copyright {{ "now"|date("Y") }} Ibexa. This website was made with Cohesivo.

diff --git a/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md b/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md index 8f50a166e76..606330fc957 100644 --- a/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md +++ b/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md @@ -7,7 +7,7 @@ description: Learn how to create a Value class that stores the value of the fiel ## Project installation To start the tutorial, you need to make a clean [[= product_name =]] installation. -Follow the guide for your system to [install Ibexa DXP](install_cohesivo.md), [configure a server](requirements.md), and [start the web server](install_cohesivo.md#use-phps-built-in-server). +Follow the guide for your system to [Install [[= product_name =]]](install_cohesivo.md), [configure a server](requirements.md), and [start the web server](install_cohesivo.md#use-phps-built-in-server). Remember to install using the `dev` environment. Open your project with a clean installation and create the base directory for a new Point 2D field type in `src/FieldType/Point2D`. diff --git a/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md b/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md index f883165543d..0b4506ce006 100644 --- a/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md +++ b/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md @@ -11,7 +11,7 @@ To set up the starter website, you need to follow these steps: To begin the tutorial, you need a clean installation of [[= product_name_exp =]]. -Get it by following the [Install Ibexa DXP](install_cohesivo.md) guide. +Get it by following the [Install [[= product_name =]]](install_cohesivo.md) guide. ## Add content types From 17dfc5ef2d71c01efaa2744edb28c14726dfe825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Tue, 4 Aug 2026 11:48:53 +0200 Subject: [PATCH 12/17] Update diagrams with Cohesivo --- .../img/diagram_source/mcp-com-diagram.drawio | 2 +- docs/ai/mcp/img/mcp-com-diagram.png | Bin 25330 -> 27351 bytes docs/api/rest_api/rest_api_authentication.md | 2 +- docs/ibexa_products/img/cdp.drawio | 2 +- docs/ibexa_products/img/cdp.png | Bin 103388 -> 71821 bytes .../users/diagram_source/oauth2-client.drawio | 2 +- .../users/diagram_source/oauth2-server.drawio | 2 +- docs/users/img/oauth2-client.png | Bin 42417 -> 44425 bytes docs/users/img/oauth2-server.png | Bin 39892 -> 41662 bytes 9 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/ai/mcp/img/diagram_source/mcp-com-diagram.drawio b/docs/ai/mcp/img/diagram_source/mcp-com-diagram.drawio index 5e1b2ba3267..385a73213ae 100644 --- a/docs/ai/mcp/img/diagram_source/mcp-com-diagram.drawio +++ b/docs/ai/mcp/img/diagram_source/mcp-com-diagram.drawio @@ -4,7 +4,7 @@ - + diff --git a/docs/ai/mcp/img/mcp-com-diagram.png b/docs/ai/mcp/img/mcp-com-diagram.png index 993d078ffc3b7cc41e7d83fbb440bd5d72d6f2f1..9a38d4684936b2b3a83bd9a88a9cd7c7f156d6fb 100644 GIT binary patch literal 27351 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 DqM1f1 literal 25330 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 diff --git a/docs/api/rest_api/rest_api_authentication.md b/docs/api/rest_api/rest_api_authentication.md index ceb782304c1..3e87258701d 100644 --- a/docs/api/rest_api/rest_api_authentication.md +++ b/docs/api/rest_api/rest_api_authentication.md @@ -343,7 +343,7 @@ security: ibexa_rest: host: ^api\.example\.com$ http_basic: - realm: Ibexa DXP REST API + realm: Cohesivo REST API #ibexa_front: # ... ``` diff --git a/docs/ibexa_products/img/cdp.drawio b/docs/ibexa_products/img/cdp.drawio index 2baf3661d1c..37ce6cecc4f 100644 --- a/docs/ibexa_products/img/cdp.drawio +++ b/docs/ibexa_products/img/cdp.drawio @@ -563,7 +563,7 @@ - + diff --git a/docs/ibexa_products/img/cdp.png b/docs/ibexa_products/img/cdp.png index 2bbbc01215fc478f5e2412baa263304a8983b1f7..b2d6633ec80d0145f71bfed2cef1c76d3b786a96 100644 GIT binary patch literal 71821 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∓>vfD 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

lQPTSYyRk4oUrXztyf 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 - + diff --git a/docs/users/diagram_source/oauth2-server.drawio b/docs/users/diagram_source/oauth2-server.drawio index df63a7d62d0..306968c8f69 100644 --- a/docs/users/diagram_source/oauth2-server.drawio +++ b/docs/users/diagram_source/oauth2-server.drawio @@ -10,7 +10,7 @@ - + diff --git a/docs/users/img/oauth2-client.png b/docs/users/img/oauth2-client.png index 6874b8a442853e46d80f385f7858b976544e0cd0..8babc60dc143ddf0dd350a73b5bfdc5a85ef0aa4 100644 GIT binary patch literal 44425 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 literal 42417 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 Is@B2(17QzCJ^%m! diff --git a/docs/users/img/oauth2-server.png b/docs/users/img/oauth2-server.png index da9202a1d21ec92b567c3e637d675f4a3b2925d8..4567a8e48775e0c0179620efacc16766c0106dd6 100644 GIT binary patch literal 41662 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 Co>&b4 literal 39892 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 From 16f66525e501af58afd38eb81f7477354fc58a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Tue, 4 Aug 2026 11:55:53 +0200 Subject: [PATCH 13/17] Fix broken links --- docs/content_management/images/fastly_io.md | 2 +- docs/resources/release_process_and_roadmap.md | 2 +- docs/tutorials/beginner_tutorial/1_get_ready.md | 2 +- .../generic_field_type/1_implement_the_point2d_value_class.md | 2 +- .../tutorials/page_and_form_tutorial/1_get_a_starter_website.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/content_management/images/fastly_io.md b/docs/content_management/images/fastly_io.md index d9ab9a2d88b..d092b69519d 100644 --- a/docs/content_management/images/fastly_io.md +++ b/docs/content_management/images/fastly_io.md @@ -11,7 +11,7 @@ To be able to configure this feature, you need [Fastly IO subscription](https:// ## Enable shielding -To use Fastly Image Optimizer, you first need a [working setup of [[= product_name =]] and Fastly](reverse_proxy.md#using-varnish-or-fastly) +To use Fastly Image Optimizer, you first need a [working setup of [[= product_name =]] and Fastly](../../infrastructure_and_maintenance/cache/http_cache/reverse_proxy.md#using-varnish-or-fastly) with shielding enabled. To enable shielding, follow the steps in [Fastly Developer Documentation](https://www.fastly.com/documentation/guides/concepts/shielding/#enabling-and-disabling-shielding). Remember to choose a shield location from the **Shielding** menu, as described in [Fastly User Documentation](https://www.fastly.com/documentation/guides/getting-started/hosts/shielding/#enabling-shielding). diff --git a/docs/resources/release_process_and_roadmap.md b/docs/resources/release_process_and_roadmap.md index f8c36cefb8c..091442ab859 100644 --- a/docs/resources/release_process_and_roadmap.md +++ b/docs/resources/release_process_and_roadmap.md @@ -1,5 +1,5 @@ --- -description: Cohesivo releases new versions periodically in different flavors: Headless, Experience and Commerce, plus open-source OSS. +description: Cohesivo releases new versions periodically in different flavors - Headless, Experience and Commerce, plus open-source OSS. --- # [[= product_name =]] release process and roadmap diff --git a/docs/tutorials/beginner_tutorial/1_get_ready.md b/docs/tutorials/beginner_tutorial/1_get_ready.md index 0b51cd014a4..162c7fc5cb6 100644 --- a/docs/tutorials/beginner_tutorial/1_get_ready.md +++ b/docs/tutorials/beginner_tutorial/1_get_ready.md @@ -6,7 +6,7 @@ description: Start the tutorial by getting a clean installation of Cohesivo. To begin the tutorial, you need a clean installation of [[= product_name =]]. -Get it by following the [Install [[= product_name =]]](install_cohesivo.md) guide. +Get it by following the [Install [[= product_name =]]](../../getting_started/install_cohesivo.md) guide. You need a web server, a relational database and PHP. The clean installation contains only a root content item which displays a welcome page. diff --git a/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md b/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md index 606330fc957..3b6d096731b 100644 --- a/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md +++ b/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md @@ -7,7 +7,7 @@ description: Learn how to create a Value class that stores the value of the fiel ## Project installation To start the tutorial, you need to make a clean [[= product_name =]] installation. -Follow the guide for your system to [Install [[= product_name =]]](install_cohesivo.md), [configure a server](requirements.md), and [start the web server](install_cohesivo.md#use-phps-built-in-server). +Follow the guide for your system to [Install [[= product_name =]]](../../getting_started/install_cohesivo.md), [configure a server](requirements.md), and [start the web server](../../getting_started/install_cohesivo.md#use-phps-built-in-server). Remember to install using the `dev` environment. Open your project with a clean installation and create the base directory for a new Point 2D field type in `src/FieldType/Point2D`. diff --git a/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md b/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md index 0b4506ce006..db6c20d89f3 100644 --- a/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md +++ b/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md @@ -11,7 +11,7 @@ To set up the starter website, you need to follow these steps: To begin the tutorial, you need a clean installation of [[= product_name_exp =]]. -Get it by following the [Install [[= product_name =]]](install_cohesivo.md) guide. +Get it by following the [Install [[= product_name =]]](../../getting_started/install_cohesivo.md) guide. ## Add content types From 9c9957bcec5160af5aa4eec5dc0179407d4427c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Tue, 4 Aug 2026 12:21:19 +0200 Subject: [PATCH 14/17] Replace Raptor with a placeholder --- docs/api/php_api/php_api_reference/index.html | 2 +- docs/infrastructure_and_maintenance/backup.md | 2 +- .../security/security_checklist.md | 2 +- .../connector_installation_configuration.md | 28 +++++++++---------- .../raptor_integration/hybrid_tracking.md | 18 ++++++------ .../raptor_integration/raptor_connector.md | 8 +++--- .../raptor_connector_guide.md | 20 ++++++------- .../recommendation_blocks.md | 4 +-- .../raptor_integration/tracking_functions.md | 8 +++--- .../raptor_integration/tracking_php_api.md | 4 +-- .../contributing/package_structure.md | 4 +-- .../solr_search_engine/install_solr.md | 2 +- docs/snippets/elasticsearch_clear_index.md | 2 +- 13 files changed, 52 insertions(+), 52 deletions(-) diff --git a/docs/api/php_api/php_api_reference/index.html b/docs/api/php_api/php_api_reference/index.html index 3fe85b168ea..8027292b89c 100644 --- a/docs/api/php_api/php_api_reference/index.html +++ b/docs/api/php_api/php_api_reference/index.html @@ -49669,7 +49669,7 @@

PHP API Reference

- Ibexa DXP's public PHP API is defined in the + Cohesivo's public PHP API is defined in the Ibexa\Contracts namespace. Ibexa promises backward compatibility to API consumers.

diff --git a/docs/infrastructure_and_maintenance/backup.md b/docs/infrastructure_and_maintenance/backup.md index 0e710ea36a1..d75b31d489e 100644 --- a/docs/infrastructure_and_maintenance/backup.md +++ b/docs/infrastructure_and_maintenance/backup.md @@ -6,7 +6,7 @@ description: Periodically back up your Repository information by making a databa You should always make sure that your solution is properly backed up. The following example shows you how to do this on a Linux-UNIX-based system. -You should shut down the DXP if it's running before making a backup. +You should shut down the [[= product_name =]] if it's running before making a backup. !!! note "Externally stored assets" diff --git a/docs/infrastructure_and_maintenance/security/security_checklist.md b/docs/infrastructure_and_maintenance/security/security_checklist.md index 79d1a22f569..2f49b6cc3d0 100644 --- a/docs/infrastructure_and_maintenance/security/security_checklist.md +++ b/docs/infrastructure_and_maintenance/security/security_checklist.md @@ -117,7 +117,7 @@ Reduce your attack surface by exposing only what you must. - If possible, make the back office unavailable on the open internet. - [Symfony FOSJsRoutingBundle](https://github.com/FriendsOfSymfony/FOSJsRoutingBundle) is required in those releases where it's included, to expose routes to JavaScript. It exposes only the required routes, nothing more. It's only required in the back office SiteAccess though, so you can consider blocking it in other SiteAccesses. You should also go through your own custom routes, and decide for each if you need to expose them or not. See the documentation on [YAML route definitions for exposure](https://github.com/FriendsOfSymfony/FOSJsRoutingBundle/blob/master/Resources/doc/usage.rst#generating-uris). -- By default, a [Powered-By header](update_db_to_2.5.md#powered-by-header) is set. It specifies what version of the DXP is running. For example, `x-powered-by: [[= product_name_exp =]] v4`. This doesn't expose anything that couldn't be detected through other means. But if you wish to obscure this, you can either omit the version number, or disable the header entirely by setting `enabled: false`. +- By default, a [Powered-By header](update_db_to_2.5.md#powered-by-header) is set. It specifies what version of the [[= product_name =]] is running. For example, `x-powered-by: [[= product_name_exp =]] v4`. This doesn't expose anything that couldn't be detected through other means. But if you wish to obscure this, you can either omit the version number, or disable the header entirely by setting `enabled: false`. ```yaml ibexa_system_info: diff --git a/docs/recommendations/raptor_integration/connector_installation_configuration.md b/docs/recommendations/raptor_integration/connector_installation_configuration.md index 69e30633451..b4789b28acf 100644 --- a/docs/recommendations/raptor_integration/connector_installation_configuration.md +++ b/docs/recommendations/raptor_integration/connector_installation_configuration.md @@ -3,13 +3,13 @@ description: To configure the Raptor integration, follow the step-by-step proced month_change: true --- -# Install and configure Raptor +# Install and configure [[= product_name_cdp_base =]] -To configure the [Raptor](https://www.raptorservices.com/) integration add-on, follow the step-by-step procedure below. +To configure the [[[= product_name_cdp_base =]]](https://www.raptorservices.com/) integration add-on, follow the step-by-step procedure below. -## Install Raptor connector +## Install [[= product_name_cdp_base =]] connector -Before you can proceed to configuring the integration with Raptor, install the Raptor connector. +Before you can proceed to configuring the integration with [[= product_name_cdp_base =]], install the [[= product_name_cdp_base =]] connector. To do it, run the following command: ``` bash @@ -23,24 +23,24 @@ composer require ibexa/connector-raptor ## SiteAccess-aware configuration -To configure the Raptor connector, use the `ibexa.system..connector_raptor` configuration key in the `config/packages/ibexa_connector_raptor.yaml` file: +To configure the [[= product_name_cdp_base =]] connector, use the `ibexa.system..connector_raptor` configuration key in the `config/packages/ibexa_connector_raptor.yaml` file: ``` yaml [[= include_file('code_samples/recommendations/config/packages/ibexa_connector_raptor.yaml', 0, 17) =]] ``` - `enabled` - enables or disables the connector for a given scope. Default value: `true`. If set to `false`, no tracking or recommendation requests are executed. -- `customer_id` - an identifier used to authenticate requests to the recommendation engine. You can find this value as ["Account number"](connector_installation_configuration.md#customer-id) in Raptor Control Panel. +- `customer_id` - an identifier used to authenticate requests to the recommendation engine. You can find this value as ["Account number"](connector_installation_configuration.md#customer-id) in [[= product_name_cdp_base =]] Control Panel. - `tracking_type` - defines how user events are sent to the tracking API. Default value: `client`. Possible values: - `client` - tracking is executed in the browser using JavaScript snippets generated by the [Twig functions](recommendations_twig_functions.md) and included in the templates. This approach may be blocked by ad blockers. - `server` - tracking is handled on the backend, with events sent directly to the tracking API. It's not affected by ad blockers. - - `hybrid` - tracking is executed in the browser by a first-party JavaScript provided by the DXP instead of Raptor and then forwarded by the DXP server to the Raptor SaaS. For more information, see [Hybrid tracking](hybrid_tracking.md). -- `recommendations_api_key` - an API key used to authenticate requests to the Recommendations API. This key allows the connector to retrieve personalized recommendations from the recommendation engine. You can find this value as ["API key"](connector_installation_configuration.md#recommendations-api-key) in Raptor Control Panel. -- `recommendations_api_uri` (optional) - overrides the default Raptor address, do not set it unless a custom endpoint is required. + - `hybrid` - tracking is executed in the browser by a first-party JavaScript provided by the [[= product_name =]] instead of [[= product_name_cdp_base =]] and then forwarded by the [[= product_name =]] server to the [[= product_name_cdp_base =]] SaaS. For more information, see [Hybrid tracking](hybrid_tracking.md). +- `recommendations_api_key` - an API key used to authenticate requests to the Recommendations API. This key allows the connector to retrieve personalized recommendations from the recommendation engine. You can find this value as ["API key"](connector_installation_configuration.md#recommendations-api-key) in [[= product_name_cdp_base =]] Control Panel. +- `recommendations_api_uri` (optional) - overrides the default [[= product_name_cdp_base =]] address, do not set it unless a custom endpoint is required. - `cookie_id_lifetime_days` (optional) - the lifetime in days of the server-side tracking identifier cookies. Default value: `365` days. Minimum value: `1` day. -By default, `tracking_type` is set to `client` as client-side tracking is the standard Raptor mode. -To understand the differences between client and server tracking types, including their advantages and disadvantages, refer to the [Raptor documentation](https://content.raptorservices.com/help-center/client-side-vs.-server-side-tracking). +By default, `tracking_type` is set to `client` as client-side tracking is the standard [[= product_name_cdp_base =]] mode. +To understand the differences between client and server tracking types, including their advantages and disadvantages, refer to the [[[= product_name_cdp_base =]] documentation](https://content.raptorservices.com/help-center/client-side-vs.-server-side-tracking). !!! note @@ -49,7 +49,7 @@ To understand the differences between client and server tracking types, includin ### Customer ID -To find the value for the `customer_id` identifier, log in to Raptor Control Panel, and look for "Account number": +To find the value for the `customer_id` identifier, log in to [[= product_name_cdp_base =]] Control Panel, and look for "Account number": A. In the top-left corner, above the account name, you can find the account number for the currently active account. B. Click the arrow icon in the top-left corner to expand the window. There you can see a list of all your accounts, with their numbers shown in the “Account number” column on the right. This way, if you have multiple accounts, you can locate and copy the number of any of your accounts, not just the active one. @@ -58,7 +58,7 @@ B. Click the arrow icon in the top-left corner to expand the window. There you c ### Recommendations API key -To find the value for the `recommendations_api_key`, log in to Raptor Control Panel, and look for "API key". +To find the value for the `recommendations_api_key`, log in to [[= product_name_cdp_base =]] Control Panel, and look for "API key". To do it, in the left panel, open the **Recommendations** section, and select **Website**. Next, click on the Web module you’re interested in. In the top-right corner, click the three-dot icon and select **API information**. @@ -73,7 +73,7 @@ The following settings are global and apply to the entire application (they are - `strict_exceptions` – when enabled, tracking exceptions are thrown instead of being silently handled. Default value: `%kernel.debug%`. -- `hybrid_tracking_proxy_path` - by default, it's set to `/raptor/track`. The client-side shim sends tracking events to this same-origin endpoint, which forwards them to Raptor asynchronously. +- `hybrid_tracking_proxy_path` - by default, it's set to `/raptor/track`. The client-side shim sends tracking events to this same-origin endpoint, which forwards them to [[= product_name_cdp_base =]] asynchronously. This value can be overridden in `config/packages/ibexa_connector_raptor.yaml` file, for example: diff --git a/docs/recommendations/raptor_integration/hybrid_tracking.md b/docs/recommendations/raptor_integration/hybrid_tracking.md index 09dabb35ba8..902d1a1ec69 100644 --- a/docs/recommendations/raptor_integration/hybrid_tracking.md +++ b/docs/recommendations/raptor_integration/hybrid_tracking.md @@ -6,17 +6,17 @@ month_change: true # Hybrid tracking Hybrid tracking mode is an additional tracking mode available alongside [`client` and `server`](tracking_functions.md). -In hybrid mode, the bundle includes a client-side [shim](https://en.wikipedia.org/wiki/Shim_(computing)) that captures Raptor tracking events and sends them to a same-origin endpoint instead of communicating directly with Raptor SaaS. -The server enriches each event with identifiers resolved from request cookies (`cookieId`, `sessionId`, and `userId`) and forwards it to Raptor asynchronously through [Ibexa Messenger](background_tasks.md). -Since the browser never connects to the Raptor domain, ad blockers cannot block the requests. +In hybrid mode, the bundle includes a client-side [shim](https://en.wikipedia.org/wiki/Shim_(computing)) that captures [[= product_name_cdp_base =]] tracking events and sends them to a same-origin endpoint instead of communicating directly with [[= product_name_cdp_base =]] SaaS. +The server enriches each event with identifiers resolved from request cookies (`cookieId`, `sessionId`, and `userId`) and forwards it to [[= product_name_cdp_base =]] asynchronously through [Ibexa Messenger](background_tasks.md). +Since the browser never connects to the [[= product_name_cdp_base =]] domain, ad blockers cannot block the requests. ## Hybrid vs server or client-side tracking Both `server` and `hybrid` tracking modes deliver pageviews and events server-side, so tracking requests are not affected by ad blockers. -The main difference is that `hybrid` mode loads a first-party tracking JavaScript (`raptor-proxy.js`) provided by the DXP instance, instead of the Raptor SaaS JavaScript. -The Raptor script itself (`//deliver.raptorstatic.com/script/raptor-3.0.min.js`) is loaded only in `client` mode. +The main difference is that `hybrid` mode loads a first-party tracking JavaScript (`raptor-proxy.js`) provided by the [[= product_name =]] instance, instead of the [[= product_name_cdp_base =]] SaaS JavaScript. +The [[= product_name_cdp_base =]] script itself (`//deliver.raptorstatic.com/script/raptor-3.0.min.js`) is loaded only in `client` mode. -The browser script only forwards captured tracking events to the same-origin proxy endpoint on your DXP instance. First-party visitor cookies are created and refreshed server-side, which is what helps them survive Safari [Intelligent Tracking Prevention](https://webkit.org/blog/7675/intelligent-tracking-prevention/). +The browser script only forwards captured tracking events to the same-origin proxy endpoint on your [[= product_name =]] instance. First-party visitor cookies are created and refreshed server-side, which is what helps them survive Safari [Intelligent Tracking Prevention](https://webkit.org/blog/7675/intelligent-tracking-prevention/). Event tracking still happens on the server, so ad blockers cannot block it. The main advantage of `hybrid` mode over `server` mode is its ability to capture client-side tracking events. @@ -35,11 +35,11 @@ Check the table below to compare the behavior of different tracking modes: When hybrid tracking is enabled, `TrackingScriptExtension` renders the proxy bootstrap template and loads the `raptor-proxy.js` shim, which replaces the `window.raptor.push` function and sends out the events queued before the tracking consent was given. The shim sends each captured event to the proxy endpoint as a separate POST request. The `TrackingProxyController::track` action validates the `EventPayloadParser` payload, enriches each event with identifiers resolved from cookies, and dispatches one `TrackProxiedEventMessage` for every event. -Messages are then processed asynchronously via Ibexa Messenger and `TrackProxiedEventMessageHandler` ultimately forwards them to Raptor through `TrackingService::trackRawParameters`. +Messages are then processed asynchronously via Ibexa Messenger and `TrackProxiedEventMessageHandler` ultimately forwards them to [[= product_name_cdp_base =]] through `TrackingService::trackRawParameters`. ### Hybrid tracking configuration -To configure the Raptor hybrid tracking, use the `ibexa.system..connector_raptor` configuration key in the `config/packages/ibexa_connector_raptor.yaml` file: +To configure the [[= product_name_cdp_base =]] hybrid tracking, use the `ibexa.system..connector_raptor` configuration key in the `config/packages/ibexa_connector_raptor.yaml` file: ``` yaml ibexa_connector_raptor: @@ -75,7 +75,7 @@ Without it, the proxy endpoint returns 404 responses and tracking events are not You can configure the proxy endpoint path globally. By default, it's set to `/raptor/track`. -The client-side shim sends tracking events to this same-origin endpoint, which forwards them to Raptor asynchronously. +The client-side shim sends tracking events to this same-origin endpoint, which forwards them to [[= product_name_cdp_base =]] asynchronously. ``` yaml ibexa_connector_raptor: diff --git a/docs/recommendations/raptor_integration/raptor_connector.md b/docs/recommendations/raptor_integration/raptor_connector.md index 1102055ca12..8b2a4cfb303 100644 --- a/docs/recommendations/raptor_integration/raptor_connector.md +++ b/docs/recommendations/raptor_integration/raptor_connector.md @@ -4,9 +4,9 @@ page_type: landing_page month_change: false --- -# Raptor integration +# [[= product_name_cdp_base =]] integration -The [Raptor](https://www.raptorservices.com/) integration is an add-on that provides a seamless integration between [[= product_name =]] and Raptor recommendation engine. +The [[[= product_name_cdp_base =]]](https://www.raptorservices.com/) integration is an add-on that provides a seamless integration between [[= product_name =]] and [[= product_name_cdp_base =]] recommendation engine. Its primary goal is to enable editors and managers to deliver personalized experiences across digital channels, which helps increase conversion rates, drive sales, and improve user engagement. @@ -20,10 +20,10 @@ The connector ensures a smooth and unified integration layer, enabling: This approach reduces integration complexity while providing a scalable foundation for personalization use cases across multiple sites and markets. -To configure the integration with Raptor, follow a step-by-step procedure that allows you to activate the Raptor connector. +To configure the integration with [[= product_name_cdp_base =]], follow a step-by-step procedure that allows you to activate the [[= product_name_cdp_base =]] connector. Activation includes [configuration](connector_installation_configuration.md), adding tracking scripts and events, and using [Page Builder](page_builder_guide.md) blocks. -For more information about tracking, check the Raptor documentation: [Implementing tracking](https://content.raptorservices.com/help-center/data-management#implementing-tracking). +For more information about tracking, check the [[= product_name_cdp_base =]] documentation: [Implementing tracking](https://content.raptorservices.com/help-center/data-management#implementing-tracking). [[= cards([ "recommendations/raptor_integration/connector_installation_configuration", diff --git a/docs/recommendations/raptor_integration/raptor_connector_guide.md b/docs/recommendations/raptor_integration/raptor_connector_guide.md index 1662a7c035f..ec6d17aedd1 100644 --- a/docs/recommendations/raptor_integration/raptor_connector_guide.md +++ b/docs/recommendations/raptor_integration/raptor_connector_guide.md @@ -3,14 +3,14 @@ description: Discover Raptor integration - an add-on focused on recommendations month_change: true --- -# Raptor integration product guide +# [[= product_name_cdp_base =]] integration product guide -Discover [Raptor](https://www.raptorservices.com/) integration - an add-on that is focused on recommendations and tracking customer behaviors. +Discover [[[= product_name_cdp_base =]]](https://www.raptorservices.com/) integration - an add-on that is focused on recommendations and tracking customer behaviors. It includes the connector with tracking scripts and events that are used to track and analyze customer behaviors, and a set of Recommendation blocks. -## What is Raptor integration +## What is [[= product_name_cdp_base =]] integration -The [Raptor integration](raptor_connector.md) provides a seamless integration between [[= product_name =]] and the Raptor recommendation engine. +The [[[= product_name_cdp_base =]] integration](raptor_connector.md) provides a seamless integration between [[= product_name =]] and the [[= product_name_cdp_base =]] recommendation engine. Its primary goal is to enable editors and managers to deliver personalized experiences across digital channels, which helps to increase conversion rates, drive sales, and improve user engagement. @@ -26,11 +26,11 @@ This approach simplifies integration while supporting personalization across dif ## Availability -Raptor integration elements, such as tracking, Twig functions, and public API, are available in all supported [[= product_name =]] editions starting from v5.0.7 version. +[[= product_name_cdp_base =]] integration elements, such as tracking, Twig functions, and public API, are available in all supported [[= product_name =]] editions starting from v5.0.7 version. Recommendation blocks provided in Page Builder, are available in [[= product_name_exp =]] and [[= product_name_com =]] editions. -## How does Raptor tracking work +## How does [[= product_name_cdp_base =]] tracking work To start [tracking](https://content.raptorservices.com/help-center/introduction-to-tracking-documentation) user interactions, the tracking script needs to be added to the website’s layout. Tracking can be set up either on the client-side, server-side, or using hybrid mode, depending on how you want to capture and process the events. @@ -38,7 +38,7 @@ Tracking can be set up either on the client-side, server-side, or using hybrid m The tracking works differently depending on the mode you choose. In server-side mode, tracking happens on the server, handling all events without loading scripts in the browser. In client-side mode, it inserts script tags so tracking runs directly in the browser. -In hybrid mode, the browser loads a first-party [shim](https://en.wikipedia.org/wiki/Shim_(computing)) that forwards tracking events to a same-origin proxy endpoint instead of the Raptor SaaS script, helping prevent ad blockers from blocking tracking. +In hybrid mode, the browser loads a first-party [shim](https://en.wikipedia.org/wiki/Shim_(computing)) that forwards tracking events to a same-origin proxy endpoint instead of the [[= product_name_cdp_base =]] SaaS script, helping prevent ad blockers from blocking tracking. For more information, see [Hybrid tracking](hybrid_tracking.md). You can switch between tracking modes at any time by changing the tracking type to fit your setup and needs. @@ -47,7 +47,7 @@ You can switch between tracking modes at any time by changing the tracking type ### Tracking -Raptor [tracking functions](tracking_functions.md) allow you to collect data about how users interact with your products and content. +[[= product_name_cdp_base =]] [tracking functions](tracking_functions.md) allow you to collect data about how users interact with your products and content. You can track product visits to better understand what users are viewing. Provided [Twig functions](../../templating/twig_function_reference/recommendations_twig_functions.md) simplify the implementation, allowing developers to quickly add tracking to templates without complex setup. @@ -56,7 +56,7 @@ This gives you the data you need to better understand user behavior, improve rec ### Recommendation blocks -The Raptor integration add-on provides a set of ready-to-use recommendation blocks that can be added directly in the [Page Builder](page_builder_guide.md). +The [[= product_name_cdp_base =]] integration add-on provides a set of ready-to-use recommendation blocks that can be added directly in the [Page Builder](page_builder_guide.md). These blocks can be configured to adjust how they work and what they display. Content, Product, and Commerce recommendations can be placed on landing pages using these components. @@ -124,7 +124,7 @@ Start building predictions of their behaviors and suggest products your visitors ### Track performance and increase conversions -Use the Raptor service in your Commerce shop and see how recommendations drive sales. +Use the [[= product_name_cdp_base =]] service in your Commerce shop and see how recommendations drive sales. Keep track of which recommendations are shown to visitors and measure conversion rates to evaluate their effectiveness against your goals. ### Flexible tracking with PHP API diff --git a/docs/recommendations/raptor_integration/recommendation_blocks.md b/docs/recommendations/raptor_integration/recommendation_blocks.md index 5c6c9673424..2a728dbf990 100644 --- a/docs/recommendations/raptor_integration/recommendation_blocks.md +++ b/docs/recommendations/raptor_integration/recommendation_blocks.md @@ -6,7 +6,7 @@ month_change: true # Recommendation blocks in Page Builder -One of the Raptor Integration elements is the introduction of recommendation blocks available in the [Page Builder](page_builder_guide.md). +One of the [[= product_name_cdp_base =]] Integration elements is the introduction of recommendation blocks available in the [Page Builder](page_builder_guide.md). Content, Product, and Commerce recommendations can be added to a landing page using the blocks. @@ -41,7 +41,7 @@ In the toolbar, corresponding categories for recommendation blocks are available ![Recommendation blocks](img/recommendation_blocks.png) After opening the settings of a recommendation block, a link is available at the bottom of the window. -It leads to the [Raptor Control Panel](https://controlpanel.raptorsmartadvisor.com/) (opens in a separate tab), where you can configure advanced settings and fine-tune the recommendation strategy. +It leads to the [[[= product_name_cdp_base =]] Control Panel](https://controlpanel.raptorsmartadvisor.com/) (opens in a separate tab), where you can configure advanced settings and fine-tune the recommendation strategy. ![Advanced settings](img/advanced_settings.png) diff --git a/docs/recommendations/raptor_integration/tracking_functions.md b/docs/recommendations/raptor_integration/tracking_functions.md index e3b0b8f7c3d..50c583c5b38 100644 --- a/docs/recommendations/raptor_integration/tracking_functions.md +++ b/docs/recommendations/raptor_integration/tracking_functions.md @@ -5,10 +5,10 @@ month_change: true # Tracking functions -[Raptor connector](raptor_connector.md) introduces [visit tracking functionality](https://content.raptorservices.com/help-center/introduction-to-tracking-documentation) for collecting user interactions with products and content. +[[[= product_name_cdp_base =]] connector](raptor_connector.md) introduces [visit tracking functionality](https://content.raptorservices.com/help-center/introduction-to-tracking-documentation) for collecting user interactions with products and content. The implementation includes product visit tracking with mapping to tracking parameters, and Twig functions for straightforward integration. -Raptor integration introduces two Twig functions: +[[= product_name_cdp_base =]] integration introduces two Twig functions: - [`ibexa_tracking_script()`](../../templating/twig_function_reference/recommendations_twig_functions.md#ibexa_tracking_script-function) - allows you to embed main tracking script into the website. - [`ibexa_tracking_track_event()`](../../templating/twig_function_reference/recommendations_twig_functions.md#ibexa_tracking_track_event-function) - is responsible for sending event data to the service, enabling tracking of user interactions and behaviors. @@ -45,7 +45,7 @@ connector_raptor: - **server** - doesn't return anything in the `prod` environment, while returns HTML comments in the `dev` environment or any environment where `kernel.debug` Symfony container parameter is set to `true`. Tracking is performed server-side. - **client** - returns `script` tags to load the tracking script in the browser. -- **hybrid** - returns script tags like `client`, but they load a first-party shim (`raptor-proxy.js`) that forwards events to a same-origin proxy endpoint instead of the Raptor SaaS script. The server then delivers them to Raptor, preventing ad blockers from blocking tracking. +- **hybrid** - returns script tags like `client`, but they load a first-party shim (`raptor-proxy.js`) that forwards events to a same-origin proxy endpoint instead of the [[= product_name_cdp_base =]] SaaS script. The server then delivers them to [[= product_name_cdp_base =]], preventing ad blockers from blocking tracking. You can switch tracking mode anytime by changing the `tracking_type` parameter. @@ -67,7 +67,7 @@ For more complex integrations, the [[= product_name_base =]] Design Engine can b Available variables are: -- **customer_id** - type: string, Raptor account ID used for tracking +- **customer_id** - type: string, [[= product_name_cdp_base =]] account ID used for tracking - **script_url** - type: string, URL of the tracking script, by default `//deliver.raptorstatic.com/script/raptor-3.0.min.js`, configurable through `ibexa.connector.raptor.tracking_script.url` Symfony Dependency Injection container parameter (not SiteAccess-aware) - **has_consented** - type: boolean, indicates whether the user has given consent, default value: `false` (unless explicitly passed as function argument) - **debug** - type: boolean, `kernel.debug` Symfony dependency injection container parameter, typically `true` in development environments and `false` in production diff --git a/docs/recommendations/raptor_integration/tracking_php_api.md b/docs/recommendations/raptor_integration/tracking_php_api.md index 6b9cabe1cb8..1cd07227f42 100644 --- a/docs/recommendations/raptor_integration/tracking_php_api.md +++ b/docs/recommendations/raptor_integration/tracking_php_api.md @@ -5,7 +5,7 @@ month_change: false # Tracking with PHP API -You can interact directly with the [Raptor connector](raptor_connector.md)'s service using the [PHP API](/api/php_api/php_api_reference/namespaces/ibexa-contracts-connectorraptor-tracking.html) for advanced tracking usage. +You can interact directly with the [[[= product_name_cdp_base =]] connector](raptor_connector.md)'s service using the [PHP API](/api/php_api/php_api_reference/namespaces/ibexa-contracts-connectorraptor-tracking.html) for advanced tracking usage. ## Advanced usage – direct interaction with the service @@ -41,7 +41,7 @@ Check the following example: ### Category parameter for product events In [[= product_name =]], products can be assigned to multiple categories. -However, Raptor accepts only a single category value in tracking events. +However, [[= product_name_cdp_base =]] accepts only a single category value in tracking events. By default, the connector uses the first category from the list of categories assigned to the product. You can override this behavior and define which category is sent in tracking events. diff --git a/docs/resources/contributing/package_structure.md b/docs/resources/contributing/package_structure.md index dcda1396d51..75ef6dc899c 100644 --- a/docs/resources/contributing/package_structure.md +++ b/docs/resources/contributing/package_structure.md @@ -6,7 +6,7 @@ description: All code contributions to Cohesivo must follow package and bundle s If you wish to contribute to [[= product_name =]] development, you need to adhere to the package and bundle structure and namespace standards. -The following conventions apply to contributions to [[= product_name_base =]] core code, not to third party packages. +The following conventions apply to contributions to [[= product_name =]] core code, not to third party packages. !!! note @@ -21,7 +21,7 @@ Define [[= product_name =]] core PHP code in a namespace with the following pref namespace Ibexa; ``` -A package which groups some DXP features can use an additional prefix, for example: +A package which groups some [[= product_name =]] features can use an additional prefix, for example: ``` php {skip-validation} namespace Ibexa\Commerce; diff --git a/docs/search/search_engines/solr_search_engine/install_solr.md b/docs/search/search_engines/solr_search_engine/install_solr.md index 5feae5a66fd..1c31adcfdfb 100644 --- a/docs/search/search_engines/solr_search_engine/install_solr.md +++ b/docs/search/search_engines/solr_search_engine/install_solr.md @@ -22,7 +22,7 @@ Download and extract Solr: - [solr-9.8.1.tgz](https://archive.apache.org/dist/solr/solr/9.8.1/solr-9.8.1.tgz) Copy the necessary configuration files. -The examples below copy from the root of your DXP project to the place you've extracted Solr: +The examples below copy from the root of your [[= product_name =]] project to the place you've extracted Solr: === "Solr 9" diff --git a/docs/snippets/elasticsearch_clear_index.md b/docs/snippets/elasticsearch_clear_index.md index 87f029b50d8..804b0eecead 100644 --- a/docs/snippets/elasticsearch_clear_index.md +++ b/docs/snippets/elasticsearch_clear_index.md @@ -13,7 +13,7 @@ yellow open default_location_eng_gb_46 fSGtpljwTpGfascFechmww 1 1 1 0 21kb (...) ``` -Create a list containing all indices used by the DXP, including the [custom indices](/search/search_engines/elasticsearch/configure_elasticsearch.md#define-field-type-mapping-templates) as well. +Create a list containing all indices used by [[= product_name =]], including the [custom indices](/search/search_engines/elasticsearch/configure_elasticsearch.md#define-field-type-mapping-templates) as well. Then, delete them by using the [delete index endpoint](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/indices-delete-index.html) From a775c912452aaa5e5f98cf0e488d8df0bfa4def1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Thu, 6 Aug 2026 12:39:38 +0200 Subject: [PATCH 15/17] Implement reviewer comments --- .../project_organization/architecture.md | 6 ++--- .../project_organization.md | 2 +- docs/ai/ai_actions/ai_actions_guide.md | 2 +- docs/ai/mcp/mcp_usage.md | 2 +- .../rest_api/rest_api_usage/rest_api_usage.md | 2 +- .../data_migration/data_migration.md | 2 +- docs/getting_started/install_with_ddev.md | 4 +-- docs/ibexa_cloud/ibexa_cloud_guide.md | 4 +-- docs/ibexa_products/ibexa_experience.md | 4 +-- docs/ibexa_products/ibexa_headless.md | 6 ++--- .../{ibexa_engage.drawio => qualifio.drawio} | 0 docs/index.md | 2 +- docs/infrastructure_and_maintenance/backup.md | 2 +- .../security/security_checklist.md | 2 +- .../support_and_maintenance_faq.md | 2 +- .../diagrams_source/remote_pim_support.xml | 6 ++--- .../img/remote_pim_support.png | Bin 81695 -> 81414 bytes docs/product_catalog/quable/install_quable.md | 2 +- .../img/cdp.drawio | 0 .../img/cdp.png | Bin docs/raptor_cdp/img/raptor_cdp_how_works.png | Bin 103388 -> 0 bytes .../raptor_cdp_data_export.md | 2 +- docs/raptor_cdp/raptor_cdp_guide.md | 2 +- .../connector_installation_configuration.md | 2 +- .../raptor_integration/hybrid_tracking.md | 2 +- .../raptor_integration/tracking_functions.md | 4 +-- docs/release_notes/ibexa_dxp_v5.0.md | 2 +- .../contributing/report_and_follow_issues.md | 2 +- docs/resources/phpstorm_plugin.md | 6 ++--- docs/resources/release_process_and_roadmap.md | 2 +- .../elasticsearch/configure_elasticsearch.md | 2 +- .../solr_search_engine/configure_solr.md | 2 +- .../2_create_the_content_model.md | 2 +- .../8_enable_account_registration.md | 4 +-- .../beginner_tutorial/beginner_tutorial.md | 2 +- docs/update_and_migration/from_2.5/to_3.3.md | 4 +-- docs/update_and_migration/from_3.3/to_4.0.md | 6 ++--- .../from_3.3/update_from_3.3.md | 8 +++--- docs/update_and_migration/from_4.0/to_4.1.md | 2 +- .../from_4.1/update_from_4.1.md | 2 +- .../from_4.2/update_from_4.2.md | 2 +- .../from_4.3/update_from_4.3.md | 2 +- .../from_4.3/update_from_4.3_new_commerce.md | 2 +- .../from_4.3/update_from_4.3_old_commerce.md | 2 +- .../from_4.4/update_from_4.4.md | 2 +- .../from_4.5/update_from_4.5.md | 6 ++--- .../from_4.6/update_from_4.6.md | 14 +++++----- .../from_4.6/update_to_5.0.md | 24 +++++++++--------- .../from_5.0/update_from_5.0.md | 8 +++--- .../migrate_to_ibexa_dxp/common_issues.md | 4 +-- .../migrating_from_ez_publish_platform.md | 4 +-- docs/users/oauth_server.md | 2 +- mkdocs.yml | 2 +- plugins.yml | 4 +-- theme/partials/eol_warning.html | 2 +- .../api_refs/.phpdoc/template/index.html.twig | 2 +- 56 files changed, 95 insertions(+), 95 deletions(-) rename docs/ibexa_products/img/{ibexa_engage.drawio => qualifio.drawio} (100%) rename docs/{ibexa_products => raptor_cdp}/img/cdp.drawio (100%) rename docs/{ibexa_products => raptor_cdp}/img/cdp.png (100%) delete mode 100644 docs/raptor_cdp/img/raptor_cdp_how_works.png diff --git a/docs/administration/project_organization/architecture.md b/docs/administration/project_organization/architecture.md index 0adfb1ea409..b2169989302 100644 --- a/docs/administration/project_organization/architecture.md +++ b/docs/administration/project_organization/architecture.md @@ -7,7 +7,7 @@ description: Cohesivo architecture is structured in multiple layers connected by [[= product_name =]] architecture is based on the philosophy to **use APIs** that is maintained in the long term. This **makes upgrades easier and provides lossless couplings** between all parts of the architecture, at the same time improving the migration capabilities of the system. -The structure of an [[= product_name =]] app is based on the Symfony framework but content management functions rely on the public PHP API. +The structure of a [[= product_name =]] app is based on the Symfony framework but content management functions rely on the public PHP API. Other applications integrate with [[= product_name =]] via REST API, which also relies on the public PHP API. ![Architecture](architecture.png "Architecture") @@ -16,11 +16,11 @@ The architecture of [[= product_name =]] is layered and uses clearly defined API | Layer | Description | |-----------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Back office](back_office_configuration.md) | Back office contains all the necessary parts to run the [[= product_name =]] back office interface. | +| [Back office](back_office_configuration.md) | Back office contains all the necessary parts to run the [[= product_name =]]'s back office interface. | | [HTTP Cache](http_cache.md) | Symfony HTTP cache is used to manage content "view" cache with an expiration model. In addition it is extended by using FOSHttpCache to add several advanced features. | | [Controllers](controllers.md) | Controllers created by you to read information from a Request object, create and return a Response objects. | | [Twig templates](twig_function_reference.md) | Set of custom and built-in Twig templates. User interfaces are developed with the Twig template engine and query the public PHP API directly. | -| [REST API v2](rest_api_usage.md) | The REST API v2 enables you to interact with an [[= product_name =]] installation through the HTTP protocol, following a REST interaction model. | +| [REST API v2](rest_api_usage.md) | The REST API v2 enables you to interact with a [[= product_name =]] installation through the HTTP protocol, following a REST interaction model. | | [GraphQL](graphql.md) | GraphQL for [[= product_name =]] exposes the domain model using the repository, based on content type groups, content types and field definitions. | | [Public PHP API](php_api.md) | Public PHP API exposes the repository which enables you to create, read, update, manage and delete all objects available in [[= product_name =]]. | | Business Logic | The business logic is defined in the kernel. This business logic is exposed to applications via an API. It is used to organize development of the user interface layer. | diff --git a/docs/administration/project_organization/project_organization.md b/docs/administration/project_organization/project_organization.md index 077e607dfc2..6a40afc6513 100644 --- a/docs/administration/project_organization/project_organization.md +++ b/docs/administration/project_organization/project_organization.md @@ -1,5 +1,5 @@ --- -description: An Cohesivo project follows Symfony's directory structure to organize files in the project. +description: A Cohesivo project follows Symfony's directory structure to organize files in the project. --- # Project organization diff --git a/docs/ai/ai_actions/ai_actions_guide.md b/docs/ai/ai_actions/ai_actions_guide.md index 33be6a9056b..0bf5abc073d 100644 --- a/docs/ai/ai_actions/ai_actions_guide.md +++ b/docs/ai/ai_actions/ai_actions_guide.md @@ -140,7 +140,7 @@ For example, if this is your organization's requirement, a developer could write ## Use cases -Out of the box, after you configure access to the OpenAI service, the [[= product_name_base =]] AI Actions come with two action types that can help your organization with the following tasks. +Out of the box, after you configure access to the OpenAI service, AI Actions come with two action types that can help your organization with the following tasks. ### Refining text diff --git a/docs/ai/mcp/mcp_usage.md b/docs/ai/mcp/mcp_usage.md index 0f8f35534f1..dfb1e523061 100644 --- a/docs/ai/mcp/mcp_usage.md +++ b/docs/ai/mcp/mcp_usage.md @@ -91,7 +91,7 @@ The server: !!! note "Storage choice recommendations" Filesystem storage is convenient for the sake of this example and for testing. - For production, it is recommended that you use Redis or Valkey. + For production, it's recommended that you use Redis or Valkey. In a new `config/packages/mcp.yaml` file, define a new MCP server for the `default` repository and assign it to all SiteAccesses: diff --git a/docs/api/rest_api/rest_api_usage/rest_api_usage.md b/docs/api/rest_api/rest_api_usage/rest_api_usage.md index 26072c89c19..222f825b7bf 100644 --- a/docs/api/rest_api/rest_api_usage/rest_api_usage.md +++ b/docs/api/rest_api/rest_api_usage/rest_api_usage.md @@ -4,7 +4,7 @@ description: The REST API covers objects in the Cohesivo Repository with regular # REST API usage -The REST API in [[= product_name =]] allows you to interact with an [[= product_name =]] installation by using the HTTP protocol, following a [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) interaction model. +The REST API in [[= product_name =]] allows you to interact with the [[= product_name =]] installation by using the HTTP protocol, following a [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) interaction model. Each resource (URI) interacts with a part of the system (like content, users or search). Every interaction with the repository than you can do from back office or by using the [Public PHP API](php_api.md) can also be done with the REST API. diff --git a/docs/content_management/data_migration/data_migration.md b/docs/content_management/data_migration/data_migration.md index d3230cc111d..55e256cc0ab 100644 --- a/docs/content_management/data_migration/data_migration.md +++ b/docs/content_management/data_migration/data_migration.md @@ -5,7 +5,7 @@ page_type: landing_page # Data migration -Data migration allows exporting and importing selected data from an [[= product_name =]] installation. +Data migration allows exporting and importing selected data from a [[= product_name =]] installation. [*Exporting*](exporting_data.md) data consists in saving selected repository information in YAML format. [*Importing*](importing_data.md) reads migration YAML files and creates or modifies repository content based on them. diff --git a/docs/getting_started/install_with_ddev.md b/docs/getting_started/install_with_ddev.md index 931f2a0f7be..32bc38749d8 100644 --- a/docs/getting_started/install_with_ddev.md +++ b/docs/getting_started/install_with_ddev.md @@ -417,7 +417,7 @@ Some DDEV configs can be shared among developers. For example, a common `.ddev/c Compared to running a clean install like described in [Installation steps](#installation), you can proceed as follows: -- In [1. Create a DDEV project directory](#1-create-a-ddev-project-directory), you can use an existing directory that contains an [[= product_name =]] project instead of creating an empty directory. +- In [1. Create a DDEV project directory](#1-create-a-ddev-project-directory), you can use an existing directory that contains a [[= product_name =]] project instead of creating an empty directory. - In [5. Create [[= product_name =]] project](#5-create-project), use only `ddev composer install` instead of `ddev composer create-project`. - Populate the database with [Ibexa data migration](importing_data.md) or [`ddev import-db`](https://docs.ddev.com/en/stable/users/usage/commands/#import-db). @@ -434,7 +434,7 @@ If the local project needs to answer to real production domains (for example, to You can use DDEV to locally simulate a production cluster. - See [Clustering with DDEV](clustering_with_ddev.md) to add Elasticsearch, Solr, or Redis to your DDEV installation. -- See [DDEV and Ibexa Cloud](ddev_and_ibexa_cloud.md) to locally run an [[= product_name =]] project by using DDEV. +- See [DDEV and Ibexa Cloud](ddev_and_ibexa_cloud.md) to locally run a [[= product_name =]] project by using DDEV. ## Stop or remove the project diff --git a/docs/ibexa_cloud/ibexa_cloud_guide.md b/docs/ibexa_cloud/ibexa_cloud_guide.md index 2b77923693e..4468974dab7 100644 --- a/docs/ibexa_cloud/ibexa_cloud_guide.md +++ b/docs/ibexa_cloud/ibexa_cloud_guide.md @@ -11,13 +11,13 @@ month_change: false It also establishes the framework for the potential growth and improves project delivery. As a diverse Platform as a Service (PaaS), it's designed to allow you to focus on the crucial things. -[[= product_name_cloud =]] is a part of [[= product_name =]] - a software that is designed to provide your business with all the features, functionality, and support your need to transform your business for the digital age. +[[= product_name_cloud =]] complements the capabilities of [[= product_name =]] - a software that is designed to provide your business with all the features, functionality, and support your need to transform your business for the digital age. ![Ibexa Cloud - part of [[= product_name =]]](../getting_started/img/ibexa_cloud_dxp.png) ## Availability -[[= product_name_cloud =]] is available in all [[= product_name =]] editions. +[[= product_name_cloud =]] is available for all [[= product_name =]] editions. ## How does [[= product_name_cloud =]] work diff --git a/docs/ibexa_products/ibexa_experience.md b/docs/ibexa_products/ibexa_experience.md index 8676f394a11..73d1e0a7149 100644 --- a/docs/ibexa_products/ibexa_experience.md +++ b/docs/ibexa_products/ibexa_experience.md @@ -7,7 +7,7 @@ month_change: false ## What is [[= product_name_exp =]] -[[= product_name_exp =]] is an [[= product_name =]] edition that focuses on the customer. +[[= product_name_exp =]] is a [[= product_name =]] edition that focuses on the customer. It offers smooth consumer journey and great online experience. In everything you do, it places your clients first. With Experience edition you can empower Editors to quickly create new pages or personalized content, and improve their daily work. It also provides tools for using segmentation and targeting, and it can be widely used in B2B thanks its features and integrations. @@ -110,7 +110,7 @@ Additionally, you can manage and analyze campaigns, evaluate customer data, and By using [[= product_name_cdp =]] you can store and manage large volumes of customer data in a structured manner. This central data storage supports business growth with a scalable infrastructure, helping to futureproof your business. -![CDP](cdp.png) +![CDP](../raptor_cdp/img/cdp.png) #### [[= product_name_engage =]] diff --git a/docs/ibexa_products/ibexa_headless.md b/docs/ibexa_products/ibexa_headless.md index ebeb6a86db3..0149c5e053a 100644 --- a/docs/ibexa_products/ibexa_headless.md +++ b/docs/ibexa_products/ibexa_headless.md @@ -104,9 +104,9 @@ There are many paths to access the content in many shapes: On top of this strong core, [[= product_name_headless =]] brings tools to increase user experience, from final front users to back office contributors. -#### Complete DXP +#### Complete platform -[[= product_name_headless =]] is a complete Digital Experience Platform (DXP), which comes with the following components to enhance user's journey: +[[= product_name_headless =]] is a complete platform, which comes with the following components to enhance user's journey: - [Recommendations](raptor_connector_guide.md) connector, which allows you to recommend content to end users according to their behavior, or, when authenticated, by matching with their segment/group. @@ -150,7 +150,7 @@ Several features help end users collaborate on the content, such as: - [[= product_name_connect =]]'s role is to create application interconnections with low code and drag-and-drop, in a compelling visual interface. Complex data flows can be easily implemented with a huge library of connectors and actions for famous to specific applications. For more information, see [[[= product_name_connect =]] product guide]([[= connect_doc =]]/general/ibexa_connect/). -- An OAuth 2 server offers the possibility to use the DXP as the authentication service for other applications. +- An OAuth 2 server offers the possibility to use the platform as the authentication service for other applications. - An OAuth 2 client supports authentication with a third-party OAuth 2 server. - A DAM Connector, previously mentioned, helps to access any image repository when needing to illustrate a content. - [[= product_name_headless =]] supports Elasticsearch and Solr. diff --git a/docs/ibexa_products/img/ibexa_engage.drawio b/docs/ibexa_products/img/qualifio.drawio similarity index 100% rename from docs/ibexa_products/img/ibexa_engage.drawio rename to docs/ibexa_products/img/qualifio.drawio diff --git a/docs/index.md b/docs/index.md index 19d8d08ec2a..325f88191dc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -162,7 +162,7 @@
-

Manage your DXP

+

Manage your Cohesivo