FusionCMS 6.0.0 Beta 5 Released
In this months release, we see the core of Fusion extracted out into its own Composer package and the introduction of the new Extension's API.
First things first, we've spent a lot of time this month extracting and isolating the core of what makes up FusionCMS out into it's own Composer package.This has drastically cleaned up the folder structure by basically bringing things back to a vanilla Laravel installation. We're pretty excited about this, as it does open new doors in what's possible in terms of building applications and websites.
While we haven't tested this, it is possible to install Fusion in an existing Laravel installation. But again, this is untested and we're sure there's still work to be done to make this sort of thing a smooth process. Please let us know if you attempt this and share your results! We'd be happy to make adjustments to Fusion to make this more feasible.
You will find the new CMS package at fusioncms/cms on GitHub. There will still be a maintained fusioncms/fusioncms repository which will be used to quickly spin up a new FusionCMS installation that works out of the box (much like how Laravel is split into laravel/laravel and laravel/framework). The only difference is that the FusionCMS repository will largely be a vanilla Laravel install with the CMS package pre-required.
New Extensions API
The first add-on module we are developing is an integration with the headless API provided by BigCommerce. This module will allow FusionCMS websites to natively integrate with BigCommerce to fetch product data and enable developers to easily create online stores with cart and checkout capabilities.
BigCommerce handles product variants, inventory, carts and checkouts really well. Fusion on the other hand, is all about the content. We've spent a lot of time building and tweaking our matrix system to ensure that it can handle a wide variety of content needs. So we thought, wouldn't it be cool if we could extend the data we get from BigCommerce with Fusion's matrix system? What if we could simply tell the system to assign a fieldset to products and let us add additional fields that are not provided or available through BigCommerce?
Well, with our new extensions API, you now can ✌️
The extensions API works at the Eloquent model level. So a prerequisite if you want to extend a third-party API is you'll need to sync the content down locally to your Fusion installation (which is exactly what we're doing with BigCommerce).
We really wanted this to be an easy implementation to make; you almost don't even need to think about it. By simply adding a
HasExtension trait to your Eloquent model and a quick
fusion:sync command away, you will instantly have access to the matrix. You will find a new Extensions dashboard in your control panel where you will be able to assign the desired fieldset to your extensions. From there, you'll be able to access fields and their data like any collection or page.
With this new API, we're able to extend products fetched from BigCommerce with new and dynamic content through Fusion. All products and their information are sourced locally, so once the data is synced, we're not making any additional API calls. This gives developers and designers the freedom of creativity with a system that's familiar.
Be sure to check out the new documentation on extensions for the full details on getting started.
As always, please be sure to check out the changelog for the full list of changes this release.