YouTube Field 7.x-1.7 and 8.x-1.0-beta3 Released!

Posted by Chromatic on July 29, 2016 at 8:16pm

We're happy to announce two new releases for the YouTube Field module:

Improvements include:

Once again, it was a community effort. The module has now given credit attribution to 28 different people. A number of them have been the community member's first attributed commit! Not to mention, endless others have contributed in the issue queue. Thanks to their help, the module has now reached over 30,000 installs. That's enough to land in the top 200!

Why the "beta" label on the 8.x release?

The 7.x-1.x module includes Colorbox support, but that support has not yet been ported to the 8.x-1.x branch. We'd love help with that! We're planning on removing the "beta" label once that support is committed. The rest of the module is a direct port of 7.x-1.x and it already reports a healthy number of installs.

How else can I help?

Hop in the issue queue and have a look at the outstanding issues for either branch. As previously mentioned, any and all contributions are greatly appreciated!

Real Time Government Personalization

Posted by FFW Agency on July 29, 2016 at 7:10pm
Real Time Government Personalization Ray Saltini Fri, 07/29/2016 - 19:10

We got a great response to our Real-Time Personalization Strategies for Government Websites session at Drupal GovCon last week. Most of the questions we received were from representatives of agencies just beginning to explore their options who wanted to know how to get started and to begin to understand how other agencies have started using personalization.

So together with other staff here at FFW we’ve begun to put together a library of personalization use cases. If you work with a government agency or quasi-public authority send us your examples so we can share our findings with your colleagues.

In the meantime we’re making our presentation slides available as a guide to personalization basics for government agencies. Once again I’d like to acknowledge my colleague Dave Sawyer for his excellent work on this topic. Feel free to contact me directly with questions at ray.saltini@ffwagency.com.

For those of you just tuning in, web personalization allows content to be tailored to the interests of the visitor, resulting in increased engagement and better experiences. Personalized content is essential to an effective digital communications strategy, but planning and implementing a personalization solution can be complex and cost prohibitive. 

This guide introduces the basics of web personalization and presents several simple ways for government agencies to get started with web personalization using Drupal. It includes:

    •    An overview of common personalization use cases
    •    A checklist of prerequisites for implementing personalization on a Drupal project
    •    How personalization for authenticated users differs from that of anonymous visitors
    •    Special privacy considerations
    •    Why Drupal is the best CMS to execute a personalization strategy

Click on the personalization tag for more information on this topic.
 

Laptop and notes Tagged with Comments

Setting higher standards for corporate contributions to Drupal

Posted by Dries Buytaert on July 29, 2016 at 4:46pm

Last week I made a comment on Twitter that I'd like to see Pantheon contribute more to Drupal core. I wrote that in response to the announcement that Pantheon has raised a $30 million Series C. Pantheon has now raised $50 to $60 million dollars of working capital (depending on Industry Ventures' $8.5M) and is in a special class of companies. This is an amazing milestone. Though it wasn't meant that way, Pantheon and Acquia compete for business and my Tweet could be read as a cheap attack on a competitor, and so it resulted in a fair amount of criticism. Admittedly, Pantheon was neither the best nor the only example to single out. There are many companies that don't contribute to Drupal at all – and Pantheon does contribute to Drupal in a variety of ways such as sponsoring events and supporting the development of contributed modules. In hindsight, I recognize that my tweet was not one of my best, and for that I apologize.

Having said that, I'd like to reiterate something I've said before, in my remarks at DrupalCon Amsterdam and many times on this blog: I would like to see more companies contribute more to Drupal core – with the emphasis on "core". Drupal is now relied upon by many, and needs a strong base of commercial contributors. We have to build Drupal together. We need a bigger and more diverse base of organizations taking on both leadership and contribution.

Contribution to Drupal core is the most important type of contribution in terms of the impact it can make. It touches every aspect of Drupal and all users who depend on it. Long-term and full-time contribution to core is not within everyone's reach. It typically requires larger investment due to a variety of things: the complexity of the problems we are solving, our need for stringent security and the importance of having a rigorous review-process. So much is riding on Drupal for all of us today. While every module, theme, event and display of goodwill in our community is essential, contributions to core are quite possibly the hardest and most thankless, but also the most rewarding of all when it comes to Drupal's overall progress and success.

I believe we should have different expectations for different organizations based on their maturity, their funding, their profitability, how strategic Drupal is for them, etc. For example, sponsoring code sprints is an important form of contribution for small or mid-sized organizations. But for any organization that makes millions of dollars with Drupal, I would hope for more.

The real question that we have to answer is this: at what point should an organization meaningfully contribute to Drupal core? Some may say "never", and that is their Open Source right. But as Drupal's project lead it is also my right and responsibility to encourage those who benefit from Drupal to give back. It should not be taboo for our community to question organizations that don't pull their weight, or choose not to contribute at all.

For me, committing my workdays and nights to Drupal isn't the exhausting part of my job. It's dealing with criticism that comes from false or incomplete information, or tackling differences in ideals and beliefs. I've learned not to sweat the small stuff, but it's on important topics like giving back that my emotions and communication skills get tested. I will not apologize for encouraging organizations to contribute to Drupal core. It's a really important topic and one that I'm very passionate about. I feel good knowing that I'm pushing these conversations from inside the arena rather than from the sidelines, and for the benefit of the Drupal project at large.

How to Invest in Your Employees

Posted by Zivtech on July 29, 2016 at 1:05pm
Training as an Investment
When you start with untrained staffers, they are not billing very many hours, and they’re also taking a lot of time from people who would be billing.

You're constantly having this feeling of, "Oh God, I don't have time to help you. I have to get my work done." You have to fight that and say, "Do you know what? Helping you is more important than getting my work done." Getting work done is short-term money. Teaching someone is long-term. You have to find the balance because you have to keep the money coming in, but everyone on your team must understand that training people up is the highest priority.

It's not just a distraction slowing you down from getting your work done. It is the whole future of the company. On-Ramps to Success
We found a lot of different ways that we can have employees bill and learn as they are gaining experience.

One way is quality assurance, or QA. Having staff perform testing gets them in the mix of the whole project. They are moving through the tickets; they are testing everything. They are passing things up to the client.

Documentation is another task that we can have less experienced people tackle. We're lucky enough to have a client now that comes to us just for technical documentation, and writing technical documentation is something that a smart, logical, technical, college educated person can do without five years of development experience. In the process they are learning.

We have them make training materials. You don't have to be an expert to write automated tests. In the process, you get a lot more involved in the mix of a software project.

Quality First
With all these brand new people, how do you make sure that quality remains high? I'm obsessed with quality; my worst nightmare is low quality work going out to our clients. But quality is all about process and communication. We’ve created review techniques that ensure junior staff members are safe to make mistakes. That review process provides constant feedback. People learn pretty quickly not to make the same mistake again.

Drupal 8 tools for meeting accessibility standards: the art of being modern

Posted by InternetDevels on July 29, 2016 at 12:00pm
 the art of being modern

Among Drupal 8’s many shiny features, the support for web accessibility standards shines particularly bright, although it is not immediately noticed by everyone. However, it’s noticed by the people with disabilities (visual or audial impairment, color blindness, difficulty controlling a mouse, etc.) who make up a large segment of web audiences.

Read more

Need to quickly roll back your Drupal database? Restore it with just one click

Posted by Blair Wadman on July 29, 2016 at 5:36am

With a click here, and a click there, it can be really easy to mess up a Drupal site, especially if you are fairly new to it. It doesn't have to be you, in the hands of your manager or client, they can end up breaking the site. Setting the correct permissions will help reduce the risk of this, but sometimes people want more permission than they really should have. And when the site owner comes to you and says - “I broke all the things!” - you immediately wonder when the last backup was. Are backups even running? How do I restore from a backup! Help!

Fix all the things with one click

But you don’t have to live in fear of a broken Drupal site. With just one click, you can quickly and easily restore your Drupal site to its former glory. As soon as your client or boss says "I broke all the things", you can say "I just fixed all the things!". They will be amazed at your Drupal harnessing powers.

The ability to restore your Drupal site with one click comes from the Backup and Migrate module. Once you have set it up, it is as easy as pie to use (read on for how to set it up).

Higher Education Notes and Trends for the Week of July 25, 2016

Posted by ImageX Media on July 28, 2016 at 10:10pm

Last week in higher education was all about technology impacting student outcomes and teaching methodology. This week, the buzz is around the almighty dollar. We’re seeing higher education become one of the focal points of the Democratic party’s 2016 U.S. Presidential election platform. We also found an interesting study that highlighted the usage of “open” textbooks and the impact they can have on student costs.

Did we mention higher education pays? Read on to learn more.

Around the Drupalverse with Enzo García

Posted by Lullabot on July 28, 2016 at 8:00pm
Matt & Mike talk with Eduardo "Enzo" García about his 18 country tour around the the world! We talk about various far-flung Drupal communities, motivations, challenges, and more.

Tips & tricks for Drupal and GIT

Posted by Don't Panic: A blog about Drupal on July 28, 2016 at 7:28pm
Keyboard

Ever since Drupal 7 I've used GIT to keep track of both my personal repos as the ones the company I work for manage. In short, I use GIT quite a lot. A colleague of mine use GIT to keep track of his computer setup so he easily can pull down his settings and .profile whenever he chooses to reinstall his computer or get a new one. I've heard of a guy (or girl, can't remember) who use GIT to keep track of all his documents. That seems a bit handful, but GIT is wonderful to keep track of the changes in your, for example, Drupal repo.

And even if I've used GIT for so long, I'm still learning new stuff about GIT and it makes my daily work even better and more streamlined. Below I'll share some of my discoveries when working with Drupal and GIT.

I've updated many modules, but I want to commit them one by one

I've done a total update perhaps, or anyway updated more than one module, but I want to make separate commits due to OCD or company guidelines, well as long as the module is located in it's own folder (which they are), that's no problem.

Example: I've updated two modules, Token and Metatag, and now I have a list of 40+ files which are listed as either modified, deleted or new. Instead of doing a total commit of them all, I simply add the folders, one by one, and do separate commits of them.

$ git add sites/modules/token
$ git commit -m "Updated Token module"
$ git add sites/modules/metatag
$ git commit -m "Updated Metatag module"

Two modules, nicely committed one by one. Now you can sleep without any OCD nightmares.

Add all files, but not all!

This is one of the latest I learned. Sometimes, when I update Drupal Core I want to add all files, but for some reason I want to exclude one or two files.

Example: I've updated Drupal core, which led to 60+ modified, deleted or new files but among them I have my settings.php and an updated module (let's choose Metatag again) that I want to exclude. I could do a separate git add for the module folder if I want, but perhaps I don't want to commit it at all, and that's where this comes in handy.

$ git add -A    // Add all the files
$ git reset -- sites/modules/metatag**     // "un-commits" the metatag module folder
$ git reset -- sites/default/settings.php    // "un-commits" the settings.php
$ git commit -m "Updated Drupal Core like a pro!"

I've made changes to a file, but want the original file back

This happens a lot. You try something out, go wild, and then suddenly want your original file back. No worries. Just use this to make the changes disappear and the original file will magically appear again.

git checkout [filename]

You can even make all the changes disappear, going back to square 1 on your repo.

git reset --hard

That command will not erase new files, though, so you might be standing with a bunch of new files that GIT won't ignore. You can either delete them, file by file, or you can use the following command to erase all the un-committed files:

git clean -d -x -f

There's changes in my file? What changes?

Sometimes when you upgrade a module or if you just come back to a project and you can't remember what you've done, there's a quick and easy way to see the differences in a file. If you do a git status and a file comes up as changed you can type git diff followed by the filename or complete path to the filename and you'll see the changes. If there are a lot of changes you might want to check out other ways of analyzing the changes. If you're using Sublime Text Editor I can recommend Git Gutter.

$ git status    // Lists all changed files
$ git diff .htaccess   // Shows the changes in the .htaccess-file

That's a few examples of what you can do with GIT, use it for. As I discover more, I'll write them down here so we can spread the knowledge.

Drupal Cache Case Study: Boosting Performance

Posted by Axelerant Blog on July 28, 2016 at 6:00pm
Drupal Cache Case Study

This Drupal cache case study began on a pleasant January afternoon in beautiful Goa. The entire company flew in for our annual retreat, enjoying the scenic beauty of the sandy beaches and the cool breeze. Between the fun times, we were ducking into our remote workspace, poring over a cachegrind report sent over by our client.

This report was generated for ajax responses coming from a product page on an e-commerce website. We could clearly see that the page was extremely slow to render and that this was true for all ajax responses.

 A Case Study

The Cachegrind report as sent by the client – Drupal Cache: A Case Study

Free Open Source Staffing Guide hbspt.forms.create({ portalId: '557351', formId: '0e484b0e-3475-47ed-b8f5-49fa6b4cacab' });

Progressive Doping:

Digging deeper to figure out what was causing the performance bottleneck, we use XDebug to generate cachegrind files, which we could then analyze to determine what functions were costing us the most, or where there were functional paths that could be truncated via caching. Performing this process iteratively we came up with a list of major pain areas. This list was very specific to our project.

  1. Function “get nid from product_id” was being frequently called with a resulting resource consuming data query.
  2. Function “hook_commerce_checkout_pane_info_alter” was being executing on each request.
  3. Product filtering for a particular type of user was a resource consuming activity
  4. Function “get product_id matching attributes” was being frequently called, with a resulting resource consuming query.
  5. The theme function “theme_extra_bundles_radio” was processing some resource consuming business logic.
  6. A lot of calls were made to the “entity_load” function.
Drupal Cache

It is a widely accepted fact that as great as the Drupal 7 core can be, it doesn’t scale well for Web sites with a lot of content and a lot of users. To extract the best performance under such scenarios, it’s necessary to make use of several strategies, tools, and techniques. Keeping this in mind, we settled down with the following strategies:

  • Basic Drupal caching:

Drupal offers basic performance settings at:

Administration > Configuration > Performance > Development > Performance (admin/config/development/performance)

Here we enabled block and page caching which cached the dynamic complex SQL queries of Drupal for quick retrieval of content. We also enabled the Compress cached pages, Aggregate and compress CSS files and Aggregate JavaScript files which further helped in bandwidth optimization by reducing the number of HTTP calls.

  • Panel Caching:

    We developed a custom ctools plugin to provide two extra options for panel cache methods.

    • Complex cache
    • Lineup/Dealership cache
Lineup/Dealership cache - Drupal Cache: A Case Study

Lineup/Dealership cache – Drupal Cache: A Case Study

You can also define your panel cache method for your particular use case and cache the panel content.  First, define a ctool plugin like:

<?php // Plugin definition. $plugin = array( 'title' => t("Example cache"),
  'description' => t('Provides a custom option to cache the panel content.'),
  'cache get' => 'my_module_cache_get_cache',
  'cache set' => 'my_module_cache_set_cache',
);

/**
 * Get cached content.
 */
function my_module_cache_get_cache($conf, $display, $args, $contexts, $pane = NULL) {
   $cache = cache_get(‘my_panel_data', 'cache_panels');
  if (!$cache) {
	return FALSE;
  }

  if ((time() - $cache->created) > $conf['lifetime']) {
	return FALSE;
  }

  return $cache->data;
}

/**
 * Set cached content.
 */
function my_module_cache_set_cache($conf, $content, $display, $args, $contexts, $pane = NULL)    {

      	cache_set('my_panel_data', $content, 'cache_panels');
}

?>
  • Custom caching:

After looking at few more cachegrind reports, we identified some custom functions that were causing a performance problem and thrashing the database to perform complex queries and expensive calculations every time a user viewed specific pages. This prompted  us to use Drupal’s built-in caching API’s

The rule is never to do something time-consuming twice if we can hold onto the result and reuse them. This can be depicted in a simple example:

<?php function my_module_function() { $data = &drupal_static(__FUNCTION__); if (!isset($data)) { // Here goes the complex and expensive calculations and populate $data // with the output of the calculations. } return $data; } ?>

The drupal_static function provides a temporary storage to functions for data that sticks around even after they are done executing. drupal_static adds the magic to this function. It returns an empty value on the first call and preserves the data on next call in the same request. That means our function now can determine if the variable is already populated or not. If it has been populated, it will return the value and skip the expensive calculations.

The static variable technique stores data for only a single page load. To overcome this situation Drupal cache API persists the cached data in a database. The Following code snippet illustrates the use of Drupal cache API

<!--?php function my_module_function() 	{   
$data 	= 	&drupal_static(__FUNCTION__);   	
if (!isset($data)) {
  $cache = cache_get('my_module_data', 'cache_my_module')
  if ($cache && time() < $cache->expire) { 
    $data = $cache--->data;
  }
  else {
    // Here goes the complex and expensive calculations and populate
   // $data with the output of the calculations.
   cache_set('my_module_data', $data, 'cache_my_module', time() + 360);
  }
}
return $data;
}
?>

This version of the function uses database caching. Drupal caching API provides three key functions –  cache_get(), cache_set() and cache_clear_all(). The initial check is made to the static variable, and then this function checks Drupal’s cache for data stored with a particular key. If data is found the $data is set to $cache->data.

If no cached version is found, the function performs the actual work to generate the data and saves it to the static variable at the same time which means that in the next call in the same request, it does not even need cache_get.

Finally, we get a slick little function that saves time whenever it can—first checking for an in-memory copy of the data, then checking the cache, and finally calculating it from scratch.

Conclusion:

After putting all these together, we were able to reduce the total number of functions call to 741 and the execution time reduced to 665ms. Hence we get the ~1500% of performance boost.

 A Case Study

Cachegrind Report Generated After Implementing Drupal Cache. – Drupal Cache: A Case Study

Want to learn how to set up RESTful Drupal Caching? Check this out. jQuery(document).ready(function() { var cta_579a5eee2ab2b = false; jQuery(document).scroll(function() { if ( typeof ga !== 'undefined' && typeof isScrolledIntoViewPort !== 'undefined' && jQuery.isFunction( isScrolledIntoViewPort) && isScrolledIntoViewPort('.cta_579a5eee2ab2b') && cta_579a5eee2ab2b == false ) { cta_579a5eee2ab2b = true; ga('send', 'event', 'cta-wide', 'view-how-to-set-up-drupal-restful-caching', 'Check this out'); } }); });

References:

This article was originally published in April 2015.

This article Drupal Cache Case Study: Boosting Performance by Abhishek Dhariwal first appeared on Axelerant - Axelerant: Expert Drupal Development, Support, & Staffing.

Drupal Association's 12 Month Focus

Posted by Drupal Association News on July 28, 2016 at 5:10pm

At the end of May, I shared how The Drupal Association went through some hard staffing reductions so we could better align our expenses with revenue, making the organization much more sustainable. While this is a challenging transition, it allows The Association to serve our mission long into the future.

Part of this transition includes deciding where to focus our smaller team and, unfortunately, identifying work we can no longer take on. I want to give transparency into these decisions so we can best set expectations and invite the community to take over programs and work efforts we can no longer do. 

Our Focus

Our mission is to unite the community to build and promote Drupal. As I mention in my blog post, now that Drupal 8 is out, our focus is to put more energy into the “Promote Drupal” portion of the mission.

We will do this by improving the adoption journey within Drupal.org and DrupalCon. By adoption journey, I’m referring to the decision making path someone takes to chose a new content management platform for their organization. These decision makers narrow their choice by talking to industry peers and service providers, reading analyst reports, and gathering information online and at conferences. When decision makers visit Drupal.org or attend DrupalCon as part of their fact finding mission, we want to make it easier for them to see that Drupal is the right choice. We will curate content that highlights the power of Drupal solutions, amplifies success stories, and connects the decision makers with Drupal service providers and industry peers. 

It’s important that we play our role in growing the number of organizations using Drupal because gaining more Drupal customers is good for the project. They employ Drupal developers, contribute back code, and provide financial support. Plus, highlighting Drupal successes on Drupal.org and at DrupalCon creates a rallying point for our community. Let’s celebrate the many amazing ways organizations are using our community-built software. 

I do want to point out that the community will still have the great resources they need to continue building and releasing the software. We will still level up developer skills and host large sprints at DrupalCon. And, Drupal.org will continue to provide the tools and resources the community needs to release new versions.

What we can’t do right now is invest in new ways to improve the contribution journey. By contribution journey, I am referring to the path a person takes to join the community online and in person, to collaborate with others and contribute code, documentation, camp organization, etc. So right now, we are not spending resources to improve this contribution journey. However, we are studying what improvements are needed so we can invest in them again as we become financially stronger.

As we serve our mission, we will also focus on strengthening The Association’s sustainability. Naturally aligning expenses with resources is the biggest step in that direction. Now we will focus on strengthening our financial health by prioritizing revenue-generating initiatives as thoughtfully as we can. We’re starting this effort by finding out how to add value to each segment of our community so we can update our programs, making them even more attractive for people and companies to invest in.

There are many segments that make up our community from the individual to the business community of Drupal Shops, hosting companies, and technology companies. Each segment funds our mission work by buying Drupalcon tickets and sponsorships, by becoming Members and Supporting Partners, finding talent on Drupal Jobs, and buying Drupal.org digital opportunities. We will talk with members in each of these segments and see how we can make these programs better and more valuable to them.

Plus, our community has grown over the years and we need to welcome newcomers and find out how we can provide them with value that they are willing to pay for. Specifically, system integrators like Tata Consultancy Services and WIPRO and digital agencies like WPP and Digitas are now using Drupal to build ambitious digital experiences for their clients. By interviewing these organizations throughout the summer and fall, we will have a much better understanding of how to best support these kinds of organizations.

More Details

While the details I provided above are high level, The Drupal Association staff are operating from a 12 month execution plan that includes roadmaps with milestones and metrics. As we selected the work in our roadmap, we applied three imperatives:

  • Strengthen our financial health: Simply put, we will thoughtfully prioritize revenue generating opportunities that rebuild our cash reserves so we are more stable and do this in ways that add value to the community.
  • Execute well: We are picking a few areas to focus on so we are able to deliver results and make an impact. We are using good old fashion project management best practices to properly scope work and get stakeholder input to make sure we set ourselves up for success.
  • Determine strategic direction for future planning: While we are heads down working on our execution plan for the next year, we need to know where to focus next to best serve the community. The Drupal Association board and staff will spend time this year determining that strategic direction.

We want to share details of the work we will do this year, but rather than make this blog post even longer with all of that detail, we will do a blog series from the Events, Engineering, MarComm, Revenue, and Operations departments.

Each department will explain what their focus is in more detail and it will explain what work we are not able to do given our smaller size. Plus, we will highlight where community members can get involved to take on the work we can no longer do. If you are interested in volunteering your time to work on community programs, please contact me. We would love to work with you!

About Megan

As the Executive Director of The Drupal Association, I am inspired by the community values of kindness, collaboration, learning, and doing our best. The Drupal community is a bright spot in a complex world and I am personally motivated to protect its health and longevity.

Outside of work, you can find me exploring nature with my family and friends or working out with my bootcamp squad doing 100 burpees in the 100℉ / 38℃ heat of Tucson, Arizona, USA.

How Marketers Use Drupal’s AMP Module to Improve Google Search Rankings

Posted by Ben's SEO Blog on July 28, 2016 at 4:00pm

Mobile users are not patient! More than 71% of mobile users delete emails immediately that don’t render well on a mobile device, 74% will only wait 5 seconds for a web page to load on their mobile device before abandoning the site—and nearly half won’t return.

Not only is mobile responsiveness important for your customers’ experience, it is important for Google search rankings as well. Google favors sites that are mobile-friendly and fast. In fact, they are backing the Accelerated Mobile Pages (AMP) project to help websites become optimized across all devices. Drupal’s AMP module delivers pages that comply with the AMP standard and drastically improves the performance of mobile content.

What Marketers Should Know about Drupal AMP to Sound Smart

The Accelerated Mobile Pages (AMP) project is an open source initiative that allows content to be optimized for mobile once and loaded instantly everywhere. AMP is a way to build web pages for static content that render quickly for mobile devices. It includes HTML standards, custom tags, and cache for building rich content with reliable performance and fast page loading speed.

The Drupal AMP module converts Drupal pages to comply with the AMP standard. It provides special AMP formatters for text, image, and video fields. It includes:

  • AMP Theme which produces the specific markup that the AMP HTML standard requires. It works just like any other Drupal theme with flexibility and customization on page displays and can place AMP ad blocks.
     
  • AMP PHP Library which analyzes the HTML entered by users and makes corrections, where possible, to make it compliant with AMP HTML. It automatically converts images, iframes, Tweets, Instagram, and YouTube HTML into their AMP HTML equivalents.
Use Drupal AMP to speed up your site's mobile load times and improve overall SEOWhat Marketers REALLY Need to Know about Drupal AMP

So why should a marketer care about Drupal AMP?

AMP web pages are fast. Using AMP HTML makes the web fast with smart caching, predictable performance, and modern, beautiful mobile content. When Pinterest tested publisher AMP pages in their iOS and Android apps, they found that AMP pages loaded four times faster and used eight times less data than traditional mobile-optimized pages. Because it increases page loading speed, it is likely to provide a ranking boost. While AMP isn’t the only way to improve page speed, it is one way that Google recognizes and supports.

Advertisements are more effective. Businesses using AMP ads are seeing greater revenue. According to ampproject.org:

  • 80% of publishers are realizing higher viewability rates
  • 90% of publishers are driving greater engagement with higher CTRs
  • The majority of publishers are seeing higher eCPMs

Google favors AMP pages. Google began integrating AMP pages into its search engine in February. For mobile results, Google is holding the News carousel (with AMP content) above-the-fold—which means organic search results are pushed down, resulting in fewer clicks, impressions, and click-through-rate, which, in return, affects SEO rankings.

AMP pages will help improve SEO. Google has made it clear that mobile-responsiveness and page speed are important for high search engine rankings. Some speculate that AMP pages will automatically get a “fast” label designation. In the future, AMP may even become a ranking signal. If you have news-type content or blogs, you can expect to see better rankings when you use the Drupal AMP module.

The Drupal AMP module is an important addition if you are looking to improve your Drupal SEO efforts. If you would like to be sure your website is following all of the latest practices for high Google rankings, check out our Drupal SEO services and give us a call at (512) 989-2945.

Why AMP is Important for the Marketerdrupal 8, drupal marketing, drupal seo, Planet Drupal

How to Print Variables using Kint in Drupal 8

Posted by Web Wash on July 28, 2016 at 11:10am

While developing a module or modifying a template in Drupal you'll often print variables, especially if you're in a preprocess hook.

You learn early on how to use var_dump and print_r function. But these functions can sometimes display too much information and can be hard to filter through the arrays or methods in the variable.

In Drupal 7, with the Devel module, you could use the dpm or dsm function. When used, these functions will print variables at the top of the page or in the message area using Krumo.

Now in Drupal 8, Devel has adopted a new library to print variables and it's called Kint.

World-wide and World-class Drupal Training

Posted by DrupalEasy on July 28, 2016 at 10:52am

DrupalEasy training globe image DrupalEasy is proud to announce another cavalcade of training events in the coming months, both online and in-person. We have numerous opportunities for you to take advantage of our proven Drupal 8 module and theme development courses as well as our flagship technical education program for those seeking comprehensive training to become developers; the 12-week Drupal Career Online.

The primary instructor for all courses is Mike Anello (ultimike), an expert instructor and experienced, practicing Drupal developer. All DrupalEasy training is taught by only expert developers to ensure that lessons are taught accurately, reflect best practices, and draw on how real-world Drupal sites are built. Mike has been active in the Drupal community for over 10 years, is a core contributor, a Drupal Association member, and one of the leaders of the Florida Drupal Users' Group.

12-Weeks of Career Training
Drupal Career Online starts on September 26, and runs every Monday and Wednesday afternoon from 1-4:30pm EDT. In addition, there is a 4-hour co-working lab, which is scheduled by the students. Class is held online using GoToMeeting, and use of webcams and microphones keeps the classes highly interactive, with instructor and student-led demos and discussions. The live online classes are supplemented with reference and lesson-guide handouts, as well as screencasts that cover each and every lesson. Each student is assisted by a community mentor to help kickstart their personal Drupal network. Our goal is to provide the most holistic, sanely-paced, best-practice-focused, long-form Drupal course in the world.

Interested in learning more about 12-week Drupal Career Online course? We are offering two free Taste of Drupal webinars that outline the entire course, set expectations, and give potential students the opportunity to ask questions. Past students have included Drupal newbies, hobbyists, and content admins looking to learn how to become full-fledged Drupal developers.

5 Options for D8 Theme and Module Development

First, if you're headed to DrupalCon Dublin, we're excited to announce that we've been selected to be one of the official training providers! We'll be offering our Introduction to Drupal 8 Module Development workshop live, and in-person. You'll learn through our stellar curriculum, and have follow-on access to all of the handouts and screencasts, with the added bonus of the synergy (yes, we just used that word) of a live classroom.

We're also offering the popular Introduction to D8 Module Development online, as well as our Introduction to D8 Theme Development workshops (https://www.drupaleasy.com/training/workshops/upcoming) multiple times in August and September. The module development workshop is 8 hours, split over two half-days, and teaches the fundamental concepts of Drupal 8 module development, including using Drupal Console as an aid for module development. Our theme development workshop is 12 hours long, split over three half-days. This super-sized workshop teaches the fundamental concepts of Drupal 8 theme development including building template files with Twig, creating custom subthemes (using Bootstrap as the base theme), and setting up a professional-level front-end development toolchain using Node.js and Gulp. Both of these courses include a live instructor, PDF handouts, and screencasts for all in-class examples.

We are committed to providing the highest quality Drupal talent development, from beginner to advanced programs; which is why our trainings work. We've taught the 12-week DCO ten times (including twice as part of Acquia U) and our 1 and 1.5 day workshops always get great reviews, just see what our graduates have to say!

Efficient Drupal / PHP development on Windows using cygwin and Cmder

Posted by hussainweb.me on July 28, 2016 at 3:50am
In this post, let's cover how you can set up your Windows machine for optimal Drupal development (or PHP in general). I'll be covering Windows 10 but this could very well apply for other versions.

The central data hub of VDMA - The VDMA E-Market

Posted by Cocomore on July 27, 2016 at 10:00pm

Products of different manufacturers can be found in the E-Market of the Association for German Machinery and Plant Engineering (VDMA). We are introducing the E-Market’s special features in the sixth part of our blog series “The Central Data Hub of VDMA”. 

Pathauto added special characters in url alias - drupal 7

Posted by Phponwebsites on July 27, 2016 at 7:54pm
    To improve SEO, we need to clean our URLs. By default in drupal, we've an option called clean URLs at the configuration. In drupal 7, we can also manage the URLs. For instance, you have a content type called services. You wanted to each service page have url like services/page-name. To do that, we've a pathauto module in drupal 7. The pathauto module allow us to manage the URLs for every content types, files, taxonomy & users and also we can remove some unnecessary words from URL like an, the and so on.

   The pathauto module can remove some unnecessary words like a, an, the and so on & also remove special characters like !, @, $ and so on. Unfortunately, it doesn't included some other symbols like copyright(©), trademark(™), registered(®) and so on. But it provide a hook to add new symbols into the punctuation settings called hook_pathauto_punctuation_chars_alter. After created a content with some symbols which are represented above, your page URL looks like below image:


Drupal 7 - remove special characters from url using pathauto module


/**
 * Implements hook_pathauto_punctuation_chars_alter().
 */
function phponwebsites_pathauto_punctuation_chars_alter(array &$punctuation) {
  $punctuation['copyright']          = array('value' => '©', 'name' => t('Copyright'));
  $punctuation['registered']         = array('value' => '®', 'name' => t('Registered trademark'));
  $punctuation['trademark']          = array('value' => '™', 'name' => t('Trademark'));
}
   After implemented above code into your module, you cold see added symbols are listing on Pathauto module's settings page at /admin/config/search/path/settings. If You didn't get these symbols, clear cache & test it again. It looks like below image:


Drupal 7 - pathauto settings after hook_pathauto_punctuation_chars_alter

Now you can create a content with those symbols. The pathauto module didn't added those symbols into the URL.

Now I hope you know how to remove some special characters from URL alias using pathauto module in drupal 7.

GSOC 2016- Developing tests for “Fil Alt Text” feature of Google Vision module- Week 9

Posted by Arpit Jalan on July 27, 2016 at 5:01pm
TL;DR Last week, I had worked on and developed tests to ensure that the similar images are grouped in accordance to the Image Properties feature of the Vision API. The code is under review by the mentors, and I would continue on it once the review is done. Meanwhile, they also reviewed the “Fill Alt Text” feature issue, and approved it is good to go. This week, I have worked on developing tests for this issue.

An important feature that I have implemented in the Google Vision API module is the filling of Alt Text field of an image file entity by any of the four choices- Label Detection, Landmark Detection, Logo Detection and Optical Character Detection. My mentor suggested me to check the availability of the response and then fill the field, as we can not fully rely on the third party responses. With this minor suggestion being implemented, now its time to develop tests to ensure the functionality of this feature.

I started developing simple web tests for this feature, to ensure that the Alt Text field is properly filled in accordance to the choice of the user. It requires the selection of the four choices one by one and verify that the field is filled correctly. Thus we require four tests to test the entire functionality. I have added an extra test to ensure that if none of the options are selected then the field remains empty.

I created the image files using the images available in the simpletests. The images can be accessed through drupalGetTestFiles(). The filling, however, requires call to the Google Cloud Vision API, thus inducing dependency on the API key. To remove the dependency, I mocked the function in the test module, returning the custom data to implement the feature.

The first test ensures that the Label Detection feature returns correct response and the Alt Text field is filled correctly. The simpletest provides a list of assertions to verify it, however, I found assertFieldByName() to be most suitable for the purpose. It asserts the value of a field based on the field name. The second test ensures that the Landmark Detection feature works correctly. Similarly, the third and fourth test ensures the correct functionality of the Logo and the Optical Character Detection feature.

The fifth test which I have included perform tests when none of the options are selected. It ensures that under this case, the Alt Text field remains empty, and does not contain any unwanted values.
I have posted the patch covering the suggestions and tests on the issue queue Fill the Alt Text of the Image File using Google Vision API to be reviewed by my mentors. Once they review it, I would work on it further, if required.

DrupalCamp Bristol 2016 - Chairman's Write-up

Posted by Microserve on July 27, 2016 at 4:13pm
DrupalCamp Bristol 2016 - Chairman's Write-upJul 27th 2016

DrupalCamp Bristol 2016 was held over this last weekend, and I hope I'm not the only one to say it was an enjoyable and very useful weekend for many. Although there were a couple of usual hiccups, feedback from attendees was very positive and certainly made it all feel worthwhile. Let's hope that wasn't just the beer talking!

Last year I wrote up some tips and feedback after the event, and as the Chair of the DCB Committee I thought it would be great to share my thoughts again this year. After all, Drupal as a community is based upon being open, so behind the scenes camp organisation should be too!

What went well?

Let's start of with the positives:

  • Business Day - In general the Business Day was a fantastic success. We had an increased number of attendees this year which included a larger number of client types, the talks were well varied and lived up to the high expectations set last year, and our new venue - Colston Hall - was a fantastic choice. The weather was brilliant and attendees were able to chat with each other outside on the roof terrace which was a great feature.
  • Quality of Saturday talks - I'll give a bit more insight into the talks shortly, but this year we managed to put together a larger number of talks without sacrificing any quality. Last year almost all of the talks were of a technical nature, but this year we managed to get a better variety which is the first step to brining in newer faces.
  • Sponsors - This year we completely changed the Sponsor tiers up, allowing us to reduce the number of agency types involved. We had 4 key Organisational Sponsors, a Recruitment Sponsor, and a couple of "Brunel tier" Sponsors, which was well received. I think I'm correct in saying that most of the Org Sponsors have an existing relationship with the Recruitment Sponsor, so we were able to pick somebody we trusted for the exclusive Sponsor role.
  • Quiz - This year we ended the Saturday talks at 3.30pm and finished with a Quiz instead for a lighter end to the day. Admittedly the questions were a bit hard and in some cases....different, but the teams soon began to laugh at it and with a load of prizes to give away it was a win-win situation for everybody!
  • Social - We invested heavily in bar tabs both Friday and Saturday, with a total of £1K budgeted between both evenings, and this was definitely worthwhile. For the Business Day attendees the socials are where the networking is most prominent, and for developers the socials are where most people really seem to bond. Personally I think the relationships which are forged at the socials are key to ensuring the regular faces return each year, as this is where you get a real sense of community and team spirit.
  • Sprints - We held a day of Sprints for the first time and we had to stop ticket sales as this had reached maximum capacity. Thanks to Torchbox for letting us use their offices for this one.
  • Use of Slack - The committee was much more dispersed this year, but using Slack as a communication tool made things much simpler and ensured the remote factor didn't play against us.
What didn't go so well?

There were a few things that concerned me, and although some where event specific I think there's some wider problems that are becoming apparent in the Drupal Community. I'd be really keen to hear how we as a community can go about improving these:

  • New talent is lacking - It was great to hear during Sheena Morris's Apprenticeships talk that agencies in the North and in London have adopted their Apprenticeship program so well, but Saturday's attendees showed that there is a huge lack of new Drupal talent. Emma Jane won "Learning Drupal 8" during the Quiz which was kindly provide by Inviqa, and gifted it to the person in the room who was newest to Drupal. The person in the room with the least Drupal experience had just less than 2 years!
  • Female speakers are sparse - Speaker diversity is a problem which isn't new to us, and this year we only had one female speaker per day. What's troublesome about that is that we didn't have a single talk submission from a female to choose from; it was committee members who sourced both of those speakers.
  • Last minute program changes - I guess this one is unavoidable, but 3 speakers dropped out of Saturday within a week of the event, and upon arriving at the venue on Saturday morning we were told the main lecture theatre was out of use and we had to direct talks to another lecture theatre. Typical! It would be interesting to know how other camps deal with this; maybe we shouldn't include the Saturday schedule in the printed programme, but instead ensure attendees use the website as the primary source of this info?
Camp Funds, DCB 2017, and the Committee

We've estimated an income of £11K this year, with expenditure of just short of £10K. We started the year with a cushion of approximately £4K from last year's camp, which gives us around £5K to rollover. I personally think it would be great to invest some of this into the local Drupal community, perhaps sponsoring more regular talk nights and Sprints? I'd be interested to hear of any suggestions - tweets to @DrupalCampBris.

The committee will be having a wash up meeting over the next week to discuss next year and see what we can do to improve the event, but I can guarantee you DrupalCamp Bristol 2017 will certainly be happening. Organisation will begin again later this year, and as the committee is always in need of new members we'd be interested to know if anybody new would like to join the team? Again, simply tweet @DrupalCampBris if you'd like to get involved.

Finally, I'd like to take this chance to offer up the Committee Chair position as I've decided to take a step down to a more back seat next year. I've thoroughly enjoyed leading the team over the first 2 years, but I think it would be good to see somebody else step into the role next year.

A massive thank you to everybody who attended, thank you to all the Speakers who volunteered their time over the weekend, thank you to all the Sponsors who made the event possible, and a huge thank you to all the committee members for pulling everything together and making the event a success.

See you all next year!

Rick Donohoe's picture

Written by: Rick Donohoe, Account Manager

Microserve is a Drupal Agency based in Bristol, UK. We specialise in Drupal Development, Drupal Site Audits and Health Checks, and Drupal Support and Maintenance. Contact us for for further information.

GSoC ‘16 - Week #10: Mailhandler updates

Posted by Miloš Bovan on July 27, 2016 at 3:29pm
GSoC ‘16 - Week #10: Mailhandler updates

This blog post summarizes week #10 of the Google Summer of Code 2016 project - Mailhandler.

In the last blog post, I was writing about the comment and demo module improvements. This blog post will provide an overview of the work done in the past 7 days. Even though the plan was to work mostly on UI/UX issues we ended up in code refactoring.

During the last meeting with my mentors we identified 3 key Inmail issues to work on: Lack of standard result in collaboration of analyzers, Support switching the user context and Provide a hook_requirements fed by plugin instances. We agreed those issues will provide better overall value in the integration of Mailhandler and Inmail modules. It will allow Inmail to implement ideas from Mailhandler, make them generic in a way both modules can benefit from.

Lack of standard result in collaboration of analyzers was identified as the main blocker to achieve analyzer collaboration. After a long discussion and 7 patches, it was finally committed. As a result, Inmail will have a default analyzer result which can be extended sequentially by all enabled analyzers. As this was a big change in core Inmail module, there are several follow-ups created.

Another Inmail issue Support switching the user context was dependent on the default analyzer issue. It uses AccountSwitcher service which completely switches the user context to the given user/account. That is done after the handlers run. In case the account switching mechanism was activated, we make sure it is switched back after the handlers-processing. On a handler level, we can use \Drupal::currentUser() and be sure it represents the identified user sender or an anonymous user otherwise.

Last but not least, I have been working on Provide a hook_requirements fed by plugin instances. The goal of this issue is to create a way for each of the Inmail plugins (analyzers, deliverers, handlers) to provide information about its runtime requirements. They can be PHP extension requirements, valid credentials etc. This information is displayed on “Status report” page (admin/reports/status) or processed by contrib modules like Monitoring.

PGP Analyzer requirementsPGP Analyzer requirements

Inmail plugins can produce several issues with unmet requirements. As displayed in the picture above, PGP Analyzer needs gnupg PHP extension in order to work with signed messages. On the other side, an IMAP deliverer needs valid credentials to be functional.

Since the most of the Inmail issues mentioned above were committed, Mailhandler module will need adaption which is going to be my focus for this week. Also, I will analyze the code of the module and try to simplify it. Besides the mentioned, I will work on Inmail UI/UX issues which will be described in the next blog post.

 

 

 

Milos Wed, 07/27/2016 - 17:29 Tags Drupal Open source Google Summer of Code Drupal Planet Add new comment

Pages

Subscribe with RSS Subscribe to Drupal.org aggregator - Planet Drupal