Skip to Content

Planet Drupal

Syndicate content - aggregated feeds in category Planet Drupal
Updated: 1 day 3 hours ago

Acquia Developer Center Blog: govCMS: My Experience So Far

17 November 2015 - 10:43am
Stuart Rowlands

The Australian Government launched govCMS earlier this year, a custom Drupal distribution and hosting service catering to all of the Australian government. The aim is to provide a single solution for unclassified websites using a common codebase and a shared feature set on a scalable and secure infrastructure.

Tags: acquia drupal planet
Categories: Drupal

Stanford Web Services Blog: Drupal 8 - A Festivus for the REST of Us

17 November 2015 - 8:05am

The development team was recently given the opportunity to stand up a Drupal 8 REST server with the intent of improving on our D7 content server, learning what's new with the framework and seeing how our content types would fit into the revised architecture. Having just attended BADcamp at UC Berkeley, we were excited to use Drupal 8 and its new special sauce (yml, composer, console, bigpipe, twig, etc).

Categories: Drupal

Chromatic: Drupal Camp Chattanooga 2015

17 November 2015 - 7:56am

A few weekends ago I was fortunate enough to attend my first Drupal Camp ever. What was even more fortunate for me was that it was located near where I grew up in Chattanooga, TN. I’ve been to several leadership/business conferences in my life, but this is the first one that I’ve been to where it felt like everyone was genuinely glad to be there, even on a rainy fall day. In the spirit of open source, it wouldn’t feel right to keep all of the helpful info I learned to myself, so I wanted to take a moment and share some of my key take-aways.

Selling Drupal

Bob Snodgrass from net2Community gave a great seminar on sales. He started his presentation on selling Drupal by stating "Don’t sell Drupal, sell results!" So many times we become entrenched in the technology that we use and sell, and that’s ok!, but we have to remember that clients are more interested in the results we can provide, instead of the medium we use to get there. A good example given was a donut in a donut box. People rarely care about what box it comes in, they just want the donut!

Bob also brought attention to how each team member contributes to "selling", whether they realize it or not. The interactions, work and relationships that we manage on a daily basis help clients decide if they will continue to work with us or recommend us to their work colleagues.

Becoming a PM Ninja

Justin Rhodes from Commerce Guys led a good discussion on increasing efficiencies as a Project Manager. One of the first things we discussed was Parkingson’s Law: tasks will swell or shrink according to the amount of time given to them. If you use this law to your advantage, you can create small window deadlines to create efficiencies in your development process.

When it comes to planning and estimating phases for a project, Justin shared the success he has had doing this by using relativity to help the team give input. For example, rather than trying to nail down hours for each process step right way, you can tell everyone to estimate the size of the task by using shirt sizes (S, M, L, XL) to align everyone by using relative sizes. This can give the resource planner a clear visual of which parts of the project are going to take the longest. Of course, there are no complete replacements for old fashioned hourly estimates. The key to success on estimates is to check the team’s accuracy by comparing estimates against actual spend.

Contributing to Open Source

Our keynote speaker was Mike Anello from Drupal Easy. He gave a great talk on why we should be contributing back to the Drupal community. It wasn’t the typical, do it because it is the right thing to do, lecture. Mike made the case that not only does contributing back to the community grow your network and visibility, but it has a very real probability of increasing your bottom line. It is easy to say that we are going to contribute, but unless you deliberately set aside time, it probably isn’t going to happen. One way to make contributing a priority is to work it into your marketing budget. Switching your perspective on contributing from a way to get karma points to a powerful marketing tool, will change your priorities around where it fits into the company’s strategy.

The last take away I got from Mike’s talk was that even those of us who are nontechnical team members can contribute back to the Drupal community. Reaching out to module owners and asking how you can help, cleaning up ticket queues on modules, confirming bugs and assisting in documentation, are all ways to help move the ball forward (and I’m told they are greatly appreciated). Don’t forget that Drupal events don’t just happen by themselves. There is always a need for folks to help with the planning and coordination of meetups, camps and conventions.

Final Thoughts

Although I was unable to attend the pre and post party, I have no doubt that the enthusiasm of the group spilled into every conversation that was had. Who knows where I will be living next year (the benefits of working for a distributed company), but if I am able to, I’ll be returning to DrupalCamp Chattanooga!

(photo credit goes to @DrupalNooga)

Categories: Drupal Drupal 8 Field Labels - Hidden Vs Visually Hidden

17 November 2015 - 6:58am

Was trying out D8 and while “Managing Display” of a content type, noticed a new option while choosing the visibility of the label of a field.



Was wondering how they are different. Apparently when “Visually Hidden” is selected, the label is still there in the markup but not visible on browsers/screen, allowing screenreaders to be able to readout the label of the field!


Markup of the field label when set to “Visually Hidden”:


The motivation for this feature on d.o issue reads:

“As a site builder managing the display of a node, I want the option to hide field labels from sighted users, but make them visible to screenreaders, so I can make my site as accessible as possible without a custom theme.”


Had been hearing a lot about Drupal 8 accessibility features, but was pleasantly surprised to see this on my first brush with D8. Way to go Drupal! Can’t wait to see your new face in a couple of days!

Categories: Drupal

HollyIT: Vagrant + VirtualBox + New Windows 10 Update = OH NO!

17 November 2015 - 6:23am
Categories: DrupalPlanet DrupalTips

A quick post for others that might experience this same problem. Last night Windows 10, with its forced updates, provided me with the big update we've all been waiting for. As I awake, ready to go to work on Drupal 8 upgrades, I tried to start my Vagrant and jump right in. Suddenly I was hit with an error about the connection being in use. Quickly I opened VirtualBox and upgraded that. Once that updated, along with the extension pack, the error still persisted. Trying to open the boxes right from VirtualBox gave me a few more details about the error, but not much more.

Categories: Drupal

Kodamera Screencast: Drupal: Introduction and installation

17 November 2015 - 5:45am

Drupal is an awesome CMS (content management system), but it is so much more than just your ordinary blogposting system (though you can use Drupal for that as well). But the road to your own site (and perhaps internet success) must start somewhere, and if you want to set up a local environment on your computer to play around with Drupal (or any other PHP-driven system) you need a program or software to make this happen. In this introductory screencast I show you how to download MAMP and install that on your Macintosh computer, followed by how you download and install Drupal (8, the latest version). Download MAMP MAMP is a bundle of programs, made especially for running a local server on your computer. This means that an installation of Drupal can run on your own computer, not accessible for other people, only for you. To make your webpage accessible for the whole world, you need to upload your files and database to a hosting company of some kind and get some kind of domain name and point that to your hosting companys server. But I'm getting ahead of myself. Back to MAMP. You can find MAMP at Download and install the software first of all. The downloaded file ends up in your Downloads folder by default. If you choose some other folder, remember where you put it... Or download it again (yes, we have all made that mistake at least one time.) MAMP is freeware, but you can also buy MAMP Pro which is a more powerful solution if you want to handle or develop many sites simultaneously. Here, we will use the free version of MAMP for this introduction. With MAMP you also get a program called Sequel Pro, which is a program that let's you connect and handle databases. More on that later on. When the installation progress is finished, start the program and press "Start servers". When the on/off-icon turns green, your webserver is up and running. Good job! Download Drupal Next step is to download Drupal. Go to and choose Download & Extend in the top menu on the page. The Download & Extend page is your first step to downloading Drupal, themes and modules (plugins to Drupal). Is this case we just want to download Drupal, so click the green button. Next up, you get the choice to download different versions of Drupal, but we want the latest version. When we made this screencast the latest version was 8.0.0-rc1, but when you read/watch this, you should just choose the latest version of Drupal, which begins with and 8 (for example: 8.0.0, 8.0.1, 8.1.x etc and so on). The download file (.tar.gz och .zip) ends up in your Downloads-folder (see above). Doubleclick it to extract the files. Get ALL the files, not just the ones you see This is a bit tricky. To make Drupal work, you need all the files you've just extracted. The problem is that some of the files are hidden, and by default Macintosh computers don't show hidden files. There are programs that let you see hidden files, but you can also make the magic happen by writing a simple command in the Terminal program. Click your Spotlight magnifying glass-icon on your computer or open up a Spotlight search via your keyboard (most likely cmd+space) and type in Terminal. Terminal is a terminal emulator included in the OS X operating system by Apple (Wikipedia), and from that you can list files, create folders etc. In short, you can do almost anything you can to in i Finder window - but more. And to make hidden files be visible you open up a terminal windows and type defaults write AppleShowAllFiles YES Press Enter and on the next line, write killall Finder This sound horrifying, but it's ok, it doesn't kill something you're attached to (your kitten, your parents or your favourite snack or slippers). It just restarts the Finder application on Mac.  By now, if you open the folder the the extracted Drupal files are located in, you should see some files that are halfway see-through. These are the hidden files. Not to hidden now, ey?! Good. Now on to the next step of fun and glory! Choose the web docs folder We need to place the Drupal files in a folder that MAMP can use. If you swich to your MAMP window and press Preferences you can see four tabs: Start/Stop, Ports, PHP and Web server. Click the Web server tab. Here you can see where MAMP will look for the files to execute (run) Drupal. You can choose a completely different folder if you want, but I recommend you to use the folder MAMP suggests which is: Your harddrive > Application > MAMP > htdocs If you click the round icon with an arrow you open up a Finder window that shows the content of the folder we want to use. Let's move all the files Now that we can see all the files, even the hidden ones, we can choose all the files and either drag'n'drop them in the htdocs-folder we just opened.  Choose the Drupalfiles and press cmd+C if you want to copy the files, or drag the files and the folders to the htdocs folder. If you chose to copy and paste the files, just click somewhere in the htdocs window and press cmd+V to paste the copied files into that folder. It should end up looking something like this: Create a database You also need a database for Drupal to work. The database is where your content is stored, at least the text you enter as a blog post or story on your website. (Files you upload doesn't end up in the database, they are stored on the computer's hard drive.) To create a database you can use a program called Sequel Pro, that ships with MAMP. Open up the MAMP applications folder or start Sequel Pro via your Spotlight. Create a connection to the database by entering this information in this way: By default MAMP has set both the Username and Password to root. You also need to enter the port, which in MAMPs case is 8889. You can find this information under the tab named Ports, under MAMP Preferences. Back to Sequel Pro and press the blue button named Connect. If you have entered everything correct you will get connected to the database server. You should see a rather blank window like this. Choose Database in the menu and then Add database.  Choose a name that's easy to remember, for example drupal.  Choose UTF-8 Unicode (utf8) as Database Encoding. End this strange thing by clicking the button named Add. "Are we there yet?" Yes, yes we are. The next step is actually to start the installation of Drupal. Switch to your web browser and enter http://localhost:8888. This instructs MAMP to search the htdocs folder (where you have placed the Drupal files) and see what's there. MAMP will find Drupal's index.php that instructs Drupal to start an installation since we haven't don't that yet. http://localhost:8888 will result in this webpage: If you want some other language than English, you can choose this at this start screen. Language files will automatically load from Drupal's servers and set the default language to whatever you choose. Press Save and continue. Installations profiles Drupal can use installation profiles to make different settings to you system. In this screencast we will only use the standard one, so just click Save and continue during this phase. We will cover installation profiles in a later screencast. Database configuration Now it's time to tell Drupal where to find the database. The only things we need are the name of the database, the database username and password. We have all that so lets type them in. Database name: drupal (we entered that when we created the database earlier) Database username: root (MAMP default) Database password: root (MAMP default) Click Save and continue. Time to configure your site When you have entered the database credentials the installation starts. This will take a minute or so depending on how fast your computer is. It could also take up top 5-10 minutes if you have an older computer. During the installation process Drupal enables all the different parts of Drupal (modules) and sets up the system to make it work. We will cover the different parts in upcoming screencasts. When you see this the installation process is almost finished and it is now time to create your admin account and set the title of your website. Choose some classy and nice information for the following fields: Site name Site email address Username (this will be the first user account, the user/1 account, the head honcho, the big kahuna... you get the picure) Password (password for the big kahuna account, see above) Email address (for the big kahuna account, see above) Default county Default time zone You can also check for updates automatically. This will instruct Drupal to scan to see if there has are any new versions of Drupal and the modules you have downloaded and enabled. Good to know, but not vital if you are just playing around on your local computer. When you go live with your site, you should really see to it to keep your installation updated and secure. That's it! You are done. Drupal is installed and you can begin your Columbus-like journey through the menues and structure of Drupal. In the left part of the website you have the option to create content. Choose to create an Article for example and see what happens. We will make more screencasts on Drupal to make you discover more of Drupal. Check us out on Twitter, our RSS feed or YouTube channel to get continuous updates. Take care!
Read more
Categories: Drupal

ERPAL: How to sell Drupal support with value

17 November 2015 - 4:03am

Selling support is not so easy. Mostly you end up with agreements such as getting paid only if there’s a support request. If you want to provide reliable support with a well-defined response time, you need to allocate resources constantly, and that's why you need to get paid separately for the response time.

In this second post of our business support series I'll present you different kinds of support teams and pick up their pros and cons. Read more

Categories: Drupal

Sooper Drupal Themes: How To Improve Your Drupal Site's Traffic Using Google Search Console

17 November 2015 - 1:51am

As webmaster or owner of a Drupal website, it’s common practice to look out for new customers. It is also crucial to understand how prospective customers behave when they come to visit your website, and this is possible with the help of Google Analytics. Unfortunately Drupal site owners often fail to see the importance of their websites being properly crawled or indexed by Google. Now, Google has made things easier for businesses with Google Search Console (formerly webmaster tools) by directly communicating with website owners in order to help them get important information.

Google Search Console may not come with the trendiest user interface, but there’s more raw data in there than colorful charts and graphs. Using the system will help you improve your Drupal site's ranking in the Search Engine Results Pages (SERPs) if you take some time to learn how it works.

Let us now try to understand how GSC can help grow your business.

Why Use Google Search Console (GSC)?

Google Search Console is free if you have a Google account. It automatically opens a two-way communication channel between your website and Google. Search Console can help you monitor, maintain, and improve your website presence in Google’s search results. More specifically, once you log into Google Search Console, you will be able to see what search queries are tied to your business and where you could improve your website ranking. You will also be able to manage your website sitemaps, indexing of links, besides determining what Googlebot should be crawling and indexing content from your website.

How to Set Up GSC?

Setting up Google Search Console for your website is simple and easy. If you already have an account, look for it under Search Console. You just have to follow 3 simple steps:

Categories: Drupal

X-Team: Drupal 8: Finally Ready for Production

17 November 2015 - 12:37am

It’s been awhile since Drupal 8 was first ready to try out. But even since then, I was checking out news, reading updated docs, working on my Drupal 7 projects… still waiting for something real. And it finally happened – during the keynote at DrupalCon Barcelona, Dries announced the first D8 release candidate and basically...

The post Drupal 8: Finally Ready for Production appeared first on X-Team.

Categories: Drupal

Four Kitchens: Austin's Drupal 8 Launch Party Here we come!

16 November 2015 - 6:36pm

Join us and the rest of the Austin community for a well-deserved par-tay! We have quite the party planned: including BBQ, a cake, a pinata and even a raffle.

Categories: Drupal

Drupal @ Penn State: Cache warming authenticated sites with XMLRPC

16 November 2015 - 12:56pm

This video talks through how XMLRPC Page Load and HTTPRL Spider can be used to warm caches on private / authenticated sites. XMLRPC Page Load provides a callback that tricks Drupal into thinking that it’s delivering a page to certain user account. It does this by simulating page delivery but then never actually writing the output anywhere.

Categories: Drupal

Drupal @ Penn State: The future of Drupal under the hood

16 November 2015 - 12:56pm

I’m in the middle of several Drupal Camp / Con’s (any event over 1000 people is no longer a “Camp” but that’s for another time) and it’s occured to me: I can no longer learn by going. Now, this is learn in the traditional sense of what I used to go to Camps for (been coming to camps for 8 years now).

Categories: Drupal

Chromatic: TheaterMania: Lessons Learned on Localization

16 November 2015 - 12:28pm

We recently launched a new site for an existing client, TheaterMania. We helped launch and currently maintain and develop The Gold Club, which is a subscription-based discount theater club in New York City. The new site is the same thing, but in London – same language, same codebase, new database, different servers. We only had to migrate users, which were already exported for us, so nothing exceptional there. Shouldn’t be a big deal, right? We learned that’s not always the case.

Architectural Decisions

One of our first problems, besides the obvious localization issues (currency, date formats, language), was to decide what we were shipping. Were we just building another site? Were we packaging software? There will most likely be more sites in other cities in the future – how far did we want to go in terms of making this a product that we could ship? In the end, we wound up going somewhere in the middle. We had to decide initially if we would use Organic Groups to have one site with multiple “clubs,” one Drupal multisite installation, or multiple Drupal installations. The final decision was to combine the latter two choices – we created multisite-style directories so that if we need to take the site in a multi-site direction, we can easily do that. The sites each have a site-specific settings file, full of various configuration variables.

Now that the site has been launched, we’re not sure if this list of variables will be developer-friendly moving forward, and have been keeping in mind that we may want a more elegant solution for this. The best part about this setup is that we have one codebase, one master branch, and each site is configured to use the appropriate settings. The most important thing is that this is all very thoroughly documented, both in the code, README files, and the repo wiki.

Currency & Recurly: Easier than Expected

One of the issues I thought would be very problematic was currency, but that wasn’t actually an issue. All of the existing transactions are set up in cents – ie, 100 instead of 1.00 for a dollar, and that translates perfectly from dollars to pounds. We use Recurly, an external payment and subscription processor, so we didn’t have to worry about any localization issues on that front. Most of the currency abstractions I did were to remove any hard-coded references to the dollar sign, and create functions and variables to get the appropriate currency symbol.

Dealing with Dates; Ugh.

Date formats were something I expected to be easy, but that wound up being more complex. I discovered hook_date_combo_process_alter() to change the display of the date in calendar popup fields. This made what I’d thought was going to be a difficult series of view handlers really simple. We have several fields using the date combo box on both content types and entities, and this function took care of them.

* Implements hook_date_combo_process_alter().
* Changes the date format.
function gc_display_date_combo_process_alter(&$element, &$form_state, $context) {
  if (isset($element['#entity']->type)) {
    switch ($element['#entity']->type) {
      case 'event':
        $element['value']['#date_format'] = variable_get('date_format_short');

      case 'partner':
        $element['value']['#date_format'] = variable_get('date_format_short');
        $element['value2']['#date_format'] = variable_get('date_format_short');

      case 'promo_offer':
        $element['value']['#date_format'] = variable_get('date_format_short');
        $element['value2']['#date_format'] = variable_get('date_format_short');

  elseif (isset($element['#entity']->field_name)) {
    if ($element['value']['#instance']['widget']['type']  'date_popup' && $element['#entity']->field_name  'field_user_csr_notes') {
      $element['value']['#date_format'] = variable_get('date_format_short');

I took the dozen or so existing date formats from Drupal, altered some of them to meet our needs, and added a few more. My head also started spinning when testing because I’m so used to M/D/Y formats that D/M/Y formats look really strange after a while, especially because code changes needed to be tested on the US and UK sites, so I had to be really careful when visually testing a page to make sure that a US page was showing 9/1/15 and the UK page was showing 1/9/15. In the future, I’d definitely advocate for a testing suite on a project like this. Overall, making sure all of the dates were changed was somewhat tedious, but not difficult. It required a lot of attention to detail and familiarity with PHP date formats, and vigorous testing by the whole team to make sure nothing had been missed.

Proper Use of t() Early == Wins Later

This project made me extremely grateful for the t() function. Since both sites were in English, we didn’t have a need for site-wide translation, but we did need to localize a handful of strings, both for language issues (words like ‘personalize’ vs ‘personalise’), and the general language preference of the stakeholders. It was easy enough to find the strings and list them in locale_custom_strings_en to switch them out. One gotcha we came across that I wasn’t familiar with – you cannot use t() in your settings files. The function isn’t available at that point in the bootstrapping. You can use get_t(), but we opted to remove the translation strings from any variables and make sure that t() was used when the variable was called. This wasn’t something I had run into before, and it caused some problems before we figured it out.


A few tricky miscellaneous problems cropped up, too. There was a geolocation function enabled in Recurly, which was defaulting to the US and we were unable to change the settings – we also didn’t realize this when testing in the US, and we scratched our heads when the London team told us the field was defaulting to US until we came across the culprit. We were able to fix it, and put in a patch for the library causing the issue.

I also realized how many various settings default to the US when working on this project – a lot of the location-related work was just abstracting out country defaults. Something to keep in mind if you’re working on a project with locations. Don’t make more work for developers who live or work on projects outside of the US. Plan for the future! Assume nothing!

Looking Back

I’m really glad that I worked on this project, because it’s made me develop with a better eye for abstraction of all kinds, and making sure that it’s easy for developers or users to work with my code anywhere. In the future, I’d put more thought into managing our configurations from the start, as well as automating the testing process, both for time-saving and better QA.

If you’ve ever worked on a site with challenges like these, I’d love to hear how you handled them! What are your best practices for managing custom locale strings and other site-specific variables? To what extent do you abstract things like dates and currency when developing a site, even when you don’t know if those will ever change?

Categories: Drupal

Acquia Developer Center Blog: Open Sourcing Statsgod, a StatsD Implementation In Go

16 November 2015 - 12:10pm
Kevin Hankens

Acquia Engineering is excited to be open-sourcing Statsgod, a reimplementation of StatsD we created internally to help scale our metrics collection effort.

Acquia developers often create tooling to build, deploy, and monitor applications we run on Amazon Web Services, and Statsgod is one such tool that we want to make publicly available. Statsgod was designed to be highly scalable and easily deployed.

Tags: acquia drupal planet
Categories: Drupal

DrupalOnWindows: Exposing reverse entity reference fields in Drupal

16 November 2015 - 11:55am
Language English

Entity references in Drupal is the mechanism used to do some "proper" (sorry for the quotes but what you can achieve with Drupal is years behind a real ORM such as the Entity Framework in terms of usability, reliability, flexibility and overal quality) data modeling without having to write everything from scratch including queries, widgets and storage. 

More articles...
Categories: Drupal

Pantheon Blog: Better Behavior-Driven Development on Remote Servers

16 November 2015 - 9:48am
Behavior-Driven Development is a widely-used testing methodology that is used to describe functional tests—that is, tests that operate on the whole of a system—in natural, readable language called Gherkin syntax. The goal of this methodology is to make the contents of the tests approachable to non-technical stakeholders. This makes it possible for a project’s functional tests to be meaningfully used as the acceptance criteria for the product.
Categories: Drupal

Red Route: How to add classes to links in Drupal 8

16 November 2015 - 8:48am

As I start porting the modules I maintain to Drupal 8, I'm hitting a few places where things haven't been intuitive to me. I'll try to work on the documentation when I get a chance, but in the meantime I figured it would be worth writing up a few notes.

A common task is creating a link, and adding classes and other attributes to it. The Responsive Share Buttons is basically just a block of links to social networks, so this was a key building block.

In Drupal 7 this was pretty simple - the link building function took three arguments - a title, a path, and an array of options:

$link = l(t('Link Title'), '', array(
  'attributes' => array(
    'class' => array(

In Drupal 8, the l function now takes a Url object with attributes, rather than a string, so it's a little different. Here's how to build a link to an external URL and add a class to it: First the Url class needs to be brought into scope:

use Drupal\Core\Url;

And then you can build the Url object and call setOptions on it:

$url = Url::fromUri('');
$link_options = array(
  'attributes' => array(
    'class' => array(
$link = \Drupal::l(t('Link title'), $url);

Incidentally, the other gotcha here that had me scratching my head for a while was how to get the current page title, and how to get the current URL. Drupal 7 had easily accessible functions for these tasks, but the object-oriented approach

Drupal 7 $title = drupal_get_title();
$current_url = url(current_path(), array('absolute' => TRUE)); Drupal 8 $request = \Drupal::request();
$route_match = \Drupal::routeMatch();
$title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());
$current_url = $request->getUri();

My own learning journey with Drupal 8 is very much in its early days, and a lot of the old Drupalisms are pretty familiar to me, but it does seem a little long-winded. Give it a while, and I'm sure I'll get up to speed, and start seeing the benefits of the object-oriented approach in Drupal 8.

Tags: Drupaldrupal 8
Categories: Drupal

Zivtech: oEmbed in Drupal: Embed all the things!

16 November 2015 - 8:44am

​WordPress has great support for oEmbed, allowing content creators to paste in URLs that are automatically displayed as rich embedded content. You may also be familiar with similar behavior on Facebook and in chat services like Slack. Meanwhile in Drupal 7, most sites are using Media module with their WYSIWYG and are able to (with some effort) embed from certain providers. In Drupal 8, we finally have WYSIWYG in core, but no solution for adding videos and other embedded content. How can we have the ease of use of Wordpress for embedding 3rd party content?

oEmbed Module

The Drupal oEmbed module, despite its humble project description, works nicely, and can easily give you a similar experience as you get in Wordpress. I recommend signing up for an account with the service, and setting the cache lifetime high in the oEmbed module settings. This gives you access to a large number of oEmbed providers and for many sites if you use a high cache lifetime you can stay within the free usage tier. OEmbed module gives you the option of using an input filter to turn URLs in your textareas into embeds, or you can use oEmbed Field submodule, which allows you to add link fields and use an oEmbed display formatter.

Asset Module: How are you so awesome and so overlooked?

The ability to use oEmbed in a field got me thinking about one of my favorite (and highly underrated) modules: Asset module. Asset module is essentially an alternative to the widely-used Media module (Scald is a third option in this space). While Media currently boasts 262,680 site installs, Asset is used by a humble 1,167. Drupalers are often advised that a good way to tell which module is the best when choosing between similar modules is to pick based on usage statistics and how much active development is occurring. Unfortunately, this is not foolproof advice: beware echo chambers.

If you've worked with Media module much (disclaimer: I was involved in early stages of Media module architecture and development), you're probably familiar with some of its flaws: an ever-changing variety of complex bugs on its 2.x branch, complicated relationship between Media and File Entity configurations, no straightforward method to add captions to images, multiple dialogs to click through just to add an image, bugs when you disable and re-enable rich text, and difficulty editing items after you add them to the WYSIWYG, to name a few.

Asset module in contrast has a lovely UI, provides common features out of the box (add an image to the WYSIWYG with working captions and right/left alignment), is simple to configure and use, relatively bug-free, and stable. It provides many of the same features as Media, like a library of reusable media assets you can add to a WYSIWYG or display in Views and the ability to add your own fielded bundles for various types of assets. In addition Asset module lets you pick your own WYSIWYG button icons and have a separate button in your WYSIWYG for each type of asset (image, video, document) and unlike Media module it is not directly tied to files. This means you can create Asset types for reusable, centrally-managed structured content that are not file-based at all. I like to make Asset types for things like Addresses and Calls to Action which authors can use within their WYSIWYG. You can quickly explore the wonders of Asset module on its demo site - make sure in addition to the WYSIWYG buttons you try out the 'Asset Widget' on the right side of the content creation page and see how you can drag existing assets into not only textareas but also entityreference fields.

oEmbed with Asset Module

What does this have to do with oEmbed? Well, guess what happens if you add a new Asset type with a link field you set to display as oEmbed? Yup, now you have an Embed button on your WYSIWYG that lets your authors paste in a URL from any of those services, or reuse embeds they've already added to their Asset library. No more adding separate modules to be able to integrate with YouTube, Vimeo, and more. In fact, now we have a better user experience than WordPress! The embeds even show up already rendered right in your WYSIWYG.

Here are some examples of embeds I can put into this WYSIWYG (content from myself and my old band from around the internet):

A song on Rdio

A video on YouTube

A tweet

.@tizzo at work

— Jody Hamilton (@JodyHamilton) June 28, 2015

A photo on Flickr

A LinkedIn user

A Github gist

A JibJab

Editor Experience

Want to see how it looks in my WYSIWYG? Let me embed a screenshot with my Asset image button!

My WYSIWYG right now... Like my caption?

The buttons on the right in my WYSIWYG are for Assets. I have a Document, Image, 'Call to Action', and then Embed Asset Types, followed by the Search button that lets me use my Asset library. By the way, the 'Call to Action' is just a link field that outputs like:

Get Asset Module!

When I press the Embed button, I embed an asset like

To add an embed, just paste in a URL. Note you pick your Asset button - here I'm using a heart because I heart this setup. You can also add your own icons (patch in the queue).

Please tune in for Part 2 of this series on how to set this up on your Drupal 7 site and Part 3: Embedding in Drupal 8.

Terms: Publishing Workflow Ready for Publishing
Categories: Drupal

Drupal Camp NJ 2015: Announcing Mike Anello as the Keynote for DrupalCamp NJ 2016!

16 November 2015 - 8:35am

Mike Anello (@ultimike) is co-founder and vice president of DrupalEasy, a

Categories: Drupal

Pronovix: Retooling on Drupal 8: free training materials

16 November 2015 - 7:55am

We are working on a set of free training materials for Drupal 8. To make sure we build something that others will be able to reuse we would like to get your input on the kind of trainings you would like to use to retrain your team.

Categories: Drupal

about seo