Buildamic Pagebuilder (Beta)

Buildamic Pagebuilder (Beta) Main Screenshot

Latest Version on Packagist Total Downloads MIT Licensed Run Tests

Buildamic is a WIP "pagebuilder" for Statamic 3, It is currently in heavy development and likely to have breaking changes with frequency, as such is not considered ready to be used in production.

THIS IS A BETA

Please be aware that it is not recommended to use this in production just yet.

Requirements

  • PHP 8.0 or higher
  • Statamic 3.2 or higher
  • Laravel 8.0 or higher

Installation

You can install the package via composer:

composer require handmadeweb/buildamic

Usage

Backend

Adding to a blueprint

Add the field to your blueprint, you may then choose what fields or sets will be available for Buildamic to use.

Field/Fieldset/Set Display names

Buildamic will display the "label" for the "field" from the first available. * Admin Label (Found in the options area of the "field") * Display (As configured on the blueprint) * Handle (As configured on the blueprint)

Frontend

Grid

Buildamic comes with a grid starting point (which expects that you are using TailWind), If you aren't going to be writing your own grid, then you should include Buildamic's grid style in your header via the provided helpers for Antlers: {{ buildamicStyles }}, Blade: @buildamicStyles or PHP: echo BuildamicHelper()->styles();

Outputting

Outputting on the frontend is quite simple, you just use the handle that was given to the field when you configure it in your blueprint. And reference the below two examples on how to render the output in Antlers or Blade.

Statamic automatically casts the handle to an instance of \Statamic\Fields\Value and will automatically render via the __toString methods.

By default the handle will be "buildamic"

Antlers output

// The easy way
{{ buildamic }}

Blade output

If you are using Blade then We advise using "Our perferred way" listed below, which is slightly faster and will show a more complete picture should you choose to run a code profiler (Example: blackfire.io)

// The easy way
{!! $buildamic !!}

// Our perferred way.
{!! $buildamic->value()->render() !!}

View Engines & View Overrides

Currently Buildamic only comes with view files written in Blade. Buildamic will still work if your front end uses Antlers, it just means that when Buildamic loops and renders fields, Blade will be used to do so.

Should you need to override a given view (or create new ones) you can do so by creating the views at resources/views/vendor/buildamic

Field view order

When Buildamic tries to render a field, it will use the first available file, checked in the below order.

  • field type: markdown
  • field handle: hero-blurb
  • loaded file: fields/markdown-hero-blurb.blade.php

Then

  • field type: markdown
  • loaded file: fields/markdown.blade.php

Then

  • catch all
  • loaded file: default-field.blade.php

In the event that a suitable view could not be located, rather than erroring out or logging an exception, something like the below will instead appear as a html comment.

<!-- Field could not be rendered, View not found -->
<!-- Type: bard -->
<!-- Handle: heading -->

Fieldset view order

When Buildamic tries to render a fieldset, it will first try to find a view that matches the handle of the fieldset. * handle: blurb * loaded file: fieldsets/blurb.blade.php

If no suitable view was found, then Buildamic will loop through each field within the fieldset and will treat them as separate fields, in which case the fields view order will apply.

Set view order

When Buildamic tries to render a set, it will first try to find a view that matches the handle of the set.

  • handle: blurb
  • loaded file: sets/blurb.blade.php

If no suitable view was found, then Buildamic will loop through each field within the set and will treat them as separate fields, in which case the fields view order will apply.

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.