Feed aggregator

KnackForge: How to update Drupal 8 core?

Planet Drupal - Sat, 24/03/2018 - 06:01
How to update Drupal 8 core?

Let's see how to update your Drupal site between 8.x.x minor and patch versions. For example, from 8.1.2 to 8.1.3, or from 8.3.5 to 8.4.0. I hope this will help you.

  • If you are upgrading to Drupal version x.y.z

           x -> is known as the major version number

           y -> is known as the minor version number

           z -> is known as the patch version number.

Sat, 03/24/2018 - 10:31
Categories: Elsewhere

Valuebound: Drupal 8: How to create a custom block programatically

Planet Drupal - Mon, 19/12/2016 - 08:33
Drupal 8: How to create a custom block programatically Jaywant.Topno Mon, 12/19/2016 - 02:33
Categories: Elsewhere

Valuebound: Drupal 8: Custom Block Creation programmatically

Planet Drupal - Mon, 19/12/2016 - 08:33
Drupal 8: Custom Block Creation programmatically Jaywant.Topno Mon, 12/19/2016 - 02:33
Categories: Elsewhere

Web Omelette: Drupal 7 ctools content_type plugin with multiple subtypes

Planet Drupal - 4 hours 59 min ago

The content_type ctools plugin is the most used type of ctools plugin in Drupal 7. It allows us to quickly build complex (and configurable) components that can be used in the Panels interface. They are quick to set up, the easiest start being the definition of the $plugin array and the implementation of the plugin render function in a .inc file. Have you ever wondered though what the $subtype parameter of this render function is and what it serves?

Most of the time our content_type plugins only have one type so the $subtype argument is the same name as the plugin (and file name). However, it's possible to have multiple subtypes that have slight (but critical) differences while sharing common functionalities. Not many people are familiar with that. Intrigued? Let's see how they work.

When content_type plugins are being processed (loaded, prepared for use and cached), ctools asks them whether there are any subtypes it would like to define or they are single. By default the latter is true but in order to define variations we can either populate an array of subtype definitions in the main $plugin array or implement a function with a specific naming convention: module_name_plugin_name_content_type_content_types. This callback then needs to return the plugin information for all the subtypes of this plugin.

But since it's easier to show than explain, let's take a look at an example. Imagine you need a simple content_type plugin that outputs data which depends on a certain ctools context. You can define your plugin as such:

$plugin = array( 'title' => t('My plugin'), 'description' => t('My plugin description'), 'category' => t('My category'), 'required context' => new ctools_context_required(t('Node'), 'node'), );

This is a simple example of a plugin that depends on the Node context. But what if you want it to depend on the Node context OR the current User context? In other words, it should work on the node_view page manager template or the user_view one. Or whatever page these contexts are on but nowhere else.

Instead of required context you could use 'all contexts' => true. But this would then pass in to your render function all the available contexts. And this is neither elegant nor a statement of dependency on one of those two contexts. In other words, it will be available on all page manager pages but maybe won't do anything on most and it's up to the render function to handle extra logic for checking the contexts.

This is where plugin subtypes come to help out. Since your render function does the exact same regardless of context (or very similar), you can have a subtype for each. So let's see how that's done.

First, we simplify the main plugin array:

$plugin = array( 'title' => t('My plugin'), 'description' => t('My plugin description'), 'category' => t('My category'), );

Then we implement the function that returns the subtypes (following this naming convention):

function my_module_my_plugin_content_type_content_types() { return array( 'node' => array( 'title' => 'My plugin for nodes', 'required context' => new ctools_context_required(t('Node'), 'node'), ), 'user' => array( 'title' => 'My plugin for users', 'required context' => new ctools_context_required(t('User'), 'user'), ), ); }

The subtype machine name is the key in the array and the rest is regular plugin definition as we are used to. In our case we define two, each for their respective dependencies. And with this in place we achieve a number of things.

First, we can add the My plugin for nodes content_type plugin whenever the Node context is available and the My plugin for users when the User context is present. They cannot be used in other cases. Second, we ensure that whatever context is passed to the render function is either a Node or a User (nothing else). This can come in really handy when your context is custom and wraps an object that implements a common interface. Third, the $subtype argument to the render function now will be either node or user which is helpful to maybe slightly fork the functionality depending on the subtype.

Clear the caches and give it a go. Let me know how it works out.

Categories: Elsewhere

Appnovation Technologies: 3 Appnovator Sessions Accepted for DrupalCon Dublin

Planet Drupal - Mon, 25/07/2016 - 19:52

DrupalCon Dublin is right around the corner and we're proud to say that 3 sessions submitted by Appnovators have been accepted!

Categories: Elsewhere

myDropWizard.com: If you're not selling support and maintenance plans to your clients, YOU'RE DOING IT WRONG!

Planet Drupal - Mon, 25/07/2016 - 19:02

Just finished a big project for client? Awesome!

Did you selling them a support and maintenance plan for their new site?

No? Well, I'm sorry to tell you: YOU'RE DOING IT WRONG!

But you wouldn't be the only one!

The vast majority of Drupal shops and freelancers build sites and move on without offering a support and maintenance plan, figuring if the client has any problems they can just bill them for it at their hourly rate.

However, you're missing out on several advantages - read more to find out what they are!

Categories: Elsewhere

Drupal Association News: Membership campaign recap

Planet Drupal - Mon, 25/07/2016 - 17:59

Thank you, to everyone who participated in our 2016 certificate campaign. We sent a personalized certificate to everyone who joined or renewed their Association membership. We also asked members to help boost our outreach by encouraging others to join or renew. These contributions matter. The funds you helped raise support the Association’s work, and your goodwill inspires us. Whether you became a member for the first-time, renewed, or took the time to share, you made the campaign a success.

Success feels great

From May 1 - June 30, 335 people became new members and 476 members renewed. For comparison, those numbers were 233 and 378 during that period last year. This campaign brought our total membership to 3,670 individuals and organizations. That’s a 12% increase over this time last year (from 3,290). Our certificate goal was to deliver 675 by the end of the campaign. But you helped us crush it. We delivered 854, exceeding that goal by 27%.

Lessons learned

This year, we created a landing page on assoc.drupal.org and promoted it via blog post, social media, and newsletters. One month into the campaign, we launched a new banner on drupal.org, and sent an email to members, asking for help sharing the campaign. From the attribution provided by members on the sign-up form, most learned about membership via drupal.org or through a community member/organization. Therefore, the banner/landing page and direct message to our members was more effective than using our social media channels and newsletters.

About campaign components

Last year, we used social sharing, a blog post, and newsletters. We also added new content to our existing membership and contribution pages. We didn’t create a landing page. The results? There were 885 tracked pageviews of the campaign-related blog post (during the campaign period) and we delivered 611 certificates.

This year, we did a little more to test whether a banner on drupal.org could make a difference. It definitely did.

We launched with a blog post on May 2, but this time we added a landing page. When the campaign ended, we’d had 1,025 tracked pageviews on the blog post (a 15.8% increase from last year). However, we didn't see a jump in membership sales (296 total) or much traffic to the landing page. On June 1, we added a banner to some drupal.org pages. That’s when it got interesting.

Traffic came from drupal.org, not assoc.drupal.org

The landing page we launched in May had 16,768 tracked pageviews during the full campaign period, but 98% of them (16,410) came after the banner was launched on drupal.org. June had 517 membership sales, and 50% of those were new members (up from 34% new members in June 2015).

This screenshot shows traffic to the landing page before and after the banner launch.


Digging deeper into the data, we looked at what members wrote when asked how they found out about membership. New members told us it was via drupal.org (54.8%) or thanks to a community member (19.3%). These percentages were even higher than when looking at total members from the campaign period. If we want to increase overall membership, having the landing page and banner combination is the way to go.

Compared to the 2015 campaign’s data, there were 123% more responses driven by evangelism, and 108% more mentions of drupal.org as the start of a member’s user journey.

You love selfies as much as we do

Thanks for getting in front of the camera! It came as no surprise that so many of you responded to our call for selfies. Our community is full of caring members who love to share. Not only did this make for a fun time, but it helped show the people behind Drupal.

What’s next?

A note about content: regrettably, we showed the same banner to all visitors, and its language caused some confusion about what members could do to help. We'll be mindful of that for future editions.

In the meantime, you can still help continue the momentum of this campaign. Reach out to us. Tell us why you’re a member. Share why you’re a member of the Drupal Association when you renew your membership—or anytime, really. No matter where you share, you help us help the community, and we all make a difference for each other and for Drupal.

Personal blog tags: Membership
Categories: Elsewhere

Annertech: 5 Annertech sessions accepted for DrupalCon Dublin!

Planet Drupal - Mon, 25/07/2016 - 16:43
5 Annertech sessions accepted for DrupalCon Dublin!

Yesterday all the accepted sessions for DrupalCon Dublin were announced, and we are delighted to report that 5 of our 8 session proposals were accepted! With Acquia being the only company receiving more acceptances, we are extremely proud of our achievement.

Categories: Elsewhere

Appnovation Technologies: Redesign with Drupal 8 In Mind

Planet Drupal - Mon, 25/07/2016 - 12:01
More often than not with nearly all the projects I work on with Appnovation, we're tasked with some degree of updating, redesigning and modernizing an existing web presence, the target result being something new and shiny.
Categories: Elsewhere

Drop Guard: News time: Dashboard, Composer, Jira support

Planet Drupal - Mon, 25/07/2016 - 09:00

Our existing users may have already noticed a few changes and improvements in Drop Guard. However, not everything is visible enough, so we decided to make a short list with the recent updates.

Composer support

Drop Guard is now capable of managing your composer.json and composer.lock files, in the same fashion as you would do it normally via CLI.

When executing the update task, Drop Guard modifies the composer.json to accommodate the recommended module or core version and runs "composer update" command to keep the composer.lock in sync. Both files get pushed to the repository, and the only thing you need to take care about is running "composer install" to receive the updated packages.

Drop Guard Drupal Planet
Categories: Elsewhere

Torchbox: Contributing to Drupal (DrupalCamp Bristol 2016 Sprint)

Planet Drupal - Mon, 25/07/2016 - 01:00

Yesterday, I attended DrupalCamp Bristol’s sprint day which took place at Torchbox’s new Bristol offices. More than 15 people attended the event, including seasoned contributors Lewis Nyman and Emma Karayiannis. 

Categories: Elsewhere

DrupalEasy: DrupalEasy Podcast 182 - Almost Live From Drupal GovCon 2016

Planet Drupal - Sun, 24/07/2016 - 15:51

Direct .mp3 file download.

Mike interviews Gregg Marshall, Enzo Garcia, and Daniel Schiavone live from Drupal GovCon 2016! Gregg discusses his new book, Enzo talks about his upcoming community keynote and the upcoming DrupalCamp Costa Rica, and Daniel previews Baltimore DrupalCamp and discusses preparations for Baltimore DrupalCon 2017.

DrupalEasy News
  • The Fall, 2016 session of Drupal Career Online begins September 26; applications are now open.
  • Online and in-person workshops; introductions to both module and theme development for Drupal 8. See the complete schedule.
Sponsors Follow us on Twitter Intro Music Subscribe

Subscribe to our podcast on iTunes, Google Play or Miro. Listen to our podcast on Stitcher.

If you'd like to leave us a voicemail, call 321-396-2340. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or corrections. If you'd rather just send us an email, please use our contact page.

Categories: Elsewhere

Annertech: Annertech's Andrew Macpherson becomes Drupal Core Maintainer for Accessibility

Planet Drupal - Sun, 24/07/2016 - 00:15
Annertech's Andrew Macpherson becomes Drupal Core Maintainer for Accessibility

Ever since Andrew joined Annertech, he's been a champion of accessible web design and has ensured that accessibility has remained a key focus area in everything we do. That combined with his dedication to open source and contributing back to the community, meant that we were not surprised when he was asked if he'd be interested in becoming a Drupal core accessibility maintainer.

Categories: Elsewhere

ImageX Media: Higher Education Notes and Trends for the Week of July 18, 2016

Planet Drupal - Sat, 23/07/2016 - 00:07

In our weekly roundup of higher education notes and trends, you can usually count on three themes being discussed by the academic community: student demographics, budget constraints, and technology. In this post, we'll expand more on these themes by sharing some of our own insights, and we'll cover a few unique and emerging technology trends across higher education and technology.

Categories: Elsewhere

ImageX Media: Bridging the Communication Gap on Distributed Teams

Planet Drupal - Fri, 22/07/2016 - 23:43

Of the many things that contribute to the success of a project, communication is the most important. While every project will differ in its requirements, team members, and plan, at the most basic level their goals should always be the same: to add value for the client. Open communication -- that is, the free exchange of ideas, collaboration, and ensuring clarity and direction is the lynchpin that holds a project together in the pursuit of that goal.

Categories: Elsewhere

Third & Grove: Drupal GovCon: Day 3 Recap

Planet Drupal - Fri, 22/07/2016 - 22:03
Drupal GovCon: Day 3 Recap abby Fri, 07/22/2016 - 16:03
Categories: Elsewhere

Mediacurrent: Dropcast: Episode 22 - The Jim Birch Society

Planet Drupal - Fri, 22/07/2016 - 19:25

Recorded July 6th 2016

This episode our number one fan, Jim Birch, comes on to talk about his Drupal life and sadly learns how unprofessional his favorite podcast is. With that we recognize how long it takes me to actually get an episode out of the can and into your ears. Bob highlights some blog posts, which derails into a discussion about the Google AMP service, which rolls perfectly in with Ryan’s Pro Project Pick. We discuss the latest Drupal News and of course Ryan brings it home with the Final Bell.

Categories: Elsewhere

Zivtech: How We Grew a Business from Seed

Planet Drupal - Fri, 22/07/2016 - 15:35
Look for Talent, Not Experience

We got started with the idea to train inexperienced employees out of necessity, as well as from personal values. I had a few different careers before I got into web development. I was a pharmaceutical chemist, and I was also a math teacher. But I never worked at a place where anyone recognized my talent.

I had other jobs, too. In college, I was a telemarketer and did data entry. I was a bright person, but nobody seemed to notice. I always thought that it was a shame that talent goes to waste due to a lack of opportunity for young, unproven workers.

Back then, I wished someone would have given me an opportunity to do something at my level. Instead, I made it happen for myself, and co-founded this company in 2008. We didn't have any money, and back then there were even fewer qualified potential hires in our field. I'm super picky about the quality of the work my company does, and wasn’t willing to hire second rate workers.

We hired a few people and then the economy collapsed. Much of our work went away. We decided that we weren't going to cut anybody. By that point, we’d hired four or five people, and they didn't really have any experience. I was doing most of the billable work, plus teaching people. When the work dwindled, we decided to pay them from our credit cards. About half of those people are still with us, and they're doing great. I'm really glad that we kept them.

The main reason that we started hiring people who didn't really have much or any experience was that we couldn't afford anyone who did. We're not a virtual company; we've always had an office, so we're limited to our local area, and there really were very few good developers. Instead what we did was just bring candidates into the office, make sure everyone communicated, and for our part, we would bring a willingness to teach.

Believe that your people are intelligent, and that you can teach them something, and that they can learn. They might not learn as quickly as you would like sometimes, but if you believe that they will learn, they will.
*SOURCE: http://www.modernsurvey.com/fall2014

Download the full Grow Your Own white paper for free.

Categories: Elsewhere

OSTraining: Drupal & Bitnami Multiple Environments

Planet Drupal - Fri, 22/07/2016 - 13:12

An OSTraining member asked how to setup a bitnami lamp that supports PHP 5.4.

The Bitnami Wamp stacks are available in 3 versions here:

  • 5.5.37
  • 5.6.23
  • 7.0.8

Each of these provides an environment that is preconfigure with a different version of PHP.

5.5.37 comes with PHP 5.5, which you should also use for 5.4 setups. The reason 5.4 is no longer available is because the changes between 5.5 and 5.4 are minimal. You can read more about the changes on the official change log here.

To install the Wamp stack, follow our installation guide.

If you already have a Bitnami Lamp setup, you can install it again. Just be sure to use a different directory location to your original installation. All Bitnami files are contained within these containers, so you can simply install the stack as many times as you like. 

When installing your second stack, you will have to use a different ports for apache, ssl and mysql:


Once the installation is complete, you should see this screen:

In this older version of the Bitnami stack, the enviroment doesn't include Drupal. So we will have to install Drupal now.

Download or copy your drupal site to Bitnami\wampstack-5.5.37-1\apache2\htdocs\drupal

Navigate to 

If you are doing a fresh install, you will see this screen:


 You can access PHPMyAdmin from http://localhost:8080/phpmyadmin/

Categories: Elsewhere

Mediacurrent: Friday 5: 5 Structured Data Items that Work for Every Website

Planet Drupal - Fri, 22/07/2016 - 07:47

We hope the work week is treating you well and that you're gearing up for an even better weekend!

Categories: Elsewhere


Subscribe to jfhovinne aggregator