By berliner , 11 September, 2026

In the previous post in this series, I described how we rebuilt our page templates with Layout Builder. I ended that post by mentioning that templates are less suitable when the page hierarchy must be derived from the data itself.

To explain that part of the rebuild, it helps to look at a more basic change. In the Drupal 7 site, an imported data object and the page that presented it were the same node, whereas the rebuilt site stores them as separate entities.

By berliner , 15 August, 2026

Back in 2022, we upgraded an existing brochure-style site from Drupal 7. The project has been running in different forms for many years and has accumulated a few architectural ideas that worked well, as well as others that needed reconsideration.

This is the first in a series of posts about things I learned while rebuilding and further developing that site.

Most of the information displayed on the site comes from external data sources. Instead of writing and formatting narrative content, editors select from a library of data-driven widgets. These display maps, charts, lists or key figures and provide a limited set of configuration options.

By berliner , 9 February, 2023

Sometimes during development, you need to run the same post update hook repeatedly. Instead of resetting Drupals internal registry on already-run updates, we can also use drush to run a specific hook manually.

By berliner , 18 December, 2019

Quick and dirty on linux based systems:

mysql -u$DB_USER -p$DB_PASS -D$DB_NAME -h$DB_HOST -e "show tables" -s   \
  | awk \
    -v DB_USER=$DB_USER \
    -v DB_PASS=$DB_PASS \
    -v DB_NAME=$DB_NAME \
    -v DB_HOST=$DB_HOST \
    '{ print "mysql -u"DB_USER" -p"DB_PASS" -D"DB_NAME" -h"DB_HOST" -e \"DROP TABLE "$1"\""}' \
  | sh