Nu ook in het Nederlands.

Planet Drupal

Subscribe to feed Planet Drupal - aggregated feeds in category Planet Drupal
Bijgewerkt: 6 uur 17 min geleden

Acquia: Lonestar PHP 2014

ma, 2014/05/05 - 5:06pm

I had the privilege of attending Lonestar PHP 2014 in Addison, Texas a couple weekends ago. It was an amazing event full of amazing people and valuable sessions. For those of you who know me, I typically spend a lot of time in the hallways just talking with and meeting new people, however I did attempt to attend some sessions and the calibre of sessions being presented was ridiculously high. The PHP community that attends these events is really obviously close knit. It was a bit like going to a large regional Drupal event.


Marek Sotak: Drupal training in your area organised by you - travelling and training - 2014

ma, 2014/05/05 - 4:58pm

The title says it all. I love to travel, meet new people, experience local community and share my knowledge. This is edition 2014.
Pinpoint yourself onto the map if you are interested in any of the trainings, doesn't matter if you are an individual or a company.
If you can host me (couch), show me around your city, and find the venue for training, you will get discounts.


Drupal Association News: "Danke" from Frankfurt!

ma, 2014/05/05 - 3:51pm

This post was written by Manuela Meier, a member of the organizational team of DrupalCamp Frankfurt 2014, and Senior Manager Software Development at Cocomore AG/Frankfurt.


DrupalCamp Frankfurt 2014 took place on the 12th & 13th of April atGoethe University in Frankfurt Bockenheim. Organized by volunteers of the Drupal community Rhein-Main and run under the roof of the Drupal e.V., it was the first Drupal camp in Frankfurt, which meant there was lots of work to do in advance. We, as the organizers, were really nervous and excited, and hoped that everything would run as planned.

We had about 200 visitors, and our plan to make it an international camp worked out quite well: The attendees came from 16 countries all over Europe and even from overseas. We had 35 sessions in 3 to 4 parallel tracks, and the majority of these sessions were held in English. The number of session proposals was really more than enough, and we had a hard time to decide which ones to  use and which ones to drop.

We covered a wide variety of topics, so that everyone from devs to themers to project managers to devops could find a talk that was interesting for her or him most of the time. On Sunday, we even had a fourth room with a track for Drupal novices. There were two beginner sessions, handling basic topics like setting up a Drupal, choosing modules etc. These sessions were visited really well, so thanks to Ronald and Mark for bringing new people closer to Drupal!

We also had keynotes on Saturday and on Sunday. Saturday started with MortenDK presenting “Twig - all the new awesome” and as expected it was a success. People liked it and we're really happy that Morten followed our invitation to our camp. The keynote on Sunday was by Nils Adermann, founder of Composer, and he talked about "PHP Reinvented – How Composer helped shape the new way of writing PHP." This session also was a great choice and a good example that Drupal Camps are not only about Drupal, but also about interesting or innovative topics that are related and relevant. In this context, many thanks to the Drupal Association whose funding also made it possible to invite these great speakers!

Sprinting took place throughout the weekend. On Friday we had a code sprint in the rooms of the Cocomore AG. Quite a number of people that arrived earlier in Frankfurt dropped by and discussed about how to contribute best to Drupal and its modules and it was explained how contributing to Drupal works. Some people were given their first issues on to train contributing on real examples. On Saturday and Sunday we had a room reserved in the university for sprinting, and most of the time you could find some people there, discussing, coding and working on Drupal8.

Well, and of course, there were the socializing events. Friday evening we met with other Drupalistas at an Irish Pub for a warmup. It was a really nice evening with many well known faces as well as some new ones. Saturday evening we met for 100L of free beer at the Depot 1899 in Frankfurt, and afterwards we conquered the Clubkeller with 20-30 people. It was a long evening, with many many great people and lots of fun.

In conclusion: The weekend was awesome! As mentioned above, we were really nervous in advance, there were so many things that could have gone wrong. And in the end, we had great sponsors and supporters, 200 guests, so many sessions that we had to choose which we wanted to have, coffee machines, recording, tshirts, badges, everything in time, we had great speakers, the best weather you could imagine  and everyone had fun. It's really not too much to say that we all were relieved, happy and excited. The work paid off, and if the attendees liked it as much as we did we'd love to do it again sometime in the future. And probably the 2nd time will be easier.

As already said at other places: Thank you all a lot, you're the best!


YesCT: Sustainable Drupal Core development? Drupal Core Gittip Team, a new funding effort.

ma, 2014/05/05 - 11:57am

On May 2, 2014 the Drupal Core Gittip Team was somewhat quietly launched. There was a helpful quick round of questions on twitter and in IRC, and more details were added to the Drupal Core Gittip Team profile page and the @DrupalCoreGT twitter account. This post is a follow-up with even more details. We hope this answers more questions people have, and continues the discussion.

We are just getting started, so some of this information will probably change as we gain experience and more feedback.

We recognize that the most significant contribution to Drupal has always been and will continue to be the unfunded voluntary contributions of the many. Our hope is that the Team can play a part in making Drupal core development sustainable.

Thanks, Cathy and Alex

Who are you?

We are making the world better by working on Drupal Core.

Drupal Core contributors need consistent, reliable sponsorship without having to be experts in fundraising, and would-be sponsors need a central place to contribute that they can have confidence in. The Drupal Core Gittip Team hopes to be part of meeting these needs.

This team is run by Drupal Core mentor and contributor @YesCT and Drupal Core committer @alexpott. Contact us to join the team. We are looking for people who reliably work on Drupal Core and want help meeting their funding goals.

Read more about how Gittip teams work.

For a bit of history you can read my blog post on fundraising or listen to the DrupalEasy funding podcast.

How do I apply to join the Drupal Core Gittip Team?

Ping @YesCT or @alexpott on IRC or twitter. Tell us about your contribution, your current funding, and your funding goal (if you have one).

I contribute to Drupal Core - do I qualify to join the Drupal Core Gittip Team?

The team is for funding people who are reliably working on Drupal Core. If you are listed in MAINTAINERS.txt or have more than ten core commit mentions within the past six months, then you should be automatically eligible. If you do not meet those criteria but feel you have been contributing reliably to Drupal core, then give more detail about your contributions and the admins will review this. (If an admin rejects membership, an applicant can ask it to be put to all members for discussion and a ballot, with a simple majority needed.)

Over time, members of the Gittip team will be periodically reviewed. Team members who have stopped contributing to core for a significant period of time, or are suspected of abusing the criteria for membership (for example a shared account) may have their team membership revoked.

How much money do members get?

Gittip Teams are set up by Gittip such that each member chooses how much money they claim, starting at max US$1, which they are able to double each week, with new members getting priority. Who receives money and the amount each member receives is publicly available on the members tab on Gittip.

We have set some additional guidelines and will review these over time.

What other agreement is there among Team members for deciding who gets how much money?

If your company pays you for all of your time contributing to Drupal Core, please do not also ask to be funded through the Drupal Core Gittip Team. The Gittip team is a way for companies and individuals to support people who are contributing their own time, without compensation, to Drupal Core development.

Preliminary claim guidelines:
  • (After May 8, 2014) Members when they join are asked to set their claim to US$1/week, when they meet the criteria for reliable Drupal Core work.
  • It is ok to be a member of the group and claim less than US$1.
  • An initial goal is for members, who have some of their hours working on Core not funded, and want to have it funded, to get at least one hour a week of funds.
  • Until we have enough weekly contributions coming in to fund more than one hour for members (who want it, and meet the criteria), please do not set your claim higher than max (US$64, $total_funds/$number_people_wanting_funds).
  • When we have enough money to give everyone who wants (and meets the criteria), we will announce letting people claim up to 4 hours a week.
  • Members wanting to claim more than US$256 or 4 hours a week, should publish a summary (short: 140 characters) of what they worked on and share it with the team each week. People can up their claims, maxing out at 8 hours a week.
When should a member reduce their claims?
  • Vacation? If the vacation is less than 2 weeks (per 20 weeks) there is no need to reduce your claim.
  • Members should reduce their claim when they have gone more than 2 weeks with their work funded from some other source.
  • Partial reducing is encouraged, if for example they picked up partial funding from other places, but still have some work unfunded.
Who are the admins and how are they selected?

Currently YesCT and alexpott can add members via the twitter account. Admins are selected by … them volunteering to take on admin responsibilities, and being a member of the group for at least 7 weeks. New admins will be appointed by the current/outgoing admins, when an open admin slot is available.

Who are you to try and tackle the funding situation?

We are Drupal Core contributors that have tried to fund our work, have talked with others who have attempted to get their work funded, and are trying to move forward with something we think has potential.

What Drupal Core work does this fund?

It funds people who meet the criteria. On receipt of funds people are free to do what they want. This is tip - the work is already done.

Why a Gittip Team?
  • Gittip because: Gittip can maximise fundraising efforts using a fundraising platform well known to the community - over 500 Drupal people are already there.
  • A team because: donors will not have to move their sponsorship as the funding needs change for the people who work on Drupal Core. And people who work on Drupal Core do not have to do new fundraising as their sponsors change.
  • We hope the team provides a central, consistent, and trusted space to raise funds for Core development.
  • We hope through the community controlled membership the funds are targeted in the best way possible, to those that deserve and need it.
  • Core development is driven primarily by individuals working across a large number of different patches/subsystems, as opposed to specific fixed-scope projects. Funds with no specific development targets attached support this.
  • Core is bigger and more complex than ever. This is one solution to help individuals continue to contribute time, especially if they are not supported by the company they work for.
  • There are individuals and companies who can not donate development time to core this provides a way for them support core development.
Why not the Drupal Association?

Current charter says the DA must not direct Core. This is felt by many to preclude the Drupal Association from fundraising for core development. The Drupal Core Gittip Team plans to work with the Drupal Association on the issue of Core sustainability and funding.

What is your funding goal?

US$5000 per week.

Why so much?

Depending on cost of living assumptions, that is the equivalent of 2 full time people.

Why so little?

Yeah, it will take a lot more than that to make Drupal Core funding more sustainable, but it is a start.



Mon, 05/05/2014 - 14:24

[moved these comments out of the post and here] Note, since members start at US$1, and can only double every week, it would take 7 weeks before anyone could get to US$64. This gives us more time to think through the claim agreement.

Note, we do not, as yet, have enough money to worry about the following, but this documents some ideas.

Elijah Lynn (not verified)

Mon, 05/05/2014 - 23:00

This is great news, I just pitched in $5/month! I will start spreading the word!


Tue, 05/06/2014 - 11:17

In reply to by Elijah Lynn (not verified)

... careful, Gittip is per week. :) Add new comment Your name Subject Comment* More information about text formatsRestricted HTML
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <h4> <h5> <h6> <p> <br>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.

2bits: Presentation: Drupal Performance Tips and Tricks

za, 2014/05/03 - 4:36am
On Friday May 2nd, 2014, Khalid of, Inc. presented on Drupal Performance. The presentation covered important topics such as: Drupal misconception: Drupal is slow/resource hog/bloated Drupal misconception: Only Anonymous users benefit from caching in Drupal Drupal misconception: Subsecond response time in Drupal is impossible for logged in users Drupal misconception: Cloud hosting is more cost effective than dedicated servers The presentation slides are attached for those who may be interested ...

read more


Drupalize.Me: Let's Debug Twig in Drupal 8!

za, 2014/05/03 - 1:58am

When I am theming a Drupal site, I need to know which variables are available on a template file. In Drupal 8, the template engine is Twig, so we’re going to need to know a little bit of Twig to make this work. So, if Twig is totally new to you, don’t worry. Today, you’ll learn some Twig!


Drupal Association News: Whitney Hess to lead user research!

vr, 2014/05/02 - 10:01pm

Several weeks ago, we issued an RFQ for User Research as part of our revamp. We received a big number of exciting submissions, and the Drupal Association staff and Content Working Group members had a wonderful time reviewing responses and interviewing potential vendors.

Now, after several weeks of reading and careful debate, we’re thrilled to announce that we’ve selected a vendor for our user research: Whitney Hess!

Throughout the selection process, we were constantly impressed by her professionalism and enthusiasm for the project. We were impressed by Whitney’s experience coaching business leaders on how to more mindfully and compassionately design their products, their companies and themselves, and felt that her life’s mission to put humanity back into business aligns beautifully with the values of the Drupal Association and greater Drupal community. Her unique approach will help us build internal skills in the tech team, which we’ll be able to benefit from even after this project is over.

Congratulations, Whitney! We can’t wait to start working together to make even better for everyone who uses it.

Personal blog tags: user research

Code Karate: Drupal 7 reCAPTCHA module

vr, 2014/05/02 - 3:27pm

In this Daily Dose of Drupal video we feature the Drupal 7 reCAPTCHA module.

In this episode you will learn:

  • How to register a domain with Google's reCAPTCHA service
  • How to set up the the reCAPTCHA module
  • How to set where you would like the reCAPTCHA form to appear on the site

KnackForge: Drush sql-dump and sql-sync - skip specific tables

vr, 2014/05/02 - 2:02pm

At KnackForge we use Drush more often as a part of Drupal development projects. As Drupal developers, we frequently feel the need for getting the most recent database dump from live site. When I did this recently, it was relatively a big site, thought it would be nice to skip a few tables that are not essential. At least to avoid unnecessary time spent on I/O operations. This is one of the few things that I have least tried with Drush.


KnackForge: Knowing the right APC memory needed for your Drupal site

vr, 2014/05/02 - 1:59pm

Alternative PHP Cache (APC) is one of the best PHP accelerators around for a while.

Wikipedia ideally describes the same as below,


ThinkShout: Exporting Custom Date Formats in Drupal

vr, 2014/05/02 - 9:00am

Like most development shops, we like code. It gives us and our clients a feeling of confidence to have configuration and logic as much as possible living in code, rather than in the database. So naturally, as we build Drupal sites, we use the Features module to lock configuration into code.

Not too long ago, when we were building some features for, we needed to format some dates in specific ways, primarily on their events page and their blog. Date formats are used in many places on probably every site, including fields on content type view modes, and in views configurations. They are simple to set up in the dates UI in Drupal, so you would think it would be easy to export into code. Unfortunately, there is no simple way to export it. Fortunately, there is a different way, still easy, to get this into code, and it's a great introduction to using Drupal module hooks.

We will look at using custom code plus a small export using features and strongarm. This is the same process we used for RidePDW and it worked perfectly.

Collect your facts

Decide on a format. Go ahead and look at the format options at, so you know what the options are.

Pick a name for that format. Examples: "Month Year" or "Short: MM D".

Code it up

By the time we are adding a custom date format, we usually have a few features modules already created. It's usually best to put this new code in a generic or common feature, since most date formats will be used by several content types and views.

Let's say the name of your site is "mysite" and the name of your genric feature module is "mysite_common". If you don't have any features modules at all, go ahead and create one and enable it, exporting something like the site name into it, mainly so we have similar starting points.

Quick overview of the code:

  1. hook_date_formats().
  2. hook_date_format_types().
  3. strongarm export.

Let's start with hook_date_formats(). This accomplishes the same thing as creating a new format at admin/config/regional/date-time/formats.

Here's an example.

<?php /** * Implements hook_date_formats(). */ function mysite_common_date_formats() { return array( // Creates a new format for a new, custom format type. array( 'type' => 'mysite_short_y_m', 'format' => 'Y-m', 'locales' => array(), ), // Defines a format and makes it available to core's short format type. array( 'type' => 'short', 'format' => 'Y-m-d', 'locales' => array(), ), ); }

The type points to the date format type that this format will be available for. I tend to make it unique and prefix it with the site name in order to avoid future namespace collisions. You may want to prefix it with the full module name. The format key is a string that ends up getting passed to date(). I usually leave locales as an empty array because I want the date format to be available for all locales.

The only effect this hook implementation has that it makes formats available in the date admin UI. Nothing more. Full hook documentation at

Moving on to hook_date_format_types(). This is similar to creating a "date type" at admin/config/regional/date-time, but it only creates a machine name with a human readable name.

Here's the example:

<?php /** * Implements hook_date_format_types(). */ function mysite_common_date_format_types() { return array( 'mysite_short_y_m' => t('Short: YYYY-MM'), ); }

Clear caches, return to your site's date format settings, and you'll see your new date format.

However, navigate to the display settings of a date field and you will see the name of your custom date format type, but the format won't be right.

Come back to the date format settings page and click that "save" button. Now the date formats presented in field settings will be correct.

To make those setting stick and be deployable, we need to do one final thing. We export a new variable. Saving the date format types page creates a new variable that ties the new date format type (just a name) to an actual format (the code that defines the format, such as "Y-m").

So head back to the features UI and you should see a new variable listed in the strongarm section.

This is specifically the date format type. Export it into your mysite_common feature.


At this point, you should have code that can be deployed to an existing site, and after enabling and reverting the feature, will provide a consistent date format for use wherever dates need to be displayed.


Aaron Winborn: Last Year’s Successful Charity Effort is Making a Difference

vr, 2014/05/02 - 3:33am

Hello, My name is Aaron Winborn, and I was the recipient of the Society for Venturism's charity last year, to receive a future cryonic preservation at the facilities of the Cryonics Institute for when the time comes. I'm indebted to many of you for your contributions, and I want to thank you from the bottom of my heart for the peace of mind that this gives me. I still have an albeitedly diminished bucket list of things to do, but I don't stay up fretting over the things I'm incapable of accomplishing, in large part to this assurance. I know the odds are still not in my favor, but at least I have a significantly better chance of revival than if I were buried or cremated.

That said, This past year has been both challenging and a blessing. Challenging because of all the difficulties brought on by having to adjust to the continuing degeneration brought on by Amyotrophic Lateral Schlerosis, ALS, better known in the United States as Lou Gehrig's Disease, or Motor Neuron Disease in other parts of the world. Although I am not yet completely paralyzed, or locked in as they say, I am confined to my wheelchair, and cannot move my hands or arms. My breathing capacity is no longer measurable, and I cannot go for more than thirty seconds without mechanical ventilation before I'm in distress. I am not yet on a vent with a tracheostomy, but we are considering that as the next step to prolong my life. It's a difficult decision to make, however, because of the extraordinary amount of care that I would require around the clock, not to mention the possible loss of a quality of life. It's no wonder that only about ten percent of patients choose a tracheostomy, and only fifty percent of those go on to survive another year.

If that sounds scary to think about, well yes, it is. I could go on with a report of challenges we face, including the utter loss of the ability to speak or to understand spoken language, to the loss of the ability to eat or drink, to the devastation this awful disease has wreaked on my wife and our two young daughters, but I wouldn't be able to do it justice in a few short paragraphs, especially when I want to make sure that I leave space for the good things in my life. So on with the good.

First, I have, after a year or so of giving up reading anything not available on the Internet, have reawakened my love of literature. I've rediscovered the ebook format, and am now devouring about two books a week. Mostly science fiction, but dotted with the occasional contemporary fiction. I'm also still participating in the Drupal community, with a friend who volunteers two hours a week and a tricked up communication device.

Although I have been largely holed up this winter, I still manage to get out every couple of months to see a movie with some friends, and it's been fun sitting at the picture window and watching the girls play in the snow. Oh, how I look forward to the warmer seasons when I'll be able to "walk" the neighborhood again.

I also have been exploring new ways of communicating with my sweetie. Certainly challenging, because of my inability to use the verbal bandwidth, and because so much of her time is taken up as both my primary caregiver and being almost a single parent. On top of that, my day is so broken up and consumed with my caregiving that I find it difficult to even focus on an email that I find myself consolidating my efforts and try to cheat, by counting in my mind a quick CC in an email, or say a mention in a magazine article or a blog post as a valid form of communication. But I know in my heart that doesn't fully count, so I continue to find new ways to let her know how special she is to me.

I am enjoying the simple things in life. I know that's a cliche, but as with all good cliches, there's an element of truth to it. From when our cat decided that my lap is warm and available for napping, to the spontaneous hugs my youngest daughter gives my leg, to watching my older daughter play computer games, to watching my wife's beautiful smile. These are the things that make up life, and I am so excited to have another day of it each morning I awaken.

Stay strong,
Aaron Winborn

This letter first appeared in the latest issue of Long Life magazine:

read more


S. M. Bjørklund: How to programmatically create a field in Drupal 7

do, 2014/05/01 - 10:25pm

Ever had a site not controlled by the features module or felt that using it, add to much administrative overhead? Or you simply want to learn how to use Drupal field API? This is for you.

In this example I will try to keep the amount of code to the very minimum. Putting too much features into a example have a tendency to put some people off with the amount of code it create. The example will not explain how you create new field types, but rather use one existing provided by Drupal core.

Scope of example
  • Create a custom module named demo_field.
  • Enabling the module create a text field and add it to a content type named article.
  • Disable it remove the field from the content type and delete the field.
demo_field module

Not testing for exiting field name or that the node type (story) actually exist. Make sure field name does not collide and that you have a content type named story. If not, alter the code to match your installation.

name = demo field
core = 7.x
dependencies[] = field


That's right, it is a empty module. The real code is found in til file module_name.install.



* Implements hook_enable().
* Create a field. Fields can be created without any needs to attach them to
* entities.
function demo_field_enable() {
  $field = array(
    'field_name' => 'demo_field',
    'type' => 'text',

   * Bind field to a entity bundle.
  $instance = array(
    'field_name' => $field['field_name'],
    'entity_type' => 'node',
    'bundle' => 'article',

* Implements hook_disable().
* Remove field from node bundle (content type) and then delete the field.
function demo_field_disable() {
  $instance = array(
    'field_name' => 'demo_field',
    'entity_type' => 'node',
    'bundle' => 'article',
  print 'Removed ' . $instance['field_name'] . "\n";

This is all code you need to create a field, add it to a content type. Sharing the field with another content type will only require that we add a single line.

Code breakdown

First thing we do is to define a field:
$field = array(
  'field_name' => 'demo_field',
  'type' => 'text',

The very minimum you need to pass to field_create_field() is a name for the field and the type of field. Created fields in Drupal does not have to added to a content type (entity) right away though when you create them through the UI you do not have a choice. The field API on the other hand give you all the flexibility you need. The text field get Drupal default setting since for the sake of simplicity choose to omit any field settings.

$instance = array(
  'field_name' => $field['field_name'],
  'entity_type' => 'node',
  'bundle' => 'article',

This add the field to the node. The very minimum you need to pass to field_create_instance() is the name of the field you plan to attach, the entity type, and the name of the bundle.

Grab the demo_field code

Code can be found in my github repo.


Another Drop in the Drupal Sea: Ways to shoot yourself in the foot: Submit "buttons"

do, 2014/05/01 - 10:19pm

I was writing custom forms that needed a validate handler and a submit handler. So, I followed the standard approach of

function my_module_menu(){ $items = array(); $items['my/module/custom-form'] = array( 'title' => 'I am a doofus', 'page callback' => 'drupal_get_form', 'page arguments' => array('my_module_custom_form'), 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); return $items; }

Note: My access callback is just to simplify this example.

read more


Acquia: Drupal 8 and business opportunities – Paul Wander

do, 2014/05/01 - 9:14pm