https://github.com/aimeos/ai-cms-grapesjs
GrapesJS CMS integration into Aimeos
https://github.com/aimeos/ai-cms-grapesjs
Last synced: 29 days ago
JSON representation
GrapesJS CMS integration into Aimeos
- Host: GitHub
- URL: https://github.com/aimeos/ai-cms-grapesjs
- Owner: aimeos
- License: lgpl-2.1
- Created: 2021-01-24T12:59:28.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-04-10T14:11:02.000Z (2 months ago)
- Last Synced: 2025-05-14T19:07:46.204Z (29 days ago)
- Language: PHP
- Homepage:
- Size: 1.56 MB
- Stars: 475
- Watchers: 5
- Forks: 20
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Aimeos GrapesJS CMS
[](https://circleci.com/gh/aimeos/ai-cms-grapesjs)
[](https://coveralls.io/r/aimeos/ai-cms-grapesjs?branch=master)
[](https://scrutinizer-ci.com/g/aimeos/ai-cms-grapesjs/?branch=master)
[](https://packagist.org/packages/aimeos/ai-cms-grapesjs)The Aimeos GrapesJS CMS extension provides a simple to use but powerful page editor for creating content pages based on extensible components.
## Installation
As every Aimeos extension, the easiest way is to install it via [composer](https://getcomposer.org/). If you don't have composer installed yet, you can execute this string on the command line to download it:
```
php -r "readfile('https://getcomposer.org/installer');" | php -- --filename=composer
```To add the extionsion to your composer-based installation, execute:
```
composer req "aimeos/ai-cms-grapesjs"
```These command will install the Aimeos extension into the extension directory and it will be available after you execute the database migration:

## Integration
### Laravel
First, you have to create the new tables required for the pages by executing this command in the **root directory of your Laravel application**:
```bash
php artisan aimeos:setup
```Then, you need to uncomment the `page` section in your `config/shop.php` and add `cms/page` to the list of components if it's not already there. Add `cms/page` to all pages where you want to display CMS content, e.g.:
```php
'catalog-home' => [ 'cms/page','locale/select','basket/mini','catalog/tree','catalog/search','catalog/home' ],
```To show the content for the CMS page URLs, you have to add this at the **end** of the `./routes/web.php` file in your Laravel application:
```php
Route::match(['GET', 'POST'], '{path?}', '\Aimeos\Shop\Controller\PageController@indexAction')
->name('aimeos_page')->where( 'path', '.*' );
```In multi-language setups, you should add the `locale` as parameter to the route:
```php
Route::match(['GET', 'POST'], '{locale}/{path?}', '\Aimeos\Shop\Controller\PageController@indexAction')
->name('aimeos_page')->where( 'path', '.*' );
```When using a multi-vendor setup, then use one of these alternatives:
```php
// prefix: yourdomain.com/vendor1
Route::group(['prefix' => '{site}', 'middleware' => ['web']], function () {
Route::match(['GET', 'POST'], '{path?}', '\Aimeos\Shop\Controller\PageController@indexAction')
->name('aimeos_page')->where( 'path', '.*' )->where( ['site' => '[a-z0-9\-]+'] );
});// subdomain: vendor1.yourdomain.com
Route::group(['domain' => '{site}.yourdomain.com', 'middleware' => ['web']], function () {
Route::match(['GET', 'POST'], '{path?}', '\Aimeos\Shop\Controller\PageController@indexAction')
->name('aimeos_page')->where( 'path', '.*' )->where( ['site' => '[a-z0-9\-]+'] );
});// custom domain: vendor1.com
Route::group(['domain' => '{site}', 'middleware' => ['web']], function () {
Route::match(['GET', 'POST'], '{path?}', '\Aimeos\Shop\Controller\PageController@indexAction')
->name('aimeos_page')->where( 'path', '.*' )->where( ['site' => '[a-z0-9\.\-]+'] );
});
``````php
```This will add a "catch all" route for every URL that hasn't been matched before so **don't put routes after** that line because they won't be used any more!
## ReCAPTCHA integration
Use use Google reCAPTCHA v3 (invisible CAPTCHA) for all forms in CMS pages, you need to merge this configuration into your `./config/shop.php` (Laravel):
```php
[
'resource' => [
'recaptcha' => [
'secretkey' => '...',
'sitekey' => '...'
]
],
'client' => [
'html' => [
'cms' => [
'page' => [
'decorators' => [
'local' => [
'Recaptcha' => 'Recaptcha'
]
],
]
]
]
]
]
```The `secretkey` and `sitekey` are generated in your [Google account](https://www.google.com/recaptcha). Make sure, you also add all your domains to the list of allowed domains!
## Potential problems
### Page with contact form expired
Due to potential security risks, you must not be logged into the admin backend when using the contact form. Otherwise, you will get a "419 page expired" error page. Thus, make sure you are logged out of the admin backend before sending a contact request.