Frost (even more info on drupal.org) is a component-forward Drupal install profile. It's made for teams and agencies that want to launch quickly, build Drupal-based functionality on top, and maintain the codebase in the long term with less frustration.
On installation, you have the components, configurations, content, and instructions to make a launchable brochure site without fuss, so your team can focus on advanced functionality.
All the awesome stuff that comes with Drupal and contrib, plus:
search_api_solr
index configuration, View, and blocksOne more thing: Heroes. Content, terms, and products all have a hero that shows the page title by default, but a Hero display mode can be used anywhere to override the hero layout, or a custom Paragraphs-based hero with all the styling options (including looped background videos!) can be dropped in, all without calling on a developer.
Theses are the kinds of things every site should need, so frost makes them available on day one:
Node configurations can be cloned, and the common field settings are easy enough to add and remove from bundle to bundle.
By making most content use a consistent set of Atomic Design components, we can ensure content site-wide abides by the directives of your design system.
All the components are Paragraphs including the layout mechanism, so tools like Gutenberg and Layout Builder aren't required.
The "Stripe: Atomic" sectioning container gives you a lot of flexibility to build out experiences, but could be a ton of work if every section on the site is different. For designs with consistent-or-alternating sections you can easily take a "balanced breakfast" approach and create other 'Stripe' sections like "Stripe: Image + text" or similar.
This guide is intended to get you going with a site quickly, and assumes a moderate amount of technical knowledge, such as the ability to install dependencies using a nix-style package manager.
You'll probably have luck cloning the repo in step 2 of the local steps below, but if not then you'll want to make an account on GitHub and add a working SSH public key to your account.
In the future we may automate more of these steps, but for now it's useful to walk through them all to ensure success, and to drill down into points where the process could tentatively fail for you.
If you follow these steps and run into difficulty, please add an issue to this repository with a detailed explanation of what went wrong, so we can fix it and amend the documentation further. Thank you.
cd
to where you want to store the repository on your computer (if unsure, cd ~
then mkdir htdocs
then cd ~/htdocs
)git clone git@github.com:solve-it-once/frost.git nameofyoursite
(where 'nameofyoursite' is the site name with just
letters/numbers/underscores)cd nameofyoursite
to enter the repositoryvi .git/config
(or use your text editor of choice) and save the file with "filemode = false" under corevi .ddev/config.yaml
and change the 'name' (where the word 'frost' is) to be 'nameofyoursite' insteadvi blt/example.local.blt.yml
and change the two instances of 'frost' to 'nameofyoursite'ddev start
to create and begin running the application's containersddev composer install
to ensure the dependencies are available. ddev start tries to do this but sometimes failsddev blt blt:init:git-hooks
to validate your commits (you may be prompted to
provide feedback data to the BLT maintainers)ddev blt source:build
to move the settings files into place, among other automated activitiesddev drush sql:connect
to confirm the mysql command has plausible looking database, user, and password valuesddev drush si
to install Drupal using the frost install profile/distribution. Say yes to delete the database, and
ignore errors and warnings. This command will tell you the admin usernsmae and password. Copy these and retain them
for your recordsddev drush en frost_default_content
to install the pages and examples for a head startddev drush pmu frost_default_content
to keep the installed modules cleanddev drush uli
to get a URL you can copy and then paste into your browser to log into your new site. If this doesn't
work, use the admin username and password from step 12/user/1/edit
. On the User #1 edit screen, be sure to at least enter a name in the name field, and ideally the
other profile fieldsThe exact steps to take your local dev site and turn it into a live website on the public internet varies by which hosting service provider you choose, but the following rough guidelines could help in setting up your site and workflow:
.git/config
file for the repoddev drush cex -y
to export your site's configuration. This is important to do early as the repo contains
configurations that may not be importable. Exporting early can save some heartacheddev blt validate
to confirm all the twig, yaml, PHP, and other files are formatted correctlyddev drush sql-dump --result-file=nameofyoursite_local_YYYYMMDD_0.sql
will save the file in docroot/
. I usually
move it to the repo root to make it easy to restorefrost.site.yml
in drush/sites
for a yml file containing your new host's correct drush aliases)If you go through the process of deploying a frost site to a hosting service without detailed instructions in this readme, the project would love your contribution of tweaked configuration files and step-by-step instructions! Presently frost intends to support:
...though other services or a plain LAMP hosting server are also welcome.
If you're done evaluating frost and want to delete the nameofyoursite instance off your laptop, you can do the following:
ddev delete -y
(this kills the crab)cd ..
to leave the nameofyoursite folderrm -rf nameofyoursite/
Much of the site-specific work you'll do is standard Drupal site-building, like making or cloning new content and other entity types and assigning fields, form widgets, and view modes for them, but there are a few places primarily in frost_theme where small tweak can really make the site look like your own:
/admin/config/system/site-information
is a good
start/admin/content/contact-info
is a quick win. Aren't the social icons cool?/admin/content/paragraphs
docroot/
) with your own brandingtests/
directory is probably familiardocroot/themes/custom/frost_theme
. The intention is for you to edit the
theme directly, rather than creating a subtheme or anything else similarly bothersomedocroot/themes/custom/frost_theme
replace the logo images at the theme root and in the images/
sub-folder(s)
with your own brandingdocroot/themes/custom/frost_theme/css/settings.css
to match your
brand's colors. If your brand includes a shade of blue, use that for the "Main" color. For the most part just follow
the file's leadincludes/
directorydata-
attributes that the theme
CSS/JS can pick upWhy would you choose frost instead of another installation profile, CMS, or SaaS product? Why does frost do things the way it does?
docroot/themes/custom/frost_theme/js/partials
for lots of examples