Release Day: Writing a Custom Migration
Blog postThis week we're finally ready to dive in and write our first custom migration with the Migrate module. To get things set up, we need to get our source data, and create the content type in our Drupal site so that we have a destination. Joe walks through grabbing some baseball stats in SQL format for the source, and then building out the content types we'll need for teams and players.
Getting up to Speed on Drupal 8 Webinar
Blog postWhen is Drupal 8 coming out? What's going to change in the new version? How do I keep track of it, and most importantly, how am I going to learn what I need to know? These are the questions we're going to answer in a Drupal Association webinar on October 22. Joe Shindelar is going to give an update on where things are with Drupal 8, covering a raft of new features and changes that you'll want to know about. He's going to look at it from different perspectives — as a site-builder, themer, and module developer.
Welcome to Our New Drupal 9 Site
Blog postWelcome to our new Drupal 9 website! We’ve been working hard on this and it’s all paid off today. You’ll see we didn’t redesign the site, so most of the site will look and behave the way it always has. We did make a lot of changes in the backend, and cleaned a bunch of things up.
New Drupal Learning Community
Blog postLast week we launched the Drupalize.Me Community beta and we’d like you to join us. The community is open to everyone, not just Drupalize.Me members.
My esteemed colleague Joe Shindelar has written 2 new tutorials for our existing Migrate to Drupal 9 or 10 course on the migration_lookup
process plugin and Migrate API's map tables.
The entire Drupalize.Me team went to Prague, along with a number of other Lullabots, for DrupalCon Prague. In our latest podcast episode a few of us share what it was like, and the excitement and energy of new things on the horizon.
We’re getting ready to run another iteration of our popular Hands-On Drupal Theming workshop on July 19th, 20th, and 21st, something we haven’t done for over a year as we’ve been focused on teaching Drupal 7 to Drupal 9/10 migrations. In the process of getting ready, I’ve been going through my slides for the workshop and making some updates. Here are the things that jump out to me as important (but work-in-progress) changes in the last year.
Release Day: Migration Field Mapping
Blog postIn this week's lessons for the Importing Data With Migrate and Drupal 7 series we get a good look at our field mappings. This is the time that we make sure our source data is being properly handled and getting to the right destination fields in our Drupal site's database. We walk through basic field mapping, and see how that looks and works in the site UI, as well as with Drush. Then we explore different ways we can transform source data during the migration process, so that it matches what our destination field is expecting.
Welcome Justin to Our Team!
Blog postWe are super excited to introduce you to our new Interactive Designer, Justin Harrell. Justin started with us right before DrupalCon Prague, and so came over to Europe with the rest of the team for an intense introduction to the Drupal world.
We're excited to announce a new course, Performance and Scalability for Drupal Sites! This course is a deep dive into the concepts, terminology, tools, and strategies around performance and scalability for Drupal sites. By the end of this course, you will be well-equipped to understand your site's performance and how you can make your Drupal site blazing fast.
We've updated our Search API and Solr in Drupal tutorials in 2 ways:
1. Instead of providing custom Docker containers, we show you how to use DDEV to set up a local Solr and Drupal development environment.
2. We've tested and updated steps and screenshots for Drupal 10.
If you've been wanting to learn how to develop a Search API and Solr solution for your Drupal site, it's a good time to dive in to this updated course!
We just added a new tutorial all about starting a new theme with Starterkit. Learn how to use it, how it works, and what prompted its addition to Drupal core.
Very few migrations are simple and straight-forward enough that a simple field mapping gets all of the little bits you need. In this week's Importing Data With Migrate and Drupal 7 lessons, we take a look at some complicated field mappings. We are going to add some new data we need to import, with team information. The team data is related to our player data through a relationship, and a player can have multiple teams they've played for.
What If Yoda Taught You Drupal?
Blog postEarlier this quarter, our team got together in Boise, Idaho for our annual retreat. These retreats are always a great opportunity to reconnect, and also to talk about the future of our business. One of the things that's been coming up in a lot of our discussions is how we could leverage Artificial Intelligence (AI) to improve our product, customer service, and learning outcomes for our members. I think it's fair to say that no one on our team is an AI expert at this point, but we are all at least curious.
So, while we were having this discussion I did the only logical thing I could think of: I visited chat.openai.com and asked "How would Yoda go about helping me learn Drupal 10?"
Earlier this month I hosted a Drupal-to-Drupal Migration Workshop, and one of the attendees asked about merging two entity reference fields into a single field during the migration. I wasn't sure how to approach this but we brainstormed some pseudo code, and then came up with two solutions.
Drupal 8: WYSIWYG and In-Line Editing
Blog postDrupal 8 has come a long way since Drupal 7 to being easier to use out of the box. When I built sites for people using Drupal 7 the biggest complaint was the lack of a WYSIWYG editor. At some point installing WYSIWYG module and adding an editor role just became part of my usual installation of modules. This process wasn't complicated, but it was rather annoying.
First you had to install the module, then download the third party WYSIWYG files from another website. Once you had all the components you needed, you then had to setup text formats to use the editing interface, and also configure the role for your content managers to assign correct permissions. My favorite part of the process was the web page of check boxes of buttons you could add to the toolbar. The page was hideous and not very configurable if you'd added any extra add-ons to your WYSIWYG.
On the Drupalize.Me team, we're fans of using DDEV to install Drupal locally. We use DDEV for development work on the site, tutorial demo sites, and workshops. While the Drupal community is spoiled for choice when it comes to options for local development, we've chosen DDEV for a lot of reasons (which we'll get into in this tutorial), but mostly because we use it every day and it works great.
Drupalize.Me trainer Joe Shindelar has recorded a new video walk-through of how he goes about finding out what type of plugin you want to add, and how to find out what code is expected, and where to put that code in your module. The video is now embedded in the written version of the tutorial, Implement a Plugin of Any Type, available to our members.
Years ago I was involved with authoring the Drupal User Guide, and I’m still the maintainer today. Now, we want to pick up where the Drupal User Guide left off, and create a Drupal Module Developer Guide. This hands-on module developer guide will build on the site and the guiding scenario used for the User Guide. We’ll walk through the process of authoring a couple of custom modules to meet your client’s needs and in the process, learn the basics of Drupal module development through writing “real-world” code.
We've added 3 videos to tutorials in our recently published Routes and Controllers in Drupal course. Lead trainer, Joe Shindelar, walks through essential concepts and skills for Drupal module developers like creating a route with a controller, understanding how parameters and upcasting work in Drupal, and how to use route parameters in a practical example with a route definition and a custom page controller class.