Drupal Planet

Introducing LocalGov Bus Data: Bringing Bus Information into Your Council Website

Cumberland Council logo

We’re excited to announce the release of LocalGov Bus Data — a new Drupal module built with and for councils, now available for the entire local government community to use.

The Drupal LocalGov Bus Data module was funded by Cumberland Council and delivered as a “build to share” initiative. This module helps councils publish bus stop, route and timetable information directly on their websites using data from the Bus Open Data Service (BODS).

Thanks so much to Craig Barker, Kate Hurr, Shazia Attia ... and all the other cool people at Cumberland Council who have made this a reality. The Confident was just a conduit for building the functionality, all the really hard work had gone on in the background by the Cumberland Council team - discovery, research, validating that there was a shared use case for this among councils. When all those boxes were ticked, The Confident was trusted to get to work.

Built for councils, with councils in mind

LocalGov Bus Data has been designed to integrate seamlessly with LocalGov Drupal or any Drupal website, supporting councils to deliver consistent, user-focused digital services.

It follows a simple but powerful principle:

solve a common problem once — and share the solution with everyone.

What does LocalGov Bus Data do?

The module connects your Drupal website to BODS and imports:

  • Bus stops
  • Routes
  • Timetables

This data is refreshed regularly (typically daily), ensuring residents have access to reliable, up-to-date scheduled service information.

With LocalGov Bus Data, councils can present:

  • Local bus stops and their details
  • Routes serving specific areas
  • Timetable information in a clear, accessible format

—all within their own website.

Why this matters for councils

Public transport information is essential — but often fragmented across multiple operator websites and apps.

LocalGov Bus Data helps councils bring that information together in one place.

A better resident experience

Residents can access bus information directly from your website, without needing to navigate multiple external services.

Clear, consistent information

By using a single national data source (BODS), councils can present structured, standardised timetable data.

No need to build from scratch

This module removes the need for bespoke integrations, saving time and cost.

Making open data useful

BODS provides the data — this module turns it into something practical and usable for residents.

A true “build to share” success

Cumberland Council funded the development of this module with a clear goal:
create something that benefits not just one council, but all councils.

Now, any UK council can adopt and use LocalGov Bus Data for free.

This is local government collaboration at its best:

  • One council invests
  • Many councils benefit
  • Everyone can contribute improvements

Ready to use, flexible to extend

LocalGov Bus Data is:

  • Easy to adopt for councils already using LocalGov Drupal
  • Flexible for teams that want to customise how data is presented
  • Open source, so enhancements can be shared back with the community

Whether you want a straightforward listing of bus services or a richer transport information hub, the module gives you a strong starting point.

Looking ahead

While this module focuses on scheduled timetable data, it lays the groundwork for richer transport experiences in the future. If we can get funding, we'd love to build a "live bus info" feature, so you can click on any bus stop and get up to the second information on when the next bus will arrive.

By bringing transport data into council platforms, we’re moving towards:

  • More joined-up local services
  • Better use of national datasets
  • More accessible information for residents

Let’s build the next thing together

If you’re a council looking to contribute to shared digital solutions across local government, we’d love to help.

The Confident specialises in building reusable, open-source solutions for councils — just like LocalGov Bus Data, the Drupal Public Consultations module, and more. 

Get in touch with The Confident and let’s build something that benefits not just your council — but every council.

Join the "Something nice ..." newsletter

The full title is "Something nice, something quirky, something else".

I send an email once a week with something nice, something quirky, and something else that I think is interesting (all with a web development theme, of course).

My LocalGov Drupal contributions for March 2026

Beautifully crafted digital products and experiences that matter.

Having spent last month working on the new design for the demo theme, I decided to do something similar and focus on a project for March. This month I worked on LocalGov Services.

  1. The new design for LocalGov Scarfolk that I worked on last month got some reviews and suggestions. Hopefully that's ready for the lime light now.
  2. When you are on a Service Landing Page or a Service Sub-Landing Page, you have no control over how many items per row there are for child pages. In Service Landing Page it's 3, in Service Sub-Landing Page it's 2. We now have a theme setting so you can choose any amount between 1 and 4. The latest GOV.UK design suggests it should be one, so this allows us to configure to that suggestion.
  3. Cache tags were not working/not set for the Content Access by Path module. Thanks to Kevin for an MR for this, and a small few extras from me. We now have a 1.1.3 release for the module.
  4. I fixed a few coding standards issues in LocalGov Base.
  5. One task I really enjoy is removing jQuery form our codebase and just using vanilla JavaScript. I now have that complete for LocalGov Events.
  6. I had a great chat with Will, Finn, and Tony about the "Child items" section on Service Landing Pages and how we can't link to external pages. I think we have a decision on how to re-work that, and I'm ready to get started on it.
  7. I got working on the external links for Service Landing Pages issue, but it, naturally, threw up another issue - I need to work across at least 4 repos to get it fixed:
    1. Add external links from Service Landing Pages
    2. Add support for new "Children" field for Services Landing Page
    3. Check the new localgov_children field works with Scarfolk
    4. Create a new paragraph type for the localgov_children field
  8. We got the new design for the LocalGov Scarfolk theme released, so now I have a merge request to set it as the default LocalGov Drupal theme.

Join the "Something nice ..." newsletter

The full title is "Something nice, something quirky, something else".

I send an email once a week with something nice, something quirky, and something else that I think is interesting (all with a web development theme, of course).

A new demo theme for LocalGov Drupal

Beautifully crafted digital products and experiences that matter.

This month I gave myself one job to do: redesign the Scarfolk theme.

This month I wanted to work on something big and try get it complete. The task I took on was redesigning the LocalGov Scarfolk theme. I've always been a bit uneasy about it. I wrote that theme a number of years ago quite quickly so we'd have a theme for our demo site. I also deliberately used as little CSS and templates as possible, so we could show how much we could achieve without too much effort.

Now, 5 years later I think it's time for a re-fresh and to let it show off the capabilities of LocalGov Drupal more. Here's how the new design looks:

Screenshot of LocalGov Scarfolk re-design 2026

 

I worked on some smaller issues too, such as 

And I had fun patching into the LocalGov Drupal Dev Days contribution day to help first time contributors. Oh, and helped Holly from Colchester City Council to make her first contribution to Drupal.org.

 

Join the "Something nice ..." newsletter

The full title is "Something nice, something quirky, something else".

I send an email once a week with something nice, something quirky, and something else that I think is interesting (all with a web development theme, of course).

Tim said "Let's work on WebMCP for Drupal"

The Confident Logo, Drupal Agency led by Mark Conroy

I hadn't head of WebMCP, but now I'm mildly fascinated by the possibilities.

I was chatting with my good friend Tim O’Driscoll (who always has good ideas) and he said, "Mark, you know what would be good to work on?".

I said, "Stop keeping me in suspense, Tim". So he said, "WebMCP for Drupal".

I hadn't heard of WebMCP at this stage, so I went and did some research. Then I thought, "Tim's right, this would be cool to work on".

So I have now created Drupal's first WebMCP module to add WebMCP attributes to the user login/password/create forms so AI Agents will find it easier to interact with them - https://www.drupal.org/project/webmcp_user_forms.

A one-sentence summary of WebMCP: it turns your website into an MCP-enabled application so AI assistants can read context and perform scoped actions on that site (without you needing to create an MCP).

If you want a few links to get up to date with what WebMCP is, here's a few:

 

Join the "Something nice ..." newsletter

The full title is "Something nice, something quirky, something else".

I send an email once a week with something nice, something quirky, and something else that I think is interesting (all with a web development theme, of course).

Drupal Workspaces Revisited

The Confident Logo, Drupal Agency led by Mark Conroy

Got some issues with Drupal workspaces? I got your back.

I gave a talk recently at the LocalGov Drupal Content Meetup about using #Drupal's workspaces module to stage and deploy content, workarounds for some gotchas, and creating previews for unpublished workspaces. All the content in this video is relevant to any Drupal website, not just LocalGov Drupal sites.

I'd love to know your thoughts on it.

Join the "Something nice ..." newsletter

The full title is "Something nice, something quirky, something else".

I send an email once a week with something nice, something quirky, and something else that I think is interesting (all with a web development theme, of course).

Drupal CSS is broken when Aggregation is turned on

The Confident Logo, Drupal Agency led by Mark Conroy

Here's some tips for debugging broken CSS in Drupal.

It's working for me locally. How come this is an issue on dev but not on staging or live? Everything was fine until we merged.

Right, the frontend of your website looks broken, but the backend does not. The chances are, it's something in the frontend theme (might not be, but probably is).

The frontend looks broken, but some of the CSS is working. Sounds like there's a corruption in a CSS file, and things are working fine until the browser gets to the corrupted part.

It's only happening on dev but not on other environments. Great, let's checkout the dev branch so.

It was all fine until "we" merged. Okay, so we have more than one person working on this, and we're not sure exactly who's created the issue. But, if it was all fine until we merged/deployed, then there's a good chance it's a merge conflict marker in your code. 

Where is the corrupted part?

Open your code editor. Do you search for >>>> (git conflict markers) in your theme. Viola!

Other things that could be at issue include a missing semi-colon like this:

.class {
  font-size: 1rem
  font-weight: bold;
}

In CSS the last property in a declaration can omit the semi-colon, but no other property can.

Also check for a missing closing bracket somewhere, like this:

.class {
  font-size: 1rem;
  font-weight: bold;
  
.other-class {
  font-size: 2rem;
}

.even-more-class {
  font-size: 3rem;
}

In the example just above, the .other-class and .even-more-class are now nested classes inside .class since .class has no closing }.

Stay tuned for more "the simple solution is often the best solution" tips.

Join the "Something nice ..." newsletter

The full title is "Something nice, something quirky, something else".

I send an email once a week with something nice, something quirky, and something else that I think is interesting (all with a web development theme, of course).

My LocalGov Drupal contributions for January 2026

Beautifully crafted digital products and experiences that matter.

We're still being clobbered by the migration of projects from GitHub to Drupal.org, making work a lot slower as we try to work and keep track of issues/tasks in two places.

  • I've been proposing for a while a desire/need to have a LocalGov Base companion module, so we can run update hooks (e.g. if we launch a new design pattern, we can reset existing sites to the old pattern so things don't break). But there's an issue with how we get that module installed on all sites in the first place. I need to use an update hook for the "Allowing configuring how many top tasks per row" feature, because we are going to set that to four, but existing sites currently have 3. Then ... Rupert came up with a great idea - themes do not have .install files to run update hooks, but they can run post_update commands. So now I have my PR updated to use our shiny news localgov_base.post_update.php file to do what I what.
  • And because of that, I think we can hold-off on my original proposal to have a companion module, at least for now.
  • Not everyone wants the "Section title" on Guides to be a required field, but we all agree we'd like a fallback if that field is not filled in. We have that now - it will fall back to the Guide title if the section title is left blank. I looked at this one for a while, then realised it was a simple config change, but kept looking through the code to see where the fallback is stored. I can't find it, I'm not convinced it should have been as easy as a simple config change, but we'll see when the other core maintainers are finished testing it.
  • I haven't gotten a huge amount of Drupal core work done recently, so I started work on the issue for removing Stable9 theme - of which I am the core maintainer. We plan to have it marked as deprecated from Drupal 11.4 and removed from Drupal 12.
  • We still haven't gotten to an agreement on what we should use as an aria-label for our facets blocks. But at least the conversation is progressing.
  • I'm not sure how I missed the fact that when creating a documents paragraph type, we show the icon for the file type in the backend when editing, but not in the frontend when viewing the page. You know me, MR ahoy!
  • Sticking to the conversations about documents, we have a lovely hook_preprocess_file_link in LocalGov Base which formats our documents like this on the frontend: "Mark's File (PDF, 2MB)", but since we don't use LocalGov Base on the backend for editing, we see this in editing mode: "mark-file.pdf". So ... I created an MR to add the function to LocalGov Core and a corresponding MR to remove the function from LocalGov Base.
  • Let's add a library to our subtheme generator, so subthemes can easily add styles to CKEditor5. Here's an MR for it.
  • Some users are not fully in love with the idea that every time we change a content moderation state to published, the 'Review date' get automatically enabled and set. I have an MR ready now to make this a configurable setting.
  • We've had one of those bikesheds of issues - a good bikeshed in this case, thankfully - trying to figure out an approach to an aria-label if the block title for a directory search block is not available. I think we have a solution.
  • And in kind of major news that no one knows about, I've started work on a redesign of the Scarfolk theme. What there's was completed in just a few days, and I've never been content with it. Hopefully a fresher design will help sell LGD better.

Join the "Something nice ..." newsletter

The full title is "Something nice, something quirky, something else".

I send an email once a week with something nice, something quirky, and something else that I think is interesting (all with a web development theme, of course).

AI Single Page Importer: Fast, Flexible Single-page Imports for Drupal

Drupal module: AI Single Page Importer

AI Single Page Importer is a Drupal contributed module designed to help bring content into a Drupal site from a single URL or source page in a streamlined way.

I was asking on LinkedIn yesterday if anyone knew of a module that could go to any page on the internet, get the content from that page, and fill in the fields on your node form for any content type with that information.

For example: you work for a council and are given the task of copy/pasting all the content from one section of your (old CMS) site to the new Drupal website. The old site has only one content type (think "posts" in WordPress) but the new site has pages, articles, events, directories, etc. There is not enough content to take the effort of writing a full migration script, but you'd like some help to get the content from one place to the other without having to manually copy/paste every field.

A solution I created: AI Single Page Importer.

What the Module Does

AI Single Page Importer focuses on importing one page at a time and converting it into Drupal content. Typical use cases include migrating articles, documentation pages, or other standalone pages where a one-off import is more appropriate than building a full migration mapping document and pipeline.

Rather than treating imports as a “big batch migration only” problem, this module supports a smaller, repeatable workflow: pick a page, import it, review the output, and publish it.

Here's an outline of how it works:

Where It Fits in a Drupal Content Workflow

AI Single Page Importer can be helpful in scenarios such as:

  • Editorial teams moving content from an old site or external source one page at a time
  • Site builders who want quick imports during a build without creating full migrations
  • Content cleanup projects where each imported page needs human review and refinements

Practical Benefits

  • Speed for one-off imports: Single-page imports help avoid the overhead of full migration setups when only a limited set of pages needs to be moved.
  • Less manual formatting: AI-assisted extraction and cleanup can reduce time spent fixing headings, paragraphs, and general page structure.
  • Structured content outcomes: Instead of dumping everything into one big body field, the import process can be aligned to content types and field models.
  • Editorial control: Human review remains central, with the importer acting as an accelerator rather than a fully automated publisher.

You can download the module from Drupal.org at AI Single Page Importer on Drupal.org. The README.md and project page is quite detailed. If you need to configure anything, you can do so at /admin/config/ai/ai-single-page-importer.

AI Single Page Importer is a handy option for Drupal sites that need quick, page-by-page importing with the added advantage of AI-assisted extraction and cleanup. For teams that want to move faster without sacrificing editorial oversight, it can be a practical bridge between manual copy/paste and full-scale migrations.

Join the "Something nice ..." newsletter

The full title is "Something nice, something quirky, something else".

I send an email once a week with something nice, something quirky, and something else that I think is interesting (all with a web development theme, of course).

My LocalGov Drupal contributions for December 2025

Beautifully crafted digital products and experiences that matter.

What with the move from GitHub to Drupal.org and Christmas holidays being upon us, this month was not as productive as usual.

Join the "Something nice ..." newsletter

The full title is "Something nice, something quirky, something else".

I send an email once a week with something nice, something quirky, and something else that I think is interesting (all with a web development theme, of course).

Solving Common Drupal Workspaces Problems for Content Editors

Here's a response video to some issues reported by Royal Borough of Greenwich during their presentation of using Workspaces.

Hopefully this will help Greenwich and others to get around some of those issues.

Original Greenwich presentation: https://www.youtube.com/watch?v=Fr5Adux2poA

 

Join the "Something nice ..." newsletter

The full title is "Something nice, something quirky, something else".

I send an email once a week with something nice, something quirky, and something else that I think is interesting (all with a web development theme, of course).