In this introductory series you will learn how use the Domain Access project to let you manage multiple "sites" with different domain names from just one Drupal installation. Domain Access "multisite" works differently from the core multisite feature in that you truly only have one site to manage. There is just one code base and one database. Domain Access takes advantage of Drupal's node access system to give the illusion of multiple sites. In this series we start off by getting some context through several presentations that explain what Domain Access offers, and why you might use it, how DNS and Apache web servers work, and what you need to understand about the node access system. Once we dive into the hands-on work, you will configure Apache to work with multiple domain names, and get Domain Access installed on your site. Then you will configure a very basic Domain Access site, learning how to share and restrict content, change themes, and set up permissions for fine-grained access control.
Additional resources
Domain Access project (drupal.org)
This series will implement the same example as the Multisite series did, but with Domain Access instead. You can see and compare the two methods. First, let's look at some other examples using Domain Access and see what we get when we download the package from Drupal.org. We'll also talk about the features provided, along with some things to be aware of and consider when choosing Domain Access.
Additional resources
Domain Access project (drupal.org)
Domain Access can do its magic because of the Drupal node access system. In this tutorial we'll walk through the basics of how this system works, highlighting the two main methods, and then explain why this may be important information for you. We won't be diving into the code side of things, but instead outline the basic concepts for anyone who needs to interact with this system. When using a module like Domain Access, you should be aware of the Drupal context in which you are working, even if you hopefully never have to dive into the details.
Additional resources
Controlling Access to Content Overview (drupal.org handbook)
Node access developer documentation (api.drupal.org)
Let’s take a brief look at how translation contributions work in Drupal. This written tutorial is based on the free video, Translation in Drupal.
Podcast Episode 62: Distributed Design
Blog postDesign work is a lot of show-and-tell. It can be challenging to effectively communicate and collaborate on a distributed team. Join hostess Amber Matz, Lullabot Creative Director Jared Ponchot, Lullabot UX Designer Jen Witkowski, and Justin Harrell, Interactive Designer for Drupalize.Me, as they talk about the unique challenges, processes, and tools they use as part of a distributed team.
In this PHP tutorial, you'll learn about to change the visibility of properties to private
and how this affects how these properties can be accessed. You'll change the public properties to private and then add "getter" and "setter" methods to the class to enable controlled access of the values of these private properties.
Note: the word "hooks" in this video does not refer to hooks in Drupal's API.
Note: PHP does provide magic methods for getting and setting which are explained in this tutorial: Magic Methods: __toString(), __get, __set.
Additional resources
In this PHP tutorial, you'll learn how Type Hinting can help you get better errors from PHP as you develop your application. You'll learn to debug errors and see how Type Hinting impacts the phrasing of the error messages you receive.
Additional resources
In this PHP tutorial, you'll learn how to use Constructors to set up objects and perform certain operations when a new object of this type is instantiated.
Additional resources
Constructors and Destructors (PHP Manual)
Explore more PHP tutorials
This week, we're wrapping up our series, Introduction to Object-oriented PHP, in partnership with KnpUniversity, with tutorials on access control for properties, type hinting, and constructors in PHP.
Here's an example of an assumption; The sun will rise tomorrow. An assumption is something that is accepted as true or as certain to happen, without proof. This kind of thinking, while convenient, is prone to concealing facts, and troublesome when debugging code. This article defines what an assumption is, and provides some techniques for helping to eliminate them during debugging.
Release Day: Working with PHP Objects
Blog postThis week, we continue our Introduction to Object-oriented PHP series, in partnership with KnpUniversity (now SymfonyCasts), with tutorials that mostly focus on working with objects in PHP. You'll also learn how to add a specially formatted comment to your code that will enable code autocomplete functionality in your IDE.
In this PHP tutorial you'll learn how to work with multiple object instances of the same class that have different data and function independently.
Additional resources
In this PHP tutorial, you'll learn how to create a method that will enable multiple objects to interact with each other.
Additional resources
In this PHP tutorial, you'll learn how to add a specially-formatted comment to your method that will enable additional autocomplete functionality in IDEs such as PHPStorm.
Additional resources
In this PHP tutorial, you'll learn how to refactor the practice code in play.php into the Ship class. You'll get more practice working inside of a class and with objects.
Additional resources
While a lot of our days are focused on Drupal, as web developers there are other pieces of tech that we need to understand and use on a regular basis. One example is Apache web server. This is the most popular web server on the web and likely the one your site uses. While you don't need to be a system administrator to use Drupal, you do need to understand some basics of Apache when working with domain names, especially if you're managing multiple domain names on one web server.
Self-Serve Group Memberships
Blog postAt the beginning of this month, we introduced a new feature on the site: self-serve group memberships! In the olden days, when a group wanted to purchase a membership, we asked that they email us. We then generated an invoice and emailed it back. No longer! Now, groups can purchase 5-seat memberships directly from our site—no emailing or invoicing required. Not only is the signup process now very straightforward, but you can purchase a group membership on a monthly basis in addition to the annual option.
This week's podcast, Episode 61: Mental Health and Open Source, dives into the private topic of our mental health. A few Lullabots are joined by Mike Bell, who recently gave a presentation on this topic, sharing his own personal journey. We discuss the pressures and effects we've all experienced in different ways, as well as the ways we've worked to manage our own mental health, and ways the Drupal and open source communities can help.
In anticipation of the release of Drupal 8, one of the things we think is important is to provide foundational training material in areas related to the changes in Drupal 8. One major change is the shift to an object-oriented PHP (OO PHP) architecture, which you can learn more about here, in my presentation, What's New in Drupal 8: Object-oriented PHP. To provide a hands-on coding introduction to OO PHP, we worked with our partners at KnpUniversity to create a new series. Today we are delighted to release the first four video tutorials in the new KnpUniversity series, Introduction to Object-Oriented PHP.