Planet Drupal

Subscribe to flux Planet Drupal - aggregated feeds in category Planet Drupal
Mis à jour : il y a 41 min 40 sec Drupal 8 Views: How to set as admin path

mar, 11/10/2016 - 14:00

In many cases, uniting routing with admin path definition makes things easier, but not when it comes to Views because their routes are generated dynamically. The solution I have come up with is to use a RouteSubscriber.

Catégories: Elsewhere Using the entity API in Drupal 8

mar, 11/10/2016 - 11:32

There is a lot of literature about entities and their purpose in Drupal 7 context. Most of it has been adopted in Drupal 8 as well. In this post, I'll highlight the differences between D7 and D8 entities and how to use the entity API in 8.

Entities have their own classes in 8. Also, Drupal 8 introduces the concept of config entities. These are used to store user-created configuration if its more than a piece of text, boolean or integer. They differ from the usual entities in the following ways:

  • The are not revisionable
  • The don't support entity translation interface(TranslatableInterface), but can still be translated using config's translation API.
  • The don't have fields/are not fieldable.

The rule of the thumb is, any information pertaining to the structure and functionality of the site(image style, content types, filters), how content is being served(views, display modes) etc. are config entities.

Secondly, the data storage mechanism moved from being field-centric in 7 to entity centric in 8. This implies that all fields attached to an entity share the same storage backend, making querying a lot easier.

Entity validation is a separate API based on Symfony's validator component. This can be availed when adding entities through other means(ex. programmatically creating an entity instance) than by using user facing forms. Entity validation will be the demonstrated in another future post.

Creating and loading entities

To create a new entity object, use the entity_create. NOTE that this only creates an entity object and does not persist it.

$node = entity_create('node', array( 'title' => 'New Article', 'body' => 'Article body', 'type' => 'article', ));

If you know what the entity class name is, you can use it directly.

$node = Node::create(array( 'title' => 'New Article', 'body' => 'Article body', 'type' => 'article', ));

Entities can be loaded using similar functions, entity_load and <class_name>::load.

$node = entity_load('node', $id); // same as above $node Node::load($id);

Entity save is done by calling the instance's save method.


Save works for both creating and updating an entity. An entity can be checked if it's being created for the first time using the isNew method.

use Drupal\node\Entity\Node; $data = file_get_contents(''); $file = file_save_data($data, 'public://druplicon.png', FILE_EXISTS_RENAME); $node = Node::create([ 'type' => 'article', 'title' => 'A new article', 'field_image' => [ 'target_id' => $file->id(), 'alt' => 'Drupal', 'title' => 'Drupal logo' ], ]); assert($node->isNew(), TRUE); $node->save(); assert($node->isNew(), FALSE);

entity permissions can be checked using the access method.

$node->access($op); // where $op is one of "view", "create", "update" or "delete" Reading and updating entities

Entity properties can be modified using the set method.

$node->set("title", "A newer title"); $node->save();

Reading and updating entity fields follows a similar pattern to Entity Metadata Wrappers in 7, albeit more object oriented. Fields can be read as follows:

use Drupal\node\Entity\Node; // text field $node = Node::load(4); $txt = $node->field_my_text->value; // entity reference $node = Node::load(3); $tags = $node->field_tags->referencedEntities(); // link field $uri = $node->field_my_link->uri; $title = $node->field_my_link->title; $options = $node->field_my_link->options;

The $tags contains all the term objects associated with that field.

Updating a text field is easy.

$node = Node::load(4); $node->field_my_text = "updated text"; $node->save();

To update a node and add a set of terms,

use Drupal\node\Entity\Node; use Drupal\taxonomy\Entity\Term; $node = Node::load(4); $term1 = Term::load(1); $term2 = Term::load(2); $node->field_tags->setValue([$term1, $term2]); $node->save();

Link fields can be updated as follows,

// specific attributes can be updated. $node = Node::load(4); $node->field_my_link->uri = ""; $node->save(); // the whole field can also be updated. $node = Node::load(4); $node->field_my_link = ["uri" => "", "title" => "My Blog", "options" => ["target" => "_blank"]]; $node->save(); Entity field query in D8

Entity field query has been essentially rewritten in Drupal 8. It helps fetching entities which match given criteria without writing any SQL queries. Here's a simple query to fetch all published nodes of type article.

$query = \Drupal::entityQuery('node'); $query->condition('status', 1); $query->condition('type', 'article'); $entity_ids = $query->execute();

The $query query object is chainable, just like entity field query and returns an object of type QueryInterface. It is possible to query fields.

$query = \Drupal::entityQuery('node') ->condition('status', 1) ->condition('', 'Chennai'); $nids = $query->execute();

We can give different comparison operators too.

$query = \Drupal::entityQuery('node') ->condition('status', 1) ->condition('field_my_link.uri', '', 'CONTAINS'); $nids = $query->execute();

You can specify a field delta value between the field name and column name, as in:

$query = \Drupal::entityQuery('node') ->condition('status', 1) ->condition('', 'Mumbai'); $nids = $query->execute();

will fetch all the nodes whose 2nd tag name is "Mumbai".

It is possible to specify OR conditions and chain them.

$query = \Drupal::entityQuery('node') ->condition('status', 1); $group = $query->orConditionGroup() ->condition('', 'Mumbai'); $nids = $query->condition($group)->execute();

fetches all nids which are either published or have "Mumbai" in tags.

These nids can be further processed after fully loading the entity objects using entity_load_multiple.

// ... $nids = $query->execute(); $nodes = entity_load_multiple('node', $nids); foeach($nodes as $node) { //do something }
Catégories: Elsewhere Default Search API Sorts Per View in Drupal 7

mar, 11/10/2016 - 08:46

It's been a while since I've written a post here (especially, Drupal-related). But today I have something interesting to share.

There's a module called Search API sorts ( that provides custom sorts and a global sort block for Search API. The module itself is ok, but ...

Read now

Catégories: Elsewhere

Palantir: Top 5 Takeaways From Dublin DrupalCon

mar, 11/10/2016 - 03:55
Top 5 Takeaways From Dublin DrupalCon brandt Mon, 10/10/2016 - 20:55 Alex Brandt Oct 11, 2016

Dublin DrupalCon: Community, Sessions, Guinness, and Toast.

In this post we will cover...
  • What we learned in Dublin

  • Some of our favorite events

  • Why we’ll be back next time

Stay connected with the latest news on web strategy, design, and development.

Sign up for our newsletter.

We’ve settled back into our routines, but we are still left with the warm afterglow of another DrupalCon. Palantir’s Tiffany Farriss, George DeMet, Ken Rickard, and Avi Schwab reflect on their time in Dublin and share their thoughts on what makes DrupalCon so special in our top 5 takeaways.

5.) The Drupal community is bright and ambitious.

  • Avi: I’ve been working as a FED on projects lately. This DrupalCon gave me a great opportunity to reinforce and grow my existing Twig knowledge, now that I have some real places to apply the skills. The trio of “Branch out of your comfort zone…”, “Drupal 8 Theming In Depth”, and “21 Things I Learned…” is enough to get anyone from zero to Twig hero in no time.
  • George: I was only at DrupalCon for a couple of days, but during that time I had a lot of great conversations with people in the community. I heard a lot of great ideas for how we can help make Drupal contribution more sustainable, and how we can make it easier for more people to engage with the project and the community in different ways.
  • Tif: Of late, I’ve been thinking about how Drupal can better communicate its community values and expectations at the organizational level (to and among the business ecosystem). Central to that is the question: what does it mean to be a good Drupal citizen whether you’re an individual, an organization or an end user of Drupal? I had some excellent conversations around that topic and am excited about the possibilities for recognizing all of the wonderful work that already happens within the community as a way to communicate and reinforce our community values.

4.) There’s always something to look forward to.

  • Avi: The Drupal Association team always works hard to put on a great event, but I feel like Dublin went more smoothly from a logistical standpoint than any DrupalCon I’ve been to. The venue staff assisted the volunteers at a phenomenal level, the venue itself was amazing, and the food was great.
  • Tif: I love reconnecting with old friends and making some new ones, and having thought-provoking conversations (especially with Kristof Van-Tomme, my friend and CEO of Pronovix).
  • Ken: DrupalCon is a great combination for me, in that I can always expect to run into old friends, and I am also guaranteed to meet new contributors. That makes it a special event.

3.) Yet, we’re always pleasantly surprised with what’s different.

  • George: Now that Drupal 8 has been out for some time and people are building sites with it, this DrupalCon felt more focused on the community. The new Being Human session track in particular had a lot of great content aimed at helping people learn how to contribute in a healthy way while also supporting others.
  • Avi: I’ve gone through some personal changes since NOLA, but for me Dublin felt much more like DrupalCons from our pre-D8 days, where developers dug into the hard problems and worked to share their solutions. It’s refreshing to be back in that seat both personally and as a community. D8 is moving along well and now has the confidence of most folks in the community, and we’re really putting it to work.
  • Tif: It’s remarkable how much the Drupal community has matured and expanded since my first DrupalCon Europe in Szeged in 2008.

2.) The sessions and events only reinforce how special the Drupal community is.

  • George: I very much appreciated Dries’ focus in his keynote on the core values and purpose ( of the Drupal project and community, which set a really great tone for the event. Being able to see and hear how Drupal has made a positive difference in the lives of people all over the world was particularly inspiring.
  • Avi: After a few years of doing more PM work and less development, it was great to come back to Con and be able to absorb so much incredible knowledge from such great people. I also really enjoyed the Tuesday night party on the Cill Airne — too often our socializing is overpowered by loud music and tight spaces, but having a night outside, with a good bar and good folks, but not so much screaming, was greatly appreciated.
  • Tif: I always enjoy the Driesnote. Dries’ expanded purpose for the project (that Drupal is as much about people and impact as it is about code) resonates with me and affirms that Drupal continues to be aligned with Palantir’s purpose and values.
  • Ken: I went to Tim Millwood's session on the Workflow Initiative. That's the Drupal 8 core project that includes moving Workbench Moderation into core as Content Moderation. In many ways, it's the culmination of work that we started at the end of the Drupal 6 development cycle, so it's very rewarding to see the progress being made today.

1.) It wouldn’t be DrupalCon without a few shenanigans.

  • Avi: At the boat party, upon learning that I was a Palantiri, an Irish admirer of his began expounding on Mr. Ken Rickard’s amazing, deep, Hollywood-like voice and how, despite Ken’s contextual configuration talk being incredibly interesting, just listening to the words come from Ken’s mouth made it that much better.
  • Tif: I got Angie (webchick) to try Guinness:
  • Ken: We shared an apartment with Avi’s family. Avi's daughter Calliope tried to put buttered toast into everyone's pockets at the breakfast table every single morning. (I guess to save for later.) Which led to the viral quote. "No, you can't put toast in my pockets. I don't have any pockets."

We want to make your project a success.

Let's Chat.
Catégories: Elsewhere

Nacho Digital: Assisting to Drupalcon Dublin 2016

mar, 11/10/2016 - 01:25
I had the opportunity to assist to Drupalcon Dublin 2016. Some insights and highlights on sessions I assisted on this Drupalcon.

Dublin is a lovely city, very international and The Convention Centre Dublin was an excellent location. Dries keynote was less enterprise oriented than others and helps to understand where he wants to take Drupal8. The most interesting thing for me is to see how the new life cycle of D8 roll-out is. There was more about D8 new development cycle on the session "Drupal 8's rapid innovation promises".

Catégories: Elsewhere

OSTraining: How to Set Up Dropdown Menus in Drupal 8

lun, 10/10/2016 - 23:46

A few years ago, we published a very popular post called "How to Create Dropdown Menus in Drupal".

That post covers many of the basic points that have not changed in Drupal 8, including these:

  • Many themes don't have dropdown menus built-in. That includes Drupal's core themes, such as Bartik.
  • It is best to choose a theme that does already have dropdowns available.
  • You need to go to Structure > Block layout and make sure your menu is placed in the correct block region.
  • You need to go to Structure > Menus and make sure your menus links are indented.  
Catégories: Elsewhere Top 5 (In My Opinion) Drupal Blogs for Agencies

lun, 10/10/2016 - 22:51

Drupal is open source sofware. Thousands of contributors help build it, but of similar importance is the marketing and education wing of the Drupal Community. Drupal Twitter accounts, Drupal podcasts, and today's topic: Drupal Blogs.

There are many, many blogs that are of importance to various aspects of Drupaling. My criteria are really just my own non-authoritative views. Please feel free to Tweet me, Facebook me, or throw in your own ideas in the comments below!

Catégories: Elsewhere

OSTraining: How to Use the Breeze Theme in Drupal 8

lun, 10/10/2016 - 22:33

Breeze is a design that we make available as a Joomla template and a WordPress theme. Now, finally, it's available as a Drupal 8 theme!

We use Breeze as an example in many of our video classes and books.

By using the same design, it makes it easy for OSTraining members to see differences and similarities between the various platforms.

Breeze is fully responsive and uses the Bootstrap framework.

Catégories: Elsewhere

Drupalize.Me: Catching the Spirit of Open Hardware

lun, 10/10/2016 - 21:52

Drupalize.Me trainer Amber Matz attended this year's Open Hardware Summit in Portland and reports back on what she took away from the event.

Catégories: Elsewhere

The Sego Blog: Testing Software - A Quick Overview

lun, 10/10/2016 - 21:28
10/10/2016Testing Software - A Quick Overview

Software is an ever changing interweaving of collections of ideas expressed in code to solve various problems. In today's day an age the problems that software is solving is expanding at an ever increasing rate.

Catégories: Elsewhere

Palantir:'s Guide to Digital Governance: Ownership

lun, 10/10/2016 - 19:37's Guide to Digital Governance: Ownership's Guide to Digital Governance brandt Mon, 10/10/2016 - 12:37 Scott DiPerna Oct 10, 2016

This is the third installment of’s Guide to Digital Governance, a comprehensive guide intended to help get you started when developing a governance plan for your institution’s digital communications.

In this post we will cover...
  • Why ownership is the cornerstone of good governance
  • What ownership entails
  • How to manage instances of shared or collaborative ownership 

Stay connected with the latest news on web strategy, design, and development.

Sign up for our newsletter.

Now that we have defined all of the digital properties and platforms that we will consider for our Governance Plan, we next need to establish who “owns,” or who will ultimately be responsible for the care, maintenance, and accuracy, of these properties.

Ownership is the cornerstone of good governance. In fact, some may think of ownership as being synonymous with governance. From my experience, I believe that good governance of any digital communications platform involves more than simply defining who is responsible for each piece.

In most organizations, many people are using, sharing, and collaborating on the same systems together. The processes and interactions between those users needs to be defined as well, however we have to identify the people before the process. Defining ownership first is the foundation on which we can begin to define the more complex relationships that exist in a shared system.

Ownership is the cornerstone of good governance…. Defining ownership first is the foundation on which we can begin to define the more complex relationships that exist in a shared system.

I should make one other important distinction between maintenance of the system and the maintenance of the presentation of content, as it relates to ownership.

Since this Governance Plan is considering the guidelines for digital communications, it is explicitly NOT considering the roles, policies, and procedures for the maintenance of the infrastructure that supports the properties and platforms we are considering for the plan.

In other words, when we define who has ownership of the public website or the intranet, we are considering only the content and its presentation – not the underlying software and hardware that makes the website or intranet functional.

Perhaps this is obvious, but it is an important distinction to make for those who are less familiar with modern web technology, who may not fully understand where the functions of an IT department end and an Online Marketing or Communications department begin.

With those caveats out of the way, we can now begin to define who is responsible for each of the properties and platforms we listed earlier.

Obviously, I can’t tell you who is or who should be responsible for each piece within your organization – that must be defined by how your work responsibilities are distributed across the institution – but I can describe some general principles for defining ownership that should help.

  • Ownership of your organization’s web presences ultimately should reside at the very top, with levels of responsibility being delegated down the hierarchy of the institution.
  • The top leadership of an organization should be responsible ultimately for the accuracy and maintenance of the content contained within the parts of the properties they own.
  • Every website, subsite, microsite, department site; every section and sub-section; every page, aggregated listing, and piece of content all the way down to each video, photo, paragraph, headline, and caption should fall within the ownership of someone at the top.
  • Responsibility for daily oversight and hands-on maintenance of those properties then may be delegated to staff within the owner’s groups, offices, or areas of responsibility.
  • Owners should have sufficiently trained staff who have the authority and capacity to make changes, corrections, and updates to the content as needed in a timely manner, such that inaccurate and/or outdated content does not remain on the property for an unreasonable period of time.

In short, ownership has two essential aspects:

  1. top-level responsibility for the accuracy and efficacy of the content, and
  2. hands-on responsibility for the creation and maintenance of the content.

Both are essential and required for good governance, and very likely may be responsibilities held by one person, split between two, or shared among a group.

Shared Ownership / Responsibility

There may be instances in which shared ownership may be necessary. I generally recommend against doing that as it puts at risk a clear chain of accountability. If two people are responsible, it’s easy for both to think the other person is handling it.

If some form of shared ownership is required, consider having one person be the primary owner, who is supported by a secondary owner when needed; or that a primary owner is a decision-maker, but secondary owner(s) are consulted or informed of issues and pending decisions.

If “equally” shared ownership or responsibility is required, try defining the exact responsibilities that are to be owned and dividing them logically between the two. Perhaps there is a logical separation of pages or sections. Or maybe one person is responsible for copy, while another is responsible for images.

Shared ownership is less-than-ideal, but there can be reasonable ways to make it work, provided you do not create any structural gaps in authority, unwittingly.


There are many instances in digital communications where groups of people collaborate to produce content. This is most common with organizational news and events, publications, blogs, social media, etc.

For example, if there is a single person who can be ultimately responsible for all blog content created by various content creators, great! If blog content is created by subject-matter experts from different fields or different parts of the organization, perhaps it is possible to invest ownership in one person for all of the blog posts within a specific subject for each field.

If you are in a situation similar to what I described above, where you have multiple, subject-specific owners, it will probably make sense for all of the owners to meet regularly to agree on standards and best-practices for all contributors to follow.

In the end, the fundamental concept here is to place responsibility for all content and every part of a digital property with the people who are in the best position to manage it and ensure its quality, accuracy, pertinence, and value.


This post is part of a larger series of posts, which make up a Guide to Digital Governance Planning. The sections follow a specific order intended to help you start at a high-level of thinking and then focus on greater and greater levels of detail. The sections of the guide are as follows:

  1. Starting at the 10,000ft View – Define the digital ecosystem your governance planning will encompass.
  2. Properties and Platforms – Define all the sites, applications and tools that live in your digital ecosystem.
  3. Ownership – Consider who ultimately owns and is responsible for each site, application and tool.
  4. Intended Use – Establish the fundamental purpose for the use of each site, application and tool.
  5. Roles and Permissions – Define who should be able to do what in each system.
  6. Content – Understand how ownership and permissions should apply to content.
  7. Organization – Establish how the content in your digital properties should be organized and structured.
  8. URLs – Define how URL patterns should be structured in your websites.
  9. Design – Determine who owns and is responsible for the many aspects design plays in digital communications and properties.
  10. Personal Websites – Consider the relationship your organization should have with personal websites of members of your organization.
  11. Private Websites, Intranets and Portals – Determine the policies that should govern site which are not available to the public.
  12. Web-Based Applications – Consider use and ownership of web-based tools and applications.
  13. E-Commerce – Determine the role of e-commerce in your website.
  14. Broadcast Email – Establish guidelines for the use of broadcast email to constituents and customers.
  15. Social Media – Set standards for the establishment and use of social media tools within the organization.
  16. Digital Communications Governance – Keep the guidelines you create updated and relevant.

We want to make your project a success.

Let's Chat.
Catégories: Elsewhere

Matt Glaman: Managing Your Drupal Project with Composer

lun, 10/10/2016 - 15:15

Drupal Commerce was started without writing any Drupal code. Our libraries set Drupal Commerce off the island before Drupal was able to support using third party library not provided by core.

Drupal now ships without third party libraries committed, fully using Composer for managing outside dependencies. However, that does not mean the community and core developers have everything figured out, quite yet.

YNACP: Yet Another Composer Post. Yes. Because as a co-maintainer of Drupal Commerce we're experiencing quite a lot of issue queue frustration. I also want to make the case of "let's make life eaiser" for working with Drupal. As you read compare the manual sans-Composer process for local development and remote deployment versus the Composer flows.

Before we begin

We're going to be discussing Composer. There's specific terminologies I'll cover first.

  • composer.json: defines metadata about the project and dependencies for the project.
  • composer.lock: metadata file containing computed information about dependencies and expected install state.
  • composer install: downloads and installs dependencies, also builds the class autoloader. If a .lock file is available it will install based off of the metadata. Otherwise it will calculated and resolve the download information for dependencies.
  • composer update: updates defined dependencies and rebuilds the lock file.
  • composer require: adds a new dependency, updates the JSON and .lock file.
  • composer remove: removes a dependency, updates the JSON and .lock file.

All Composer commands need to run in the same directory as your composer.json file.

Installing Drupal

There are multiple ways to install Drupal. This article focuses on working with Composer, for general installation help review the official documentation at

Install from packaged archive has a packaging system which provides zip and tar archives. These archives come with all third party dependencies downloaded.

You download the archive, extract the contents and have an installable Drupal instance. The extracted contents will contain the vendor directory and a composer.lock file.

Install via Composer template

A community initiative was started to provide a Composer optimized project installation for Drupal. The  project provided a version of Drupal core which could be installed via Composer and a mirror of projects via a Composer endpoint (This has been deprecated in favor of the endpoint).

To get started you run the create-project command. 

composer create-project drupal-composer/drupal-project:8.x-dev some-dir --stability dev --no-interaction

This will create some-dir folder which holds the vendor directory and a web root directory (Drupal.) This will allow you to install Drupal within a subdirectory of the project, which is a common application structure.

This also keeps your third party libraries out of access from your web server.

Review the repository for documentation on how to use the project, including adding and updating core/projects:

Adding dependencies to Drupal Without Composer

Modules, themes, and profiles are added to Drupal my placing them in a specific directory. This can be done by visiting, downloading the packaged archive and extracting it to the proper location.

There's a problem with this process: it's manual and does not ensure any of the project's dependencies were downloaded. Luckily Composer is a package and dependency manager!

With Composer

To add a dependency we use the composer require command. This will mark the dependency, download any of its own. 

Note if you did not use project base: Currently there is no out of the box way to add projects to a standard Drupal installation. You will need to run a command to the endpoint.

composer config repositories.drupal composer

Let's use the Panels module as an example. Running the following command would add it to your Drupal project.

composer require drupal/panels

This will install the latest stable version of the Paragraphs version. If you inspect your composer.json file you should see something like the following

"require": { "drupal/panels": "3.0-beta4", }

One of the key components is the version specification. This tells Composer what version it can install, and how it can update.

  • 3.0 will be considered a specific version and never update.
  • ~3.0 will consider any patch version as a possible installation option, such as new betas, RCs.
  • ~3 will allow any minor releases to be considered for install or update.
  • ^3.0 will match anything under the major release — allowing any minor or patch release.

You can specify version constraints when adding a dependency as well. This way you can define of you will allow minor or patch updates when updating.

composer require drupal/panels:~3.0

This will allow versions 3.0-beta5,3.0-rc1, 3.0 to be valid update versions.

Know what! The same versioning patterns exist in NPM and other package managers.

Updating dependencies Without Composer

As stated with installing dependencies, it could be done manually. But this requires knowing if any additional dependencies need to be updated. In fact, this is becoming a common issue in the issue queues.

With Composer

Again, this is where Composer is utilized and simplifies package management.

Going from our previous example, let's say that Paragraphs has a new patch release. We want to update it. We would run

composer update drupal/panels --with-dependencies

This will update our Drupal project and any of its dependencies. Why is this important? What if Paragraphs required the newest version of Entity Reference Revisions for a critical fix? Without a package manager, we would have not known or possibly updated.

Why we need --with-dependencies

When Composer updates a dependency, it does not automatically update its dependencies. Why? No idea, apparently the maintainers do not believe it should.

Updating Drupal core Without the Composer template

If you installed Drupal through the normal process, via an extracted archive, you have to manually update in the same fashion. You will need to remove all files provided by Drupal core — *including your possibly modified composer.json file*.

Rightly so, you can move your modified .htaccess, composer.json, or robots.txt and move them back. However, you’ll need to make sure your composer.json matches the current Drupal core’s requirements and run composer update.

That’s difficult.

The official documentation:

Updating Drupal core via the Composer template

If you have setup Drupal with the Composer template or any Composer based workflow, all you need to do is run the following command (assuming you’ve tagged the drupal/core dependency as ^8.x.x or ~8, ~8.1, ~8.2)

composer update drupal/core --with-dependencies

This will update Drupal core and its files alongside the drupal-composer/drupal-scaffold project.

Using patches with Composer

I have been a fan of using build tools with Drupal, specifically  using . However, when I first used Composer I was concerned on how to use patches or pull requests not yet merged with the project — without maintaining some kind of fork.

 create the   project. This will apply patches to your dependencies. The project’s README fully documents its use, so I’ll cover it quickly here.

Patches are stored in a patches portion of the extra schema of the JSON file.

"extra": { "patches": { "drupal/commerce”: { "#2805625: Add a new service to manage the product variation rendering": "" } } }

This patches Drupal Commerce with a specific patch. 

Using GitHub PRs as a patch

Patches are great, as they let you use uncommitted functionality immediately. A problem can arise when you need code from a GitHub pull request (or so it seems.) For instance, Drupal Commerce is developed on GitHub since DrupalCI doesn’t support Composer and contributed projects yet.

Luckily we can take the PR for the issue used in the example and add .patch to it to retrieve a patch file:

We could then update our composer.json to use the pull request’s patch URL and always have up to date versions o the patch.

"extra": { "patches": { "drupal/commerce”: { "#2805625: Add a new service to manage the product variation rendering": "" } } }
Catégories: Elsewhere

Pantheon Blog: Turn on Twig Debug Mode in Drupal 8 on Pantheon

lun, 10/10/2016 - 15:00
When working on Drupal 8 theming, it is very helpful to have Twig debug mode on. Debug mode will cause twig to emit a lot of interesting information about which template generated each part of the page. The instructions for enabling debug mode can be found within the comments of the file, among other sources. In short, all you need is the following in your services.yml file:  
Catégories: Elsewhere

Paul Johnson: Help Dries crowdsource Drupal 8 success stories

lun, 10/10/2016 - 11:14

In little over a month Drupal 8 will be one year old. To mark this momentous occasion Dries Buytaert, Drupal’s founder, will champion noteworthy web sites and applications powered by Drupal 8.

Have you launched a Drupal 8 web site or application this year? Dries would like to hear from you. We’ve prepared a short web form so you can tell him your Drupal 8 success story.

Please spread the word

To reach the widest potential audience and capture the very best examples I encourage your to share this blog post with colleagues, peers, clients. Please email, share on social media, speak to your clients.

Beyond the Drupal shops developing applications our objective is to attract submissions from end users using Drupal 8. If you represent an organisation, enterprise, SME, startup, manufacturer, government department (and more) using Drupal 8 we want to hear from you.

So tell the world, complete the short form and help us celebrate Drupal 8.

Deadline for submissions is November 11th.

Catégories: Elsewhere

Enzolutions: A week in Paris

lun, 10/10/2016 - 02:00

Last week I had the opportunity of visit Paris, France for a week as para of my tour Around the Drupal world in 140+ days.

Sadly for me, I got a #drupalflu in Drupal Con, Dublin; So I wasn't in the best shape to enjoy the city.

I want to say thank you to Sebastien Lissarrague and his family for allowing me to stay with them in their home.

During my visit, I had the opportunity to participate in the local Drupal Meetup of Paris community.

Also, I visited some companies like Koriolis, Sensio Labs and

At Koriolis I have the opportunity to show the owner and developers the Drupal Console project to accelerate the Drupal 8 adoption in their projects.

During my visit to Sensio Labs I had a session with part the Symfony Core development team, to show them how we have been using the Symfony Console in Drupal Console project.

During my visit at I learn I little bit how they enable to their Drupal 8 user the usage of Drupal Console project. Next week I will write an articule about that.

About the city, I think anything that I could say about Paris will be nothing compare how beautiful it's; I just could recommend you to visit three mandatory places in you visit.

Eiffel Tower

Louvre Museum


Airplane Distance (Kilometers) Dublin , Ireland → Paris, France → San Jose, Costa Rica 9.957 Previously 96,604 Total 106.561 Walking Distance (steps) Dublin 116.133 Previously 1.780.955 Total 1.897.088 Train Distance (Kilometers) Today 0 Previously 528 Total 528 Bus/Car Distance (Kilometers) Today 0 Previously 2.944 Total 2.944
Catégories: Elsewhere

Steve Purkiss: Leapfrog the Drupal Learning Curve & Architect the Perfect Solution in 3 Simple Steps

dim, 09/10/2016 - 15:06
Leapfrog the Drupal Learning Curve & Architect the Perfect Solution in 3 Simple Steps Steve Purkiss Sun, 10/09/2016 - 14:06

"Drupal has a steep learning curve" is something I hear time and again, however I feel this is a misguided perception and something we need to work towards changing - especially now focus is on the adoption journey. Learning how to 'Drupal' is actually incredibly easy - the trick is to understand exactly what Drupal is and how to mould it to your needs - this is what I'm going to show you how to do in three simple steps.

Step 1: Discover what Drupal doesn't know

This is by far the most important step of the process, hence why I go into much further detail than the other two - skim if you so wish but I assure you the story is there for a reason!

We've been here before

As of writing, Drupal has been around for 15 years and has solved many problems associated with building a wide range of web sites and applications, embedding this knowledge in either the core Drupal distribution or one of the 35,000+ modules available on the site. Drupal's decision to only provide backwards-compatibility for content and not functionality means this functionality has had the ability to improve over time and make the most of innovation in technology, for example the recent big jump from mostly procedural programming to object-oriented.

A note about the jump from procedural to object orientation

This latest jump was a big one - Drupal was developed before object orientation was available in PHP (the language Drupal is written in), and so developed its own system of 'hooks'. You use hooks to interact with Drupal core to override functionality in order to make Drupal do what you want it to do for you. You can think of hooks like the ones on a coat stand - the trouble here was as different modules and themes overrode hooks, like an overloaded coat stand with many different coats on each hook, it became increasingly harder to work out what hook was changing what and when in the process it was changing it.

There are still hooks in Drupal 8, but these may disappear in future versions of Drupal as the migration to object-orientation continues. An added benefit is more backwards compatibility than before for future versions, so the change between versions 8 and 9 shouldn't be as pronounced as the change from 7 to 8 as we don't have to perform again such a big move as changing the fundamental way the entire code works. I believe there's plans to support backwards compatibility over two major versions from now on, so 9 will be backwards compatible with 8, 10 with 9, but not 10 with 8 - YMMV, etc.!

Knowledge carried throughout generations Courtesy @sgrame:

The key point to understand here is what Drupal brings along with it as it progresses from version to version. Whilst the underlying code may change in order to improve and make the most of the latest innovation in programming languages, the knowledge, experience, and best practices gained and shared from its deployment to millions of sites is maintained in the API and module layer. It is unlikely what you are trying to build is unknown to Drupal in some way or another, it has dealt with everything from simple brochureware sites which look the same to everyone to sites such as where everyone who visits sees a personalised version of the site. As I often like to quip, I've never been asked for Rocket Science and even if I was, NASA uses Drupal ;)

This development process is fundamentally different to how other systems on the market work, with many other popular ones focusing on ease of use at the expense of progressive innovation, and is why you see Drupal have a larger share of the market on sites with complex requirements. The adoption of semantic versioning means there are now minor releases which include bug fixes along with both new and experimental functionality, and a new version of Drupal is released every six months. We are already up to version 8.2, and with current focus on 'outside-in' it is becoming easier for people used to systems other than Drupal - or none at all - to use Drupal, however it is not easy to visualise your end goal and know how to get there, or there is a module or modules already out there which could help you along the way to achieve your desired outcome without having to code anew.

To help overcome this out-of-the-box experience there are many ongoing initiatives to provide default content, make module discovery easier, build focused distributions, etc. but they will all take time. There is a way to approach development which means you don't end up going down the wrong path or developing functionality which already exists, it is to discover what exactly it is you want to build Drupal doesn't already know about and focus only on functionality required which is specific to your situation and no other.

What makes you different?

I recently provided the architecture for a high-profile specialist travel site - a six-figure project which unfortunately as with many projects I'm involved in I'm under non-disclosure agreements, doesn't mean I can't talk about the approach I took though, and this is a particularly good example.

As they were merging a number of existing systems I could've just looked at the existing data, however there is nothing to say those systems were designed well and we don't want to fall into the trap which I see many times where people re-create bad systems. Drupal is a very flexible system, many others require you to fit your data into how they work. So by asking the client to explain how their organisation worked and what was different about themselves as opposed to other similar organisations I discovered there were six distinct areas:

  1. Activity - their offerings were split into distinct activity types
  2. Resorts - they operate their own resorts
  3. Accommodation - each resort contains one or more different types of accommodation
  4. Region - the organisation had their own definition of a region, some spanning more than one country
  5. Departure Gateways - they fly out from a limited number of airports
  6. Arrival Gateways - resorts are serviced by one or more local airports

Everything else on the system was something Drupal would have dealt with before in one way or another - number of rooms, features of accommodation and resorts, and so on. These could easily be achieved using fields, taxonomy terms, and everything else Drupal provides out-of-the-box.

Design with the future in mind

I also took the time to observe the operations of the organisation as I walked around their office. I noticed the majority of people were answering calls, so I asked what exactly they had to deal with on the phone - people wanting more information on particular deals, issues with accommodation crop up from time to time - all the usual a travel company would have to deal with but more so here as they owned and operated the resorts. The point here is there's a whole wealth of user requirements contained here which although weren't in the scope of this current phase of development, by having them in mind when designing a system it should make it easier to extend to accommodate their needs as and when budgets and time allow.

If you only design a system for buying via the web you may find when a member of staff is trying to help a customer on the phone the process is unnecessarily complicated, or extending the system to cope with this new use case is particularly hard if you haven't taken this scenario into consideration to start with. Not to say it can't be done, and is easier to adapt now Drupal 8 is more object-oriented, but it's always good to have the future in mind - some of this you will be able to see, some you'll need to extract from key stakeholders, you'll be surprised sometimes with what you find out which you'll then be glad you asked. Here I knew the latest version of Commerce for Drupal 8 has the ability to set up different buying processes so it would be able to cope easily with phone orders if it were ever a requirement.

Design for different rates of change

It is feasible I could've used Drupal's built-in content types to build the system, but this would've limited the system to this particular use-case, making it harder to cope with different buying processes like the one mentioned above. It also did not sound right - an "airport" isn't a content type, it's an entity. It has content - facilities etc. but the thing itself is an entity. So I created six custom entities, and it sounded much better especially when you went to create a view - "list accommodation in resort". By simply teaching Drupal what was different about this particular organisation, we extended Drupal's "knowledge" and leveraged everything else it had to offer to deal with the functionality it does know about, like date ranges, durations, prices, and so on.

Whilst the front-end of a website may go through many enhancements and refreshes, the core business model of an organisation - especially one such as this which is well-established and operated for many years, does not change as much, if at all. In this example they mentioned they may add new activities, and they offered packages which covered more than one activity but their current system couldn't cope with this, which is why activity was treated as a separate entity.

By encoding the core business model of an organisation as high up the chain as you can with Drupal, you end up with a far more flexible system to cope with the faster-moving changes such as views to list out particular promotions, plus ensure longevity by enabling future development of those core parts of the system. I also wanted to make it a little more difficult for them to change any of this as this is critical to the operation of the organisation, so if changes were needed they would have to go through a harder process than changing a view, but there should be a good reason for any changes needed to the core business model so happy with the custom entity approach taken.

Seeing the wood for the trees

It's not only when architecting systems you need to take this approach to Drupal - another small example is when I helped someone out a couple of weeks back who was having problems getting a product listing displaying exactly how he wanted it to using Drupal 7. He had tried a number of different types of views (Drupal's user interface for manipulating database queries) but none of them would do what he wanted, which was to provide a faceted search facility, listing the results grouped by category. You'll see this functionality on most e-commerce sites these days, for example click on Televisions and it'll provide you a list grouped by manufacturer, or perhaps size - the point is it's not Rocket Science, it's been done before, it shouldn't be hard to do, so something else was causing the issue here. Sometimes it's hard to see the wood for the trees, so you need to take a step back and take a logical think about the situation.

We delved into the problem and through a series of questions worked out the thing he wanted to do which was different was he wanted a number of fields to be displayed at the group level - the name of the group, an image, and a description. None of the various combinations of views he had tried provided the ability to display more than one field, and rewriting the field output in the view did not apply to group by fields. Although there are a number of ways to achieve this from different parts of Drupal, I implemented the simplest way I knew which was to output the taxonomy term ID as the field to group by, and overwrite the template in order to load the details of the taxonomy term so we could easily grab the fields we needed.

I can almost hear others screaming at me to use display modes or some other functionality available as I'm sure there's other ways this can be achieved which are 'better', however as I spend most of my time dealing with back-end issues and not front-end and as we only had limited time and budget to solve the issue, this worked as a solution for the situation at hand so we went with it.

The take-away here is to go with what solves the majority of the problem, the thing you see or can imagine seeing other people using, and focus on what is specific to your needs. Faceted searching, listing products, grouping products by category - all standard functionality and should be simple to achieve in Drupal. Outputting multiple fields for a grouping category title? Not so much.

Step 2: Modularise Your Requirements

Drupal is a modular system, so you need to modularise your requirements by breaking them down as much as you can. Yes, what you're wanting to do has more than likely been done before, but maybe not in your exact combination - if it has then cool, you don't have to do anything as there's already a module/distribution/theme/etc. out there for you! Many times there isn't though, and every organisation has their differences, so you need to break your requirements down in order to deal with them successfully.

In our example above where we have a faceted search listing out products grouped by category, by splitting it up into "faceted search", "list products", and "group a view by category" we are going to get much better results when searching for answers than if we search for "faceted search grouped by taxonomy", which is more specific to our use-case than the majority of uses. You're more likely to end up with someone else's specific situation who also has had issues solving it and may forever skip past the actual solutions you are looking for. Be as generic as you can with generic requirements, then be as specific as you can with the ones you identified as particular to your situation, in this example we could've searched for "override view field output" and it would've brought us results for how to override using views templates, which is how we solved the problem there.

Once you align your vocabulary more closely with Drupal's generic, modular functionality, you'll enjoy much more success with your searches - it takes a little logical thought and remembering it's not Rocket Science! Far too many times I've seen sites where little or no research has been done as to what's already out there and people have essentially forked Drupal, creating their own monster significantly increasing the amount of work it takes to maintain and extend the site when it's not necessary.

Every line of code you produce is technical debt - even if you decide not to use the module you find which does what you need or part of what you need, you can study the tried-and-tested code, copy it into your module and use as a base for your work. A good example is detailed in my previous blog post about creating a Drupal Console command where I found code which did some of what I wanted so I based my work on it because I knew what had already been written worked and there was no point in me writing it again.

Step 3: Only Develop Specifics, Share Where Possible & Grow Drupal!

If you find you have to develop specific functionality for your site, have a think about if it would be of use to anyone else, or whether you're going to be the only person in the world doing this specific thing. As mentioned above, every line of code you write is something you or your client is going to need to support your/themselves. If you publish a module to the module repository you not only have the possibility of others sharing the maintenance of the code but they may also provide enhancements, and stable module releases are covered by the security advisory policy which doesn't mean they secure your module, but if an exploit is found and reported the 40+ strong Drupal Security Team are there to help. Even if you just create a sandbox project you may discover others find the code useful and provide feedback.

If you're working for a client and they are worried about sharing code, or you're the end client and worry about losing competitive advantage, remember software is easy to copy and it's the rest of what you do which sets you apart from your competition. In our travel example above, it's the resorts they own which provide the value to the customer, not the software code which enables people to book a stay in them.

Currently there is a lack of sharing code on the implementation side - there's a lot of factors for this including competition between suppliers, infrastructure ease of use or lack thereof, and a general lack of co-operation in some industries. The result is many people end up writing similar code when they could be starting at a higher level, collaborating with industry peers, sharing development and maintenance costs, and going towards pushing the Drupal project forward. The more we can do out-of-the-box, the better it gets for all concerned as projects cost less, launch quicker, and we can focus on code which isn't out there already which is specific to the organisation itself, so spending the development budget on genuinely useful code instead of code which could be freely available to us in the first instance. Remembering how much we started with for free may be of help creating impetus to share any code we develop.

Although my site here doesn't do much functionally I haven't had to write a single line of code to be able to use the web to communicate my message to you, something I believe is amazeballs! Drupal can and does provide code for generic websites, however it's up to industries to collaborate and build their modules and distributions, and/or some enterprising people to build code and distributions for them, as we see in some areas such as e-learning and government.

I'm honestly shocked when I hear projects haven't contributed any code back, especially larger projects lasting longer than a year - I worry about how much technical debt they've incurred and feel sorry they haven't helped Drupal to grow, it's only by contributing code the Drupal product itself has reached this amazing level of innovation. I understand there are reasons, however I never see it as "contribution", more akin to riding a bicycle - I can stare at it as long as I like but until I push my feet down on the pedal it's not going to take me anywhere, I don't call it "contribution", just how the bike works!

I hope this post has been of help, do feel free to comment below, or get in touch with me if I can be of help with anything specific.

Happy Drupaling!

Main Drupal 8 Learning Curve image courtesy @sgrame. Other images attributed inline, the rest are public domain, found on pixabay.

Category Tutorials Tags Add new comment
Catégories: Elsewhere

Rob Bayliss: A Scalable Pattern for Displaying Simple Remote Data in Drupal 8

sam, 08/10/2016 - 22:19

Let's imagine a scenario where you need to display some data from a remote service to the user. Instagram, for example. You want to grab the 6 most recent posts, pass them through some theming, then output them into a block. How would you go about doing that? In Drupal 7, one possible approach might look like this.

Catégories: Elsewhere

Phponwebsites: Disable future dates in date popup - Drupal 7

ven, 07/10/2016 - 20:15
     This blog describes how to disable future dates in the Drupal 7. One of the features in the date  module is displayed the date in the pop-up.

The use case is if you want to display only past & current date rather than all the dates in the pop-up, then how to do it in Drupal 7. Actually, the date module provides API called hook_date_popup_process_alter to alter the date_popup widget elements.

Example for disabling future dates in Drupal 7:
   For instance, I am going to disable future dates in the article content type. Please consider the following code snippet.

 * Implement hook_date_popup_process_alter().
function phponwebsites_date_popup_process_alter(&$element, &$form_state, &$context) {

  if ($form_state['complete form']['#form_id'] == 'article_node_form' && $element['#field']['field_name'] == 'field_date') {
    $max = 0;

  if (isset($element['#datepicker_options']['maxDate'])) {
    $max = $element['#datepicker_options']['maxDate'];

  if (isset($max)) {
    $element['#datepicker_options'] = array(
      'maxDate' => "+$max D",
  $element['date'] = date_popup_process_date_part($element);
   I've disabled the dates only if the form is article & the field name is field_date. After added the above code to your module, you could see disabled future dates in the date pop up. It looks like the below image:

   Now I've hope you know how to disable the future dates at the date module in Drupal 7.

Related articles:
Remove speical characters from URL alias using pathauto module in Drupal 7
Add new menu item into already created menu in Drupal 7
Add class into menu item in Drupal 7
Create menu tab programmatically in Drupal 7
Add custom fields to search api index in Drupal 7
Clear views cache when insert, update and delete a node in Drupal 7
Create a page without header and footer in Drupal 7
Login using both email and username in Drupal 7
Catégories: Elsewhere

FFW Agency: The ABC's of Drupal: Article, Base Theme, Content

ven, 07/10/2016 - 19:51
The ABC's of Drupal: Article, Base Theme, Content Ray Saltini Fri, 10/07/2016 - 17:51

For anyone who's ever looked up a definition of a Drupal term and been left wondering what it all means, here are some practical real world explanations you can use to navigate the Drupalverse. Watch this space and use comments to send us your feedback and requests.

Article: While newspapers and magazines have articles, the term 'Article' in Drupal denotes something more specific. An Article is one of two content types that have come preconfigured with Drupal since Drupal 7. As a content type, an Article is made up of Title, Body, Image, and Tag fields.

All content types are part of Drupal’s core fields system and can be customized with different fields. The output of an Article is usually configured to appear either as a teaser or a full version, which is sometimes referred to as the default or as a node. Unless your home page has been customized, article teasers will appear on your home page as a river of news with older items sinking to the bottom. This makes it easy to begin building a site with time sensitive content such as a blog. Most home pages are even customized so that selecting the ‘promote to front page’ toggle has no visible effect. If this happens to you, don't worry! Your site is not broken. It's just Articles at work.

Base Theme and Themes: A theme in Drupal is a collection of CSS, template files, and javascript that helps determine the look and feel of a Drupal website or application.

A theme typically defines different regions in code which can then be used to place various elements via configuration in a user interface. Base Themes are a common way of standardizing and optimizing Drupal front end development. They enable developers to focus on CSS styling and javascript without having to manipulate Drupal internals. A variety of different methods can be used to essentially copy and customize the styling of a base theme.

Among the advantages of using a base theme are less risk from custom coding and updates often provided by base theme maintainers that enable greater functionality or enhanced security. Some base themes make it easier to build a theme based on a popular published library, such as Twitter Bootstrap. Organizations often develop their own themes and use them internally as a base theme for different projects.

As a note: base themes typically only work with a given Drupal major version. For example, Drupal 7 theme will not work with a Drupal 6 or 8 theme. Major changes have taken place in theme development between Drupal 7 and the current version Drupal 8. But don't worry! Drupal 8 includes a new templating engine called Twig. Twig is a Symfony framework component that eliminates the necessity to write preprocess functions and other code. Generally, that's often not part of a front-end developers skill set, so Twig makes it easier than ever for front-end developers to create responsive and other advanced designs.

Content: The word "Content" can mean different things to different people, especially when Drupal is involved. When speaking to a Drupalist who’s been around for many versions, it may mean only something created by Drupal’s core node module or anything that has been created via a content type form by clicking on an ‘add content’ link. Others will use it to represent anything presented on a webpage.

Depending on who you are talking to and what their role is, this can lead to confusing discussions or debates about whether something is Content or something else. The best way to deal with this on a project is to understand the other definitions and always ask the speaker to please define what Content means to them. 

For example, Content can be structured or unstructured. (The preferred best practice in Drupal is always structured content validated at the field level.) Comments, images, and file attachments may also be considered Content. Images and file attachments are often referred to as assets because they are stored in a file system. In Drupal 8 you are more likely to hear this kind of Content referred to as an Entity, which thankfully simplifies the conversation.

Tagged with Comments
Catégories: Elsewhere

Acquia Developer Center Blog: How Indigo Herbs runs its whole business on Drupal!

ven, 07/10/2016 - 19:15

In December 2015, I sat down with Michael Hanby-Director-and Tawney Bartlett-Website Coordinator-from Indigo Herbs in Glastonbury, England and dug into their history with Drupal and just how much of their business they run with it. Tawney is really inspiring: she learned Drupal and its component and supporting technologies--Git, Javascript, PHP, and much more--on the job at Indigo. She says she's fallen in love with Drupal. I say she's become a Drupalist to reckon with and should be a role model for others. Open source, #ftw!

This interview, particularly the last third, is full of some great "Why Drupal?" soundbites from a sensible business perspective. Well worth listening to! A full transcript follows below as well.

"If you are a small business and you want to develop a tech competency, I don’t know why you’ll do anything but Drupal because apart from the fact that it’s free, you’ve got this huge community that’s not just willing to give you the answers but wants to help you. What I think is one of the most awesome things about open source is that by asking a question, you are contributing to the project. It’s so cool. Just by asking the question that no one’s asked, you are contributing to the documentation that’s going to help someone else, it’s such a virtuous cycle." - Michael Hanby, Indigo Herbs

In Drupal "everyone is so accepting and everyone’s so willing to teach people and help people grow within the community. It stands out from the crowd, it’s just a fascinating thing that everyone loves technology and everyone does it because they want to make this amazing thing and if something goes wrong, no one judges them for it. Everyone tries to help to get it working and to me that just sounds absolutely amazing, it’s missing from the world I think. The community of Drupal, if that was applied to everything, then it would be such a better place." - Tawny Bartlett, Indigo Herbs

Mentioned during the conversation
  • Indigo Herbs, according to Michael "Indigo Herbs is a manufacturer of natural health products. We make beautiful things that will make your life better. Come and check out and discover the natural lifestyle that we offer."
  • Drupal Somerset
  • Paragraphs module
  • Heath Robinson, according to Wikipedia, "William Heath Robinson (31 May 1872 – 13 September 1944) was an English cartoonist and illustrator best known for drawings of ridiculously complicated machines for achieving simple objectives."
Conversation video

In the Indigo Herbs Common Room ... full transcription starts here.

jam: We established that everybody – that the whole couch is fair game, right?

Tawny Bartlett: Yes.

Michael Hanby: Yes, it does seem to be.

jam: It feels like a lovely Saturday morning and this place really, really feels like a university common room to me. It really – nice cinder block walls, a comfy couch and a warm cup of the brown stuff. It is really, really comfortable. So, please introduce yourself.

Tawny Bartlett: To the camera?

jam: Hello, camera.

Tawny Bartlett: Hello, camera. My name is Tawny Bartlett. I am the Website Coordinator at Indigo Herbs. I do a lot of coding. I do HTML, CSS, PHP, Git, LESS and various other things. I have a growing love of technology and in all honesty I want to be a super hero in technology one day, that is my goal. I want to be an amazing Drupal developer, that is why I’ve made the decision for my life is that I want to be an amazing Drupal developer and I want to – I just want to be an expert and I want to help everyone else. I want to help people that used to be me three years ago to the Drupal.

jam: My impression, having met you before, is that you’re already well down the road to being a Drupal super hero, so thank you.

Tawny Bartlett: Got to be better.

Michael Hanby: I am Michael Hanby and I’m a director at Indigo Herbs, and tech is one of responsibilities. I’ve loved Drupal work long before Indigo Herbs and I’m very lucky because Tawny is on my team.

jam: So I am in Somerset in the southwest of the U.K. and had the wonderful opportunity to reconnect with a bunch of Drupal friends this week for the Drupal Somerset Christmas Meet-Up. I think we ...

Michael Hanby: It was our Christmas do, really.

jam: Right. We had a lovely pub meal and everything and I got to talking with Michael and Tawny about what they do. We met for the first time I guess at Drupal Camp Bristol 2015.

Michael Hanby: That’s right.

How Michael got his start with Drupal

jam: You caught my attention because how you run your business and how your business came about really fascinated me, and there’s this – in your case especially, there’s this chicken-and-egg situation about Drupal and business, right? You were already interested in Drupal before this business came around.

Michael Hanby: Before this business, yes.

jam: So how did you discover Drupal?

Michael Hanby: I discovered Drupal after I’ve been away travelling. I did the corporate thing for a bit, I went away travelling. When I came back we wanted to do – a friend and I wanted to do a website for an idea that we’ve been playing with whilst we were travelling. We have this thing Antiquarian Society, we’ve been looking – we’re into archeo-astronomy, looking for ancient alignments and watching the sun come up and set and all that sort of stuff.

jam: Can I just point out here that you’re from Glastonbury?

Michael Hanby: Well, I wasn’t born in Glastonbury but I do now live in Glastonbury and that’s alright.

jam: This is a very Glastonbury conversation we’re having.

Michael Hanby: This is normal in Glastonbury. It’s probably a bit strange in other parts of the Internet but...

jam: I had to say it ...

Michael Hanby: It’s a slightly niche subject which the Internet’s brilliant for of course, and we wanted a website anyway. I’d done a bit of HTML and I’d got into graphic design, and the guy that I was mucking about with this idea with was like, “Oh, what about Drupal? I’ve heard that Drupal’s quite cool.” This is back in the days of Drupal 5, so we have some web hosting and we have one of those one-click installs for various different packages, and I one-clicked Drupal and started playing with it. That was Drupal 5 and it was quite cool, it was relatively intuitive. I could change the way it looked by playing with the CSS and I could build what I wanted to build with it, and it was great.

jam: I hear that from very few people that, “Oh! Open up Drupal, it’s totally intuitive and I just got straight to work.” What was your background?

Michael Hanby: Well, I had come from a pretty tech background. I was never a developer but I’d been a business analyst and I’d managed tech teams. I was familiar with tech and tech processes, how data works and stuff like that so I guess it was easier – I think if you were a complete newbie, that would be the case more so then than now but back then it was really like, “Oh, there’s a really steep learning curve with Drupal.” I don’t know, I hacked it I guess. It was fine. Also, the other thing that was really cool about it was that it’s really easy to find out. If you don’t know the answer, it’s really easy to find out the answer. Someone’s probably asked the question somewhere and that was the case back in the days of Drupal 5 and now, it’s still the case but it’s way, way more advanced.

jam: Right. So community documentation is pretty good simply because there’s a very large mass of us doing this. Back in Drupal 5 days, there were thousands of our friends that you could ask easily for the answer and now, frankly, there are tens of thousands of people.

Michael Hanby: Exactly.

jam: So why did you stick with Drupal? You must be using for eight, nine years at this point.

Michael Hanby: Well, at some point after that I started working with Indigo Herbs and it was just Steve in his shed in the garden, and it was that kind of business at the time. Almost straight away - because I'd built a community type thing already on Drupal - almost straight away I was thinking I could see how this business could use that community-type platform to create a community, to generate brand awareness and all sorts of different things, and provide a useful function to be totally honest with you. I could see potential applications and we weren't on Drupal and I was itching to move something on to Drupal and start to use Drupal to do some of that stuff, and that’s what happened eventually.

jam: So you were just hooked. There was no question that there was going to be anything else?

Michael Hanby: I did play with WordPress for a bit and our first blog was actually a WordPress, and that was cool because I actually learned – some of my first bits of PHP actually are on WordPress and that gave me enough to get going on some Drupal.

jam: So in a bit, I want to get back to this business and the tie-in between doing good, ethics, community and all of these things that I think are a really good fit between Drupal and what you do. How did you find out about Drupal?

Tawny met Drupal on the job

Tawny Bartlett: Well, I found out Drupal through Indigo Herbs and the weird thing about me working in Indigo Herbs is I actually applied for a dispatch position.

jam: Which would be?

Tawny Bartlett: Just sending orders out.

jam: Taping up boxes?

Tawny Bartlett: Taping up packages and sending them out to customers and I actually said in my interview, “Oh, well if you ever want help for your website, I’d be interested in learning.”

jam: You knew some ... ?

Tawny Bartlett: HTML.

jam: Already.

Tawny Bartlett: So when I was little, I used to make little HTML websites and stuff just for some fun. Back when you had font tags. So that was quite fun. So then yes, I basically said that I could help with the website so when I first started we had a wholesale website on Drupal, so that’s our main distributing to shops and stuff, that’s our wholesale site. My first job was just basically data entry. And basically as it grew, I used to ... We use Git to version control Drupal and I used to have to ask Michael to put modules on Drupal for me because I didn’t know Git. So basically, over time I had to learn more and more because Michael wouldn’t be in some days. I’d be putting a module on Drupal so I just learned Git. I learned Drupal, I learned modules. And like Michael said, the community is just amazing. If you get stuck, there's pretty much an answer for it already and if there isn’t an answer for it, you can just ask a question and someone will answer already. So yes, I just fell in love with Drupal, it’s the best CMS in my opinion. It’s so flexible.

jam: Your leaning strategy was completely pragmatic, whatever you need to do to get your job done as soon as you hit a block then you learn a new thing and you learn new thing.

Tawny Bartlett: Yes, that’s basically what happened. Basically, that’s happened really extremely in Indigo. Firstly it’s Drupal front end stuff, moving blocks around the themes and stuff, then obviously I went to Git – I had to learn Git because we did version control, so I have to do that without Michael. Then CSS, I learned CSS.

jam: Right, and all the site builder stuff.

Tawny Bartlett: All the site – yes, all the site builder stuff but I find it quite easy ...

jam: Well, we’ve put years of effort into trying to make the user interface useful so ...

Tawny Bartlett: Yes, exactly. Views and stuff are just phenomenal, in comparison to any other CMS it’s just so easy to use and literally you can do anything on the front end but as our needs kept getting bigger and bigger, I learned View templates, I learned node templates, I learned – I had to learn PHP to start doing templates. So yes, it’s CSS, PHP then we went and did a custom framework so I learned LESS. So basically over the three years I’ve worked at Indigo, I’ve just learned so many different languages, obviously started to learn Javascript and stuff ... But yes, that is the case, we hit a wall and then we got over it. I’ve actually written a few modules in Drupal as well for Indigo.

jam: Right. When we first met, my strong impression of you was that you’re pretty hardcore tech now.

Tawny Bartlett: Yes, well, I’d like to think so anyway.

jam: What’s your job title, if that matters?

Tawny Bartlett: I’m actually Website Coordinator.

jam: Website Coordinator, which could be almost anything but that’s ...

Michael Hanby: It could be almost anything.

jam: Right. Fantastic. What’s your favorite thing about Drupal?

Tawny Bartlett: I think it’s the fact that literally you can say, “Can I do this to Drupal?” and the answer is pretty much always going to be yes. You can do anything in Drupal, there are no walls, you can just do anything you want and the fact that it’s just so flexible and - to me it’s just so easy, there’s no restrictions. You can just do whatever you want and if I can say two things, the community is amazing.

What how is Drupal community for newbies?

jam: So talk about showing up with relatively little experience and having a lot of questions. How was that experience, going out to events and meeting Drupal people?

Tawny Bartlett: It’s been fantastic, just in terms of the forums and stuff. Obviously, if a module is not working the way want it to be, you’ll find someone’s patched it already and they’re not going to commit it to the newest version but you can just patch it. Then, I’ve asked questions and people have provided patches to me and stuff, so people have been super helpful and they fixed things where I’ve been pulling my hair out and people just fixed it. Just out of the goodness of their hearts, and everyone’s just doing it for the passion of Drupal. Then, when I went to Drupal events, my first time at Drupal Somerset, Stefan helped us with the – we couldn’t get maps we’re working on Drupal, we just couldn’t figure out how to do it and he just instantly showed us how to do it and ever since then we’ve been using maps. The last Drupal Somerset that we had, Chris showed us how to use Paragraphs ...

jam: Which is amazing.

Tawny Bartlett: ...which is absolutely fantastic.

Michael Hanby: We’ve implemented that almost straight away. Partly by luck, we happened to have something on that just fitted perfectly.

jam: You had a use case ready for that.

Michael Hanby: Yes. The case is ready, she just took it away from the little meet-up and...

jam: The day after the meet-up.

Tawny Bartlett: Right.

Michael Hanby: Exactly that.

jam: I love that Drupal community’s completely opene arms approach to new people and to anyone who’s willing to ask respectfully and listen - mentoring, teaching, endless hours of volunteering. There’s a lot of enlightened self-interest in it in that, “Well, hey if I patch something that’s broken for you well then it’s not broken for me either anymore.” But somehow, there’s an incredibly positive energy around this that I find to some degree in the broader PHP communities, but not to the extent somehow. It’s a very happy place.

About Indigo Herbs

jam: We’re at Indigo Herbs in Glastonbury, just so that people not from around here know, pretty much the center of all “hippiedom” in Europe, frankly ...

Michael Hanby: Well, Glastonbury has been a center of pilgrimage probably before history. There’s an abbey here, the monks were really big here. They’ve got that ecclesiastic in the sort of ...

jam: It’s in the part of the country where there’s Stonehenge and there’s the lay lines, and there’s this special hill with the magic path to walk around in Salisbury. It’s not too far away so ...

Michael Hanby: It’s not so far away, no.

jam: Anyway, so it’s a really appropriate place to have herbs, natural remedies nutrition kind of a business.

Michael Hanby: It is. I like to think that the monks were doing it hundreds and hundreds of years ago, exactly the same thing. We’re a bit like that.

jam: I like to think that all the beers that they brewed was also medicinal.

Michael Hanby: Of course.

jam: So I’m holding this package of Ashwagandha powder and I happen to know that – not this very package, but this hundred grams of this stuff is pretty much why we’re sitting here today. How did Indigo Herbs get started?

Michael Hanby: Well, this is an interesting part of – this is I suppose to seed of Indigo herb. So the story is that many years ago, Steve wanted some Ashwagandha powder and he went to find some on the Internet and he couldn’t buy a hundred grams, he could only buy five kilos.

jam: So Steve just wanted a little bit.

Michael Hanby: He wants a bit for himself and he could only buy a lot more than that, so he bought a lot more than that, took what he wanted, and put the rest on eBay.

jam: He packed that up in small packages?

Michael Hanby: I guess, yes. I think that was his lightbulb moment of, "Ooh! Hold on, this is a big one."

jam: There’s a value-add here in delivering manageable quantities. When was that and when did you become part of this?

Michael Hanby: That was about 12 years ago. Nobody did anything like this on the Internet really back then, and then I became part of it probably about two or three years in – Steve needed some graphic design work done and I got involved doing the graphic design work and did a bit more, did a lot of web work, we had to move a lot of stuff around on the website and I thought, “This looks like quite an interesting business.” I’ve got a background – before I left and went travelling, I did an MBA and I’ve got a background in business so I was like, “This is interesting, there’s a nice business idea here and I could see how we could develop this.” It grew from that.

jam: You don’t have a storefront. Has it always been an online business?

Michael Hanby: It’s always been an online business.

jam: What sort of technologies were you using to – I guess you do B2B and B2C ...

Michael Hanby: Well, it’s mainly B2C.

jam: What sort of – how are you online?

Michael Hanby: Back in those days, we used a piece of software called Actinic which is basically a Microsoft Access database with a Windows front end you create your pages and what have you, and then you press a button and it FTP’s it all up server as static HTML with a bit of Perl to do the shopping cart, basically.

jam: Which frankly, in 2015, you’re coming full circle and that doesn’t sound super different to Sculpin or Jekyl, right?

Michael Hanby: Right.

jam: Which are the hip, cool static site generators are great now. So static site generators - totally cool, except that you cannot ...

Michael Hanby: Well, that you can’t really have a lot of rich functionality. Forget user-generated content.

jam: So was that like, “Oh, I want this stuff. Here’s the place where you have to fax your order,” sort of ... ?

Michael Hanby: Well now, it did have a Perl ... It wasn’t quite as bad as that. There was a shopping cart function which was written in Perl and you could download the orders every day, so there was a bit of functionality but it wasn’t very dynamic, it wasn’t very rich.

Tawny Bartlett: Main downfall was that we had to use it for one computer.

Michael Hanby: That’s right. It sat on one computer.

jam: Oh, because that was where the database was.

Michael Hanby: So you couldn’t have somebody over there processing the orders and somebody else over here writing content. This was impossible.

jam: Wow. Okay. So content 10 to 12, orders 12 to 2 ...

Indigo goes Drupal

Michael Hanby: Something like that, yes. It was obviously not going to happen. And I'd used Drupal for really interesting community-base things, and a lot of people that are into Indigo Herbs are practitioners of some sort of natural healing profession and I could see the potential for a community.

jam: Community-minded people anyway, people interested in making a difference, making the world a better place, spreading the message about whatever they do, right?

Michael Hanby: Yes. Actually, it’s a bit more prosaic in that in the final analysis with Indigo because we provide lots of fantastic natural health products. What we don’t provide is advice or medical diagnosis or anything like that. We sell herbs, super foods and great products but we’re not health carers and a lot of customers would come to us saying, “Look, I’ve got this problem. Can you help what shall I do?” We just can’t help.

jam: You probably also don’t want that liability.

Michael Hanby: Well, exactly. We’re not qualified to do it quite frankly, but plenty of people are so that was the idea behind our practitioners’ directory. We’ve got and Internet presence. Lots of people come to it looking for help that we can’t give but there are a load of people who can give it so it seems obvious to create a place where they can create a profile, put themselves on our website and then they can then provide a service that our customers might come to us to look for but which we can’t provide.

jam: So was that the seed of the community site idea and that was the gateway drug to Drupal?

Michael Hanby: It wasn’t actually, no, because prior to that we knew that we wanted to move it a bit more into wholesale and not just do B2C. So we built a Drupal eCommerce site, that was the first bit of Drupal really. We built a Drupal eCommerce site and migrated our blog from WordPress onto Drupal, it seemed obvious not to have too many platforms running at the same time.

jam: You’d think it’s obvious, right? We run into so many--we being all of us who with any clients of any size--run into shops that use five or 20 or 30 different technologies.

Michael Hanby: Well, from the business perspective, the driver for doing is that often the quickest way to get what you want in the moment is just to stick the other bit on, but the danger is you end up with this Heath Robinson of a system and it doesn’t always hold together. There are other benefits of having everything on one platform because you will think--this is my experience--you will think of ideas for doing things that you won’t think of now but you’ll think of them down the road. It’s easier to implement if everything’s all in one place and that’s one of the other great things about Drupal because you can do so much with it, you can make everything in one place and there’s so much benefit to that.

jam: I was telling you the other night that he speaks in perfect sound bites. You’ve just proven me right again. Thank you, thank you. I just have to wind him up and let him go.

Michael Hanby: You do!

jam: So how long have you been with Indigo now?

Tawny Bartlett: Three years in March.

jam: Was the company already on Drupal 7 at that point?

Tawny Bartlett: Yes.

Michael Hanby: Yes, it probably was.

Tawny Bartlett: Our original wholesale site was on Drupal 7. So we have the wholesale site and then we created the practitioners’ directory, which was the map thing. We’ve created maps so they can put their practitioner locations on the map. Then brought the blog over from WordPress, basically we’ve got massive natural health guides being on our Drupal site – Drupal is the content side of our site. We do actually have a multiplatform site. As I mentioned before we got a Magento-Drupal website and so we got two platforms and they ...

jam: That’s a common integration though. Magento does a lot of eCommerce stuff really, really well clearly and it’s PHP ...

Using Drupal for everything

Tawny Bartlett: Basically, over time we just literally started using Drupal for everything, anything you think of a business that we can use Drupal for, we’ll use it. Drupal is actually producing the packaging but not all of it, that’s a lot but basically Drupal produces the content so all of that content on that label is out of Drupal.

jam: So is it a web-to-print setup or is this a content type?

Michael Hanby: Well, we print the labels so that bags are pre-printed. We print the labels.

jam: Oh, I see. Okay. Right.

Tawny Bartlett: Basically, our stock system, our production staff produce jobs to print out labels of products and produce products, and it speaks to Drupal and these are content types which have fields for the title, the Latin name, the bullet points, the organic, the class...

jam: Oh, fantastic. So you really have the platonic ideal of a canonical central content repository for all of your content and anything that changes in one place, it will – if there’s a different regulatory need here, if there’s a whatever, you change it one place and it’s got on your labels, it’s on your site, it’s on your - everywhere in the same thing.

Michael Hanby: Yes, it’s all in Drupal.

Tawny Bartlett: The most exciting thing is – the part of thing I’m most proud of really is that nutritional data tables that should come out of Drupal as well and so with the label data as well, basically at the moment we got nutritional tables on our website. That comes out of Drupal that goes put into Magento, so we then decided to manipulate those tables to work on our labels. So those tables are manipulated from Drupal to working on labels so that people can exclude certain rows from these so that will fit, so the highs and lows you put them in the right place. So basically, that’s one center for all of our nutritional data and it gets put everywhere.

jam: This list is actually a View ... sorted?

Tawny Bartlett: It’s actually the - I think it’s a Table Field module but there’s extra columns to help sort out which bits are bold, help sort out – you’ve got schema on the website as well.

jam: Fantastic. RDFa,

Tawny Bartlett:, yes. So we’ve got a really good nutritional data schema coming out of our website as well.

jam: Fantastic. You get all of this power to be just as searchable, findable, useable as anyone in the world and you can download it for free.

Michael Hanby: That’s right.

Tawny Bartlett: Yes. It’s just that, “What?!”

jam: The empowerment story of what we do is so incredible today.

Michael Hanby: It really is. In fact, here’s another sound bite for you. If you are a small business and you want to develop a tech competency, I don’t know why you’ll do anything but Drupal because apart from the fact that it’s free, you’ve got this huge community that’s not just willing to give you the answers but wants to help you. What I think is one of the most awesome things about open source is that by asking a question, you are contributing to the project. It’s so cool. Just by asking the question that no one’s asked, you are contributing to the documentation that’s going to help someone else, it’s such a virtuous cycle.

jam: Yes. I haven’t done it in a little while but one of the ways that I like to start the keynote presentations that I do sometimes, especially if they’re open source side of things: "Who’s contributed to open source?" and you get in any given conference room, you get 20-50% of hands go [up]. No! "How many of you have contributed patches or pull request to your open source project?" Those hands stay up and I say, “Okay. How many of you have filed a bug report? How many of you have answered a forum question or been on IRC to help someone?” More and more hands go up and it’s like, “Okay. How many of you have been to an open source event? You’re all in this room, put your hands up. Thank you for contributing.” Every time we exchange information, every time we do anything like this it’s become much, much more than just developers trading code snippets and I really, really like that.

Michael Hanby: That’s right. Even if you’re just contributing use cases, that’s actually valuable.

Doing well and doing good - the idealism connection

jam: So you as a business are concerned with ethics in general. I know that you’re a living wage employer obviously involved in various nutritional, organic, doing things the right way ...

Michael Hanby: Yes. A lot of our products are organic. They’re not all organic, that’s not possible in some products.

jam: I know that you’re looking into Fair Trade certification.

Michael Hanby: We’re looking into Fair Trade certification. We are sponsors of the Veganuary which is a social movement to go vegan in January which Tawny has now pledged to do.

jam: It’s so great you volunteered for that. Big step, big step.

Michael Hanby: We’re about lifestyle and thing with health and nutrition is it’s not like you take a pill now and you sorted for life. It’s about lifestyle, it’s about how you live your life, it’s a long-term something.

jam: There’s this cartoonist called Scott Adams, he does the Dilbert cartoons. I’m reading one of his books right now and he talks about the importance of thinking in systems rather than in goals. If you do as systematic approach to something, even if you’re failing along the way it’s going to get you to where you need to go. So it’s not "I need to lose five pounds," it’s "I need to eat better everyday," kind of thing.

Michael Hanby: Exactly that. Exactly. By getting into some of our products, by getting into it, it starts to shift your thinking about how you’re eating. It makes you take responsibility for what you’re doing and that’s the key because that will have a long-term effect.

jam: So you have this business that is really involved in a lot of ethical activities and a lot of idealism. How do you see the connection between Drupal and open source technologies which are also very idealistic and your day job?

Tawny Bartlett: In terms of ethical ... ?

jam: In terms of the community, in terms of helping people, in terms of making a difference.

Tawny Bartlett: I’ve spent years juggling what I’ve wanted to do. I spent years being confused about what I wanted to do, literally just so confused going back and forth. I want to do this degree, not doing this degree, but Drupal has really taken my heart. It’s slightly corny but it’s just I’ve literally settled. I’ve just love Drupal. It’s amazing how people give and take for free, it’s amazing that when I first started posting on forums I used to say, “I’m really sorry if I sound like a n00b here.” I just always apologize because I was such a newbie to Drupal and I always thought people would be like, “That’s very silly of you. You’re so new, why are you posting on here?” But everyone is so accepting and everyone’s so willing to teach people and help people grow within the community. I’m just learning more and more about how many people contribute to Drupal 8 and I remember watching a video about all the comments and stuff about how – it was just absolutely amazing that everyone does this and most people do it for the passion, for the passion in Drupal. It stands out from the crowd, it’s just a fascinating thing that everyone loves technology and everyone does it because they want to make this amazing thing and if something goes wrong, no one judges them for it. Everyone tries to help to get it working and to me that just sounds absolutely amazing, it’s missing from the world I think. The community of Drupal, if that was applied to everything, then it would be such a better place.

jam: It makes for a nice place to work I think.

Tawny Bartlett: Yes, it’s fantastic. If I get stuck, I know there’s a community out there and I have Drupal developers that are my friends and stuff, I know that they will generally help because they’re passionate and they want to help. Everyone sees the challenge in Drupal and everyone wants to fix it, no one is greedy and no one keeps the code to themselves which is really strange. In terms of other CMSs, they charge for extensions--everyone wants to give and it’s just--to me, I find it really hard to get that in my head that people will just give these great ideas for free.

jam: In that instance, we’re lucky that Drupal is licensed under the GPL because it makes a lot of classic business models really, really hard to do but it makes it really easy to share so we found other ways to use it.

And it makes business sense

jam: Listen, I want to ask you two things to wrap up. As someone concerned about ethical activity and idealism, how do you see Drupal and open source - let me ask that in a better way. How do you see Drupal and open source in terms of the ethics and ideals that you bring to your business?

Michael Hanby: Well, the thing with Drupal and open source is we get more out of our combined efforts if we share, it’s as simple as that. Things are better if we share because then we’re all contributing and we all benefit from it, and that’s really clear in Drupal. If you compare it to other platforms that don’t have such an open sharing community, there are less solutions. Things don’t work as well, there’s less documentation, it’s more difficult to get help and that’s just really. Having worked now with a couple of different platforms, that’s really clear. Like I said before, if you want to build tech competency and you’re a small business, we’ve gone from not knowing a lot to knowing quite a bit, having a quite clever, complex and effective infrastructure and having a really content rich website with all different types of content that interact with each other that we built specifically for ourselves. We could never have achieved any of that without Drupal community, we couldn’t have done it. We could have achieved some of that, we couldn’t have achieved all of it, not on our budget. We’re a small company, we’ve grown it ourselves and Drupal’s made that possible.

jam: So as a hard-nosed MBA businessperson, paying the rent for you and your employees, talk about Drupal.

Michael Hanby: I just think that none of our USP comes from the way that the PHP is written, we’re not going to sell more stuff because logging in to our back end is different to the way everyone else logs in, there’s just no point in reinventing all of that sort of stuff. We can focus on the little bits that really make the difference and everything else there is not so – it’s still really important but it’s like a hygiene factor. That’s cool, that’s already there, why reinvent it? There’s no point and that’s what Drupal offers.

jam: So terrific commodity functionality, flexibility. I think from a business perspective as well, risk mitigation.

Michael Hanby: Totally. We do have applications for other use cases that we’ve not written on Drupal and you can only get onto them if you’re on the IP whitelist because we can’t write the sort of security that you just get out the box with Drupal. It’s things like that, it’s having that framework there which means that you can just focus on the bit that’s important to you. That’s the thing, you don’t have to do all the other stuff because it’s already done.

jam: Fantastic. Last question for the day, Michael. Give us a shameless plug for Indigo Herbs.

Michael Hanby: Indigo Herbs is a manufacturer of natural health products. We make beautiful things that will make your life better. Come and check out and discover the natural lifestyle that we offer.

jam: For those of us who speak – I’m not even sure why but I would have said "www.indigo minus" but I’m not sure why that is.

Michael Hanby: Well, there is the hyphen/underscore ambiguity.

jam: Right. Okay. Anyway, great people making...

Michael Hanby: Maybe it’s a European thing.

jam: It could be. Great people making great products and also doing really, really interesting things with Drupal. If you have any questions about all the cool Drupal stuff that we’ve touched on in this podcast, I’m absolutely certain that they will be very happy to talk with you. If you want to meet a cool user group, come down the Somerset in the U.K. as well. It’s a good, good bunch of people.

Michael Hanby: Drupal Somerset. Third Thursday of the month in here, in this very room.

jam: Oh, now I know where to come, actually.

Michael Hanby: You know where to come.

jam: The last meet-up I went to was in a pub. Hey, thanks so much for taking the time to chat with me today. Alright.

Michael Hanby: You’re welcome. Thanks for having us. Thank you very much. It’s great. It’s really exciting and it’s a pleasure, an absolute pleasure.

Skill Level: BeginnerIntermediateAdvanced
Catégories: Elsewhere