Planet Drupal

Subscribe to flux Planet Drupal - aggregated feeds in category Planet Drupal
Mis à jour : il y a 47 min 47 sec Fixing Views' Scroll to Top When You Have a Fixed Header

ven, 26/06/2015 - 18:56

Drupal Views offers us a cool feature: ajaxified pagers. When you click on a pager, it changes the page without reloading the main page itself and then scrolls to the top of the view. It works great, but sometimes you may encounter a problem: if you have a fixed header ...

Read now

Catégories: Elsewhere

Stanford Web Services Blog: Drush "user-list" Command

ven, 26/06/2015 - 18:05

A simple task: list all the users on a site, optionally filtering by role or by status. Difficulty: using drush.

I had searched around a bit for this functionality and my Google-fu had failed me, so I decided to build off of work that already had been done and write a drush user-list command. (The internal monologue went something like this: "Is this a thing? It doesn't look like this is a thing. This should be a thing. Why is this not a thing? Let's make this a thing.")

Catégories: Elsewhere

Acquia: From consumption to contribution - Drupal business in India, Part 2

ven, 26/06/2015 - 17:46
Language Undefined

Ani Gupta, Drupal Mumbai community lead, StartupNext lead, formerly at Axelerant in India, and I got the chance to continue the conversation I began with Piyush Poddar at Drupal Camp London about the changing face of IT and open source in India. Under the heading "from consumption to contribution" we talk about India's move from being perceived as being good for cheap, outsourced code to being a place rich with brands and startups in their own right and the home to much open source contribution. We also talk about old versions of Drupal, the Drupal community and its mentoring culture, open source acceptance in business and government, and more!

Catégories: Elsewhere

Drupal Watchdog: The Farmischt Freelancer

ven, 26/06/2015 - 16:57

One solicitation for a gig that I recently received was for a back-end developer. It contained the list of need-to-knows that I expected: PHP, Drupal module writing, OOP, MySQL, and so on. However, there was another list below that one, containing more technologies, with which the applicant should be “bullet-proof,” including JavaScript, jQuery, Angular, CSS, Sass, HTML5, PEAR, Apache, Linux shell-scripting, and several more. Despite the job heading, this was clearly a request for a full-stack developer.

Now, I actually can write JavaScript, jQuery, CSS, and HTML5, manage my own Linux server, and configure Apache domains, but I am far from being “bullet-proof” with these technologies. It would make little sense for someone to pay me by the hour to rip my hair out over CSS and JavaScript issues rather than using someone who is adept with them.

Is it because I’m not capable of being bullet-proof? Nope. Over the centuries I’ve written countless programs in 370 Assembler, 1130 Assembler, Mnemonic Assembler, APL, PL/1, Fortran, COBOL, Basic, SPL (the HP one), and on and on. Even Xerox 9700 form language. I was one of those people in the university comp-sci department that people hate; someone who never had to study. Don’t misunderstand. It wasn’t a matter of being better, necessarily, but that my thought process is the jelly to programming logic’s peanut butter. I have known many developers who could code circles around me, but I also have a wealth of experience combining the ability to internalize a client’s business issue and visualizing a solution for crafting it. So, if I think that it’s not simply a matter of aptitude, then what is it?

I have a bit in common with Steve Jobs. Huh? Yeah, really. We both grew up about the same time, were exposed to early computing at a young age, had our first programming experiences via timeshare teletype terminals and early CPU’s with toggle switches, were completely seduced by how software improved and fulfilled our thought process, and we both had part of our foundation poured at Hewlett-Packard.

Catégories: Elsewhere

Drupal core announcements: Recording from June 26th 2015 Drupal 8 critical issues discussion

ven, 26/06/2015 - 12:12

This was our fifth critical issues discussion meeting to be publicly recorded in a row. (See all prior recordings). Here is the recording of the meeting video and chat from today in the hope that it helps more than just those who were on the meeting:

Unfortunately not all people invited made it this time. If you also have significant time to work on critical issues in Drupal 8 and we did not include you, let me know as soon as possible.

The meeting log is as follows (all times are CEST real time at the meeting):

[11:04am] jibran: Issues[0]=1&status[1]=13&status[2]=8&status[3]=14&status[4]=4&priorities[0]=400&categories[0]=1&categories[1]=2&categories[2]=5&version[0]=8.x
[11:07am] dawehner:
[11:07am] Druplicon: => Path alias UI allows node/1 and /node/1 as system path then fatals [#2509300] => 55 comments, 5 IRC mentions
[11:07am] dawehner:
[11:07am] Druplicon: => Proxies of module interfaces don't work [#2408371] => 71 comments, 14 IRC mentions
[11:13am] plach: alexpott: dawehner GaborHojtsy: WimLeers: hamletic questions in the critical meeting
[11:13am] GaborHojtsy: plach: :P
[11:13am] plach: :)
[11:14am] WimLeers: "hamletic", wow :D
[11:14am] plach:
[11:14am] Druplicon: => FieldItemInterface methods are only invoked for SQL storage and are inconsistent with hooks [#2478459] => 105 comments, 26 IRC mentions
[11:14am] plach:
[11:14am] Druplicon: => Node revisions cannot be reverted per translation [#2453153] => 134 comments, 42 IRC mentions
[11:14am] dawehner: alexpott: i mean our request context ->getCompleteBaseUrl is basically that
[11:15am] alexpott: dawehner: yep
[11:16am] dawehner: GH sadly does not allow you to filter by 3.0.issues
[11:16am] WimLeers: that's weird
[11:16am] jibran:
[11:16am] Druplicon: => Rewrite views_ui_add_ajax_trigger() to not rely on /system/ajax. [#2500523] => 27 comments, 6 IRC mentions
[11:16am] dawehner: alexpott:
[11:19am] catch:
[11:19am] Druplicon: => [meta] Identify necessary performance optimizations for common profiling scenarios [#2470679] => 62 comments, 15 IRC mentions
[11:19am] catch:
[11:19am] Druplicon: => Create standardized core profiling scenarios and start tracking metrics for them [#2497185] => 36 comments, 11 IRC mentions
[11:19am] GaborHojtsy: lol, my chrome died, is the meeting still running? :)
[11:19am] alexpott: GaborHojtsy: yes
[11:19am] WimLeers:
[11:19am] dawehner: GaborHojtsy: yes
[11:20am] GaborHojtsy: yay I got back the controls when it reopened
[11:20am] GaborHojtsy: huh
[11:20am] GaborHojtsy: will still be able to stop broadcast, etc.
[11:20am] WimLeers: nice!
[11:20am] Druplicon: darn tooting it sure is!
[11:21am] WimLeers:
[11:21am] Druplicon: => [meta] Finalize the cache contexts API & DX/usage, enable a leap forward in performance [#2429287] => 105 comments, 8 IRC mentions
[11:22am] WimLeers:
[11:22am] Druplicon: => Rendered Cache Metadata created during the main controller request gets lost [#2450993] => 104 comments, 20 IRC mentions
[11:22am] WimLeers:
[11:22am] Druplicon: => Link CSRF tokens can be hijacked when cached with insufficient contexts [#2351015] => 98 comments, 35 IRC mentions
[11:24am] WimLeers:
[11:24am] Druplicon: => [meta] Finalize the cache contexts API & DX/usage, enable a leap forward in performance [#2429287] => 105 comments, 9 IRC mentions
[11:25am] WimLeers:
[11:25am] Druplicon: => #access should support access result objects or better has to always use it [#2487600] => 17 comments, 1 IRC mention
[11:27am] WimLeers:
[11:27am] Druplicon: => Make 'user.permissions' a required cache context [#2493033] => 18 comments, 4 IRC mentions
[11:29am] WimLeers:
[11:29am] Druplicon: => Add cacheablity support for entity operations [#2473873] => 26 comments, 3 IRC mentions
[11:34am] GaborHojtsy:
[11:34am] Druplicon: => "Translate user edited configuration" permission needs to be marked as sensitive [#2512460] => 2 comments, 1 IRC mention
[11:36am] GaborHojtsy:
[11:36am] Druplicon: => Test the staging version of on Drupal 7 NOW! => 0 comments, 4 IRC mentions
[11:36am] dawehner: alexpott: would you be okay with adding \Drupal\Core\Http to add things like TrustedRedirectResponse there?
[11:46am] plach:
[11:46am] Druplicon: => [policy, no patch] Require hook_update_N() for Drupal 8 core patches beginning June 29 [#2507899] => 34 comments, 5 IRC mentions
[11:48am] dawehner:
[11:48am] Druplicon: => Additional uncaught exception thrown while handling exception after service changes [#2509898] => 3 comments, 1 IRC mention
[11:49am] • jibran hates this cycle of exception rendering.
[11:50am] WimLeers:
[11:50am] Druplicon: => Rendered Cache Metadata created during the main controller request gets lost [#2450993] => 104 comments, 21 IRC mentions
[11:54am] dawehner:
[11:54am] Druplicon: => Arbitrary code execution via 'trans' extension for dynamic twig templates (when debug output is on) [#2489024] => 24 comments, 9 IRC mentions
[12:03pm] WimLeers:
[12:04pm] plach: WimLeers++
[12:04pm] plach: (oh boy :D)
[12:04pm] WimLeers: :P
[12:04pm] jibran: slow clap for WimLeers

Catégories: Elsewhere

InternetDevels: Drupal Book module: all you need to know about it

ven, 26/06/2015 - 09:40

Hello everyone! Drupal module development offers us a lot of opportunities, and today I would like to tell you about a standard, out-of-the-box Drupal 7 module. I have repeatedly deployed a website based on Drupal 7, but never paid attention to Drupal Book module. What are its features? What does it do?

Read more
Catégories: Elsewhere

DrupalCon News: Share Your Thoughts: Future of the Community Summit at DrupalCons

ven, 26/06/2015 - 02:16

If you are interested in Drupal community and you are coming to Drupalcon, we are looking for your opinions!

Take the Community Content at DrupalCon Survey.

Catégories: Elsewhere

Drupal Association News: Share Your Thoughts: Future of the Community Summit at DrupalCons

ven, 26/06/2015 - 02:10

If you are interested in Drupal community and you are coming to Drupalcon, we are looking for your opinions!

Take the Community Content at DrupalCon Survey.

For a very long time, community conversations at DrupalCon took place at sessions in the community track, which ran alongside all the other content at DrupalCons. The community track allowed for presentations on topics related to our community. While it was good to be able to raise the topics, there were real concerns that the session format meant that nothing productive came from the conversation. Further, the community track was just much less attended than other sessions, with 25 or so folks in a room that holds 200.

At DrupalCon Prague in 2013, we launched the first Community Summit. Held on the Monday of DrupalCon week, it is a day-long event designed in an un-conference style to bring community members together to tackle the issues that help our community achieve more together. Morten DK, Addison Berry, and others (bless you all - you have been great collaboratrs) ran the program and led a number of very useful conversations.

For the last few DrupalCons we have run these community summits, and have heard a whole new round of feedback, including:

  • Work at the Summit does not tend to continue after the Summit, so we lose momentum.
  • We don’t always have the right people in the room to really solve some of these problems.

We also did some surveying of our community leaders at the beginning of last year and heard that they are very hungry for skills training that can help them take their camps, meetups, trainings, etc. to the next level. They want to learn about how to manage the finances of a camp, how to recruit sponsors, and how to be better public speakers. The current community summit format does not really allow for this kind of skills training either.

So - we are looking for your feedback about how we might restructure the community content at DrupalCons.

Take the Community Content at DrupalCon Survey.

Just so you know, I hit the woods with my family and no internet and no phones for one week a year, and that week is next week. I won’t be able to respond to comments or the survey while I’m gone, but I will do so when I return. If you have feelings, ideas, or feelings about ideas - stick them in the survey! I’ll share the results back out. If you have book recommendations for my trip, hit me up on Twitter.

Catégories: Elsewhere

Matt Glaman: Commerce entity's and storing arbitrary data

jeu, 25/06/2015 - 22:39

Drupal Commerce entities all make use of the "data" attribute. The data attribute is a blob that contain just about anything you would like - for example, Commerce Shipping utilizes this for shipping line items. Recently there was a StackExchange question on the documentation of this attribute. The best way to learn about an entity (in Drupal 7) and how it operates is to review it's controller class, which each Commerce module has in its includes folder.

/** * Unserializes the data property of loaded orders. */ public function attachLoad(&$queried_orders, $revision_id = FALSE) { foreach ($queried_orders as $order_id => &$order) { $order->data = unserialize($order->data); }

The database layer will always serialize items on save, but you're required to unserialize when returning data.

Catégories: Elsewhere

Cruiskeen Consulting: Drupal Time in the Midwest!

jeu, 25/06/2015 - 21:59

Some people call it spring, but obviously they're not coders. Twin Cities Drupal Camp is just starting up and runs through the weekend. This is always a great camp, and has a lot of Drupal heavy-hitters.  You're bound to learn a lot (and my heart is broken that I cannot cross the river to go to it this year due to a bunch of other commitments).

Even nearer to our hearts over here in the land of cheese is Drupal Camp Wisconsin - which this year is going to be a little later than normal (August 7 and 8), but will be in the stunning new Madison Public Library. I just opened up session proposals on the site, so if you're interested in coming to Madison, WI for some Drupal goodness, come register for the free Drupal Camp WIsconsin, and sign up to present. This is a lower key sort of camp than a lot, and will feel more familiar to those who remember Drupal camps from a few years back. But great fun, and this year it will be downtown right next to lots of great Madison places for food, spirits, and relaxation.

Lastly is the ever-wonderful Drupalcorn in Iowa.  I'm actually planning on going this year and have put in a couple of session proposals. You should go too, since there's no such thing as too much Drupal conversation. July 30-Aug. 2 in Cedar Falls Iowa. Don't miss the Powerpoint Karaoke, where hapless souls get to do Powerpoint presentations based on random selections of slides.  Heck, that's what most of my presentations look like anyway, so I should be GREAT at that.

See you all at the various spring and summer Drupal activities in fly-over land.

Catégories: Elsewhere

Open Source Training: Drupal: What If Your Clean URL Test Fails?

jeu, 25/06/2015 - 21:34

By default, Drupal 7 creates URLs that look like this, "".

This type of URL can be hard to read, hard to remember and may not be search engine friendly. The solution is to configure Drupal's clean URLs.

Drupal provides a test so you can see whether your site is ready fror clean URLs:

Catégories: Elsewhere

Cheeky Monkey Media: Easy Site Administration for Both Site Builders and Site Admins

jeu, 25/06/2015 - 19:00

Coming up with a way to easily navigate and administer a Drupal site has always been a bit of a struggle. Usually you’ve pleased the site builders and confused the normal site admins. Or pleased the site admins, but then caused the site builders to pull out their hair in frustration. We like to use admin_menu for site builders, and to use navbar as a nice and easy site admin toolbar. Admin_menu is great to give site builders quick access to almost every admin page there is. Navbar keeps things nice and simple – trying to avoid site admins getting overwhelmed with menu options,...

Catégories: Elsewhere

Hook 42: A Path from Drupal Newbie to Core Contributor

jeu, 25/06/2015 - 18:28
Thursday, June 25, 2015

Patrick Storey answers a few questions about working with the Drupal community and contributing to Drupal core. Just goes to show you do not have to be a ninja programmer or have 30 years Drupal experience to have a positive impact in the Drupal community! Thanks, Patrick. :)

1. When did you start working with Drupal?

I started working with Drupal around a year and a half ago. I was working on a small site in WordPress when my older brother, John Storey, suggested I check out Drupal as he had about a decade's worth of experience using Drupal.

2. What's your favorite thing about Drupal development?

While this technically might not be a Drupal thing, I greatly enjoy the cat references or funny commentary I find while googling answers, or asking for answers on IRC, to my Drupal questions. To which… there are always more questions about what is going on with my Drupal site.

3. What was your first interaction with the "Drupal Community"?

My first interaction with the “Drupal Community” was at a Bay Area Drupal Learners Group Meetup hosted by Kalamuna. It was a welcoming experience to newcomers, and Kalamuna always provides booze and popcorn.

4. How did you start contributing to Drupal core?

I started contributing to Drupal core after spending hours trying to find something a newcomer to Drupal could do in the issue queue. I found the experience very troublesome and discouraging. Then Kristen Pol read about a mentorship by Cathy Theys to try to clean up that exact problem and help newcomers find ways to contribute to Drupal Core.

5. What types of contributions to you do?

Currently I review Drupal 8 issue queues and see if they are appropriately tagged with the Novice Tag or as I like to call it the “New Drupal Contributor” tag. I also help out with any Issue Reviews, Beta Evaluations, Patch re-rolls that I find as I go. I am now studying for my “Acquia Certified Developer” certification so I can help with all the patches I see that need reviews. I’ve noticed patches needing reviews are a HUGE need in the Community. I also wrote a blog about how I got started contributing and how any new contributor can start contributing too. (There is plenty of work to be done for this so please feel free to jump in!)

6. What's your favorite part of community work?

My favorite part of community work is the combination of being able to contribute back to Drupal, while getting to know those who contribute to Drupal. It’s almost universal that anyone who is contributing back to Drupal seems to be a really cool person. Everyone I have met is either far smarter than they have any right to be and/or has an amazing sense of humor. It’s also cool to think about after you helped out “Wow, the code I just wrote is going to be used by thousands and thousands of people to help them survive and feed their families”. That’s the kind of thing I think everyone can get behind.

7. What are some challenges of working with the Drupal community?

Some of the challenges are the “blah blah blah blah and something about my ego”. :-) As you might expect when in an open source environment, there are a lot of RIGHT ways to do things, and a lot of people who demand it be done their right way. But in order to make true progress in some cases we all have to decide on one way to proceed and follow it so we can have standards to our work.

8. What community work are you doing now?

Right now I’m working on running the Multilingual Sprints for NYC Camp so we can help get Drupal 8 over the finish line! NYC Camp runs from July 13th to July 19th at the United Nations! If you are interested in helping get Drupal 8 over the finish line, please sign up for the Drupal 8 Multilingual Sprints here!

9. What's next for you in the Drupalverse?

Next for me in the Drupalverse is: gain my “Acquia Certified Developer” certification, figure out how I can best help with BAD Camp, and start writing code that will allow Drupalers to spin up sites quickly and efficiently so they can make enough money to rent out entire apartments at the Trump Tower for their cats like they work for FIFA.



Hook 42 Topics:
Catégories: Elsewhere

Makina Corpus: Howto: using Twig in Drupal 7

jeu, 25/06/2015 - 16:47
Using Twig in Drupal 7 is indeed possible: here's how to anticipate Drupal 8, and use right now the theme engine bundled in the next version of our favorite CMS.
Catégories: Elsewhere

Amazee Labs: Creating nested lists with panelizer and view panes

jeu, 25/06/2015 - 15:00
Creating nested lists with panelizer and view panes Marc Pfändler Thu, 06/25/2015 - 15:00

For one of our customer projects, we wanted to have a list with all past projects. There are two types of projects selected among applicants every year: a winner and there are several finalists or runner ups.

The idea was to show the winner of each year followed by the finalists/runner ups of the year. This should be done in a list where the actual year is the top one followed by the others.

The following is my approach for solving this request. A step by step guide:

1. Creating a view pane like the following:

In this view, the displays are created. We have two different ones. The selected one shows the finalists of the year, which is added via a contextual filter. The second one shows the winner.

The view will show winners or finalists for a given year based on the contextual filter configured. In order to use the view with panels, we created displays of type view pane. Note that in the pane settings, we specify the argument input to get the required context from panels. Thus the argument input is set up like this:

Later in step 3. When we add the displays to the panelizer, we will set the argument.

2. Panelize the taxonomy

In order to have these two views sorted by years, they will be attached to the “Year” taxonomy, to do this we need to panelize it.

The new view mode configured is displayed a bit wrong in panelizer for the taxonomy. So we have to go via Structure -> Taxonomy -> Year -> Panelizer -> list_winner_finalists.

3. Attach the winner and finalist view panes to the panelized taxonomy

After panelizing the taxonomy we can attach the before created view panes to it. As described, first winners and then the finalists. Use the top left gear icon, Add content and select view panes to choose from the defined view pane displays.

We have set the argument input in step 1 and now we need to select it here to provide the taxonomy terms as context to the view panes:

4. Creating a taxonomy view

Last step is to create a view which shows the taxonomy that uses the panelized viewmode and to sort this view by year.

5. Be very happy with the result:

We list all the years from most recent to earliest. And for every year we list the winner and multiple finalists.

The final result can be seen live here:


Catégories: Elsewhere

Commerce Guys: Cutting the Cord - Why choosing an open-source framework is analogous to ditching your cable provider

jeu, 25/06/2015 - 14:00
In today’s tech-driven culture, any business that’s looking to succeed must have an online presence. eCommerce, is rapidly becoming pervasive. There are plenty of high-cost, enterprise software solutions available as well as inexpensive SaaS options that provide turn-key ecommerce solutions.

Regardless of which solution you choose, both the enterprise solutions and the smaller SaaS solutions create liabilities and risk for your business. The reason is that they both lock your business into a cycle of license (or maintenance) fees and deep dependency on a single vendor to extend the feature set and remain relevant in the fast paced world of technology.

eCommerce software = Cable (or Satellite) TV. Think about it. How much of your TV lineup do you actually watch? Probably less than 10%. In fact, back in September of 2014, Nielson reported that most American Households watch only 17 of the 189 channels that the average TV service provider pipes into our homes. This wouldn’t feel so bad if the average cost for pay-TV service wasn’t climbing at an astronomical rate.

So it’s no surprise that many are deciding to ditch their cable company and get the specific entertainment options they actually use, without over-paying for services they don’t want and will never use. People ultimately want to choose their entertainment options and control what it costs. Do a Google Search for cord cutting and you’ll get countless articles detailing fed-up customers and fearful pay-TV executives. You’ll get even more links to how-to’s and YouTube videos with advice on how to get the content you want, often for free… or at the very least, less expensively via streaming services like Netflix, Hulu and others using devices like an Apple TV or Google ChromeCast (plus, more every day). It’s clearly a tipping point for home entertainment, and the big companies who provide the content are taking notice.

Something very similar is happening online.

Companies are also beginning to look at their eCommerce platform in the same light. Rather than a huge code base and feature set that makes vast assumptions about their requirements, many of which they will never use or simply won't fit their business model, they are looking for solutions that can exactly meet their current and future needs without costing a fortune.

As mentioned previously, any business today must be online. It’s not a nice to have anymore or a service reserved for companies with specific plans to sell online. Your customers will be shopping online. If not with you, then with your competitors. Companies today are increasingly choosing free open source solutions rather than proprietary solutions that lock them into contracts, license fees, and a single vendor. Those companies choose software that offers a flexible framework rather than rigid technology that can’t deliver on all their requirements. They are embarking on a strategy centered around a web publishing framework that allows them to build something that exactly matches their business needs and doesn’t come pre-packaged with anything that will compromise the experience the customer receives.

Only need a catalogue online? Get that without having to disable features that come with the enterprise software that’s costing X over the next Y years. Ready for eCommerce? Enable it. Need a new feature? Build it in-house, or pay a web developer to give you exactly what you want. The alternative is to submit a feature request and wait helplessly through the software vendors next (and next, and next) release cycle for the feature you need. An open-source framework allows you to build a modular web application with just the features you need... and none of the features you don’t.

That’s why Drupal is the perfect software for web publishing. And why over 1 million sites have been built with Drupal. Its modular architecture and community supported framework allows companies to get just the experience they are looking for without the bloat.

And thankfully for companies who have eCommerce requirements, Drupal Commerce provides the perfect extension of that framework. It brings the modular thinking to selling online, lets merchants pick only the features they need to sell their products online, and skips the licensing, the bloatware and the software release cycle. If you need to enable a specific third-party connection, or have a unique product to sell (like digital goods or subscriptions) there are modular components that let you do that. Enable them and you’re good to go. And if you’ve come up with a new idea and there isn’t a module that lets you just turn that on, well then, there are many services companies with developers ready to build it and huge community of developers to support it.

So if you’re planning on cutting the cord at home (or maybe you already have), why not do the same with your eCommerce solution??
Catégories: Elsewhere

Microserve: Drupal go-live checklist (revisited)

jeu, 25/06/2015 - 11:52

A handy tool for every developers arsenal: a simple go-live checklist! When a site is finally ready to launch it can be easy to get excited and forget some of the important details, but having a checklist to hand can prevent any last minute slip ups. 

Here's my own personal checklist and below it a further description of each item with some hints and tips. Leave me a comment if you have any questions or think I've missed anything important!

Go-Live Checklist
  1. Check Status Report and Site Information page
  2. Disable Developer modules
  3. Disable any theme specific development settings
  4. Disable error message display
  5. Configure performance settings
  6. Check log messages and fix any apparent issues
  7. Check 404 and 403 reports
  8. Ensure custom 403 and 404 pages are in place
  9. Enable and configure Google Analytics module
  10. Ensure all Web Services are setup correctly
  11. Audit users accounts and ensure all admins use a secure password
  12. Ensure best practices are followed for SPAM prevention
  13. Configure basic SEO practices
  14. Test email

...and here's those points explained in detail:

1. Check Status Report and Site Information page

You should always start by checking the status report - /admin/reports/status. This page shows you all of the basic requirements for your Drupal site to run correctly.

Any issues will be highlighted in red and typically have a link to a configuration page or the documentation to help you resolve the problem.

The site information config page holds all of the most common site information, such as the website name and email address.

It's worth double checking that all of this information is correct. It could be quite embarrassing if your first newsletter arrives from

2. Disable Developer modules

Developer modules unnecessarily bloat your website so these should be disabled when going live. If they haven't been configured out the box then you can safely uninstall these too without worrying about losing any information.

It’s quite common to cram your website with contrib modules only to find out that numerous modules haven’t actually been used or were replaced by a similar module later in the development process, so these should be removed and uninstalled too.

There are also a number of Core modules we regularly uninstall such as Color, Comment, Dashboard, and Help as these Core modules are often unused on your average Drupal site. In our opinion Dashboard and Help simply add more links to the menu which unnecessarily confuse content editors.

3. Disable any theme specific development settings

This may be completely different for every theme but most themes have a number of development settings to help speed up development. which should be turned off when going live to remove any performance bottlenecks created by them.

This is also a good chance to disable (and remove) any themes which haven’t been used.

4. Disable error message display

Nice and simple; head to /admin/config/development/logging and set “Error messages to display” to “None”. This prevents any embarrassment and confusion created when your end users start seeing error messages on the page which to them will look like technical gibberish!

5. Configure performance settings

The site performance page - /admin/config/development/performance will allow you to configure a number of options to help optimise your Drupal site. This includes page caching and optimising CSS and JavaScript files.

See our series on High Performance in Drupal for some expert tips - High performance in Drupal Part 1: Give your site a boost and High performance in Drupal Part 2: Lightning fast code.

6. Check log messages and fix any apparent issues

Assuming you have the core database logging module (dblog) enabled you should have a list of log message which can be found at /admin/reports/dblog

Most messages will simply be notices which can be ignored,  though often there may be certain errors which saturate and fill up the log. Each log message requires a db write so a large list of regular messages can have a large impact on site performance. One example of this could be an undefined variable which doesn’t appear to cause any issues, but creates an error message to be logged on every page view.

It is good practice to regularly check the error log and periodically fix any recurring errors which are being reported.

7. Check 404 and 403 reports

Not only should these be checked prior to going live, but they should be periodically checked to ensure end users aren’t suffering from recurring 404 or 403 errors. Simply check both reports - /admin/reports/access-denied and /admin/reports/page-not-found - and look out for entries which have an unusually high count. Once you’ve found these question why they are a problem and get them fixed. If you have the URL Redirect module enabled there should be a simple link you can use labelled “Fix 404 pages with URL redirects”.

You may find some odd entries like “wp-login.php”, though these will just be from spam bots so they can be ignored.

Another little tip: Some of your links may not  appear in this report as they work, but are still problematic as they’re actually links to your development or test sites. Enable Pathologic as an input filter to help find and remove any of these.

8. Ensure custom 403 and 404 pages are in place

This is a nice little touch which doesn’t have to take any longer than 5 minutes. Simply create two basic pages; one for your 404 page and one for your 403 page, then set them as up under /admin/config/system/site-information.

The aim of these pages is to funnel lost visitors to other areas of your site to help them find what they were looking for. Some people choose to make these as simple as possible whilst others put a bit more “flare” into them. For some inspiration check out 33 brilliantly designed 404 error pages.

If your site uses the Search module you could also try utilising the Search 404 module - this handy little module performs a search on the keywords in the URL of the page which can't be found.

9. Enable and configure Google Analytics module

The first thing you want to do when you launch is check out your visitor stats; though the last thing you want to see is that none of this data exists because you forgot to setup Google Analytics properly!

Simply enable the Google Analytics module and add your GA Property ID under /admin/config/system/googleanalytics .

For best results we recommend overriding the GA ID on dev and test sites, that way your analytics results won't be skewed by internal traffic from your development sites.

10. Ensure all Web Services are setup correctly

Many web services such as Mollom or Typekit require a domain name specific API key to use. If you use any of these services on your website, you should ensure that you've registered your real domain name with the service and you've updated Drupal with your new API key.

11. Audit users accounts and ensure all admins use a secure password

It’s easy when first developing a site to use a simple login such as “admin” with the password “pass” so ensure all admin users have set a secure password if they haven’t already. We recommend using a tool like LastPass to generate and remember strong passwords.

Before you go live double check there aren’t any users with the admin role that you don’t want to have full access to the site. Ideally this should be a developer only role and your content editors should use another role with reduced permissions.

12. Ensure best practices are followed for SPAM prevention

The pro’s and con’s of different Spam modules and techniques is a story for another day, but there’s a few basic steps you can take:

  • If your site doesn’t use comments then disable the comments module. If it does, ensure permissions are correctly setup and that comments are only enabled on the content types they are required on.
  • Check the “Who can register accounts?” setting - /admin/config/people/accounts. If your only users are administrators simply change this to “Administrators only” to avoid an influx of spam user accounts.
  • Use Honeypot or Mollom to help reduce spam on contact and comment forms.
13. Configure basic SEO practices

This will be covered in a later blog post in further detail, but there’s a few tips you can use to ensure your site gets a head start here:

  • Redirect traffic from the non-www version of the domain to the www version (or vice versa) to avoid the site being indexed twice.
  • Check your haven’t left anything like “Disallow: /” in your robots.txt file which would prevent Google crawling your site correctly.
  • Lock your dev and test environments to ensure these aren’t accessible by visitors or crawled by Google.
  • Ensure you have added, enabled and configured the Global Redirect, URL Redirect and Pathauto modules.
14. Test email

Ahh, good old we-nearly-forgot-about-it email. You’d be surprised how many sites have issues sending email, especially when you have smaller self-hosted sites where there is no key reason to check this.

Fire off a forgotten password email when the site is ready on the liver server and ensure it reaches you OK without being sent to spam.

Personally we prefer using Mandrill on any of our sites which rely on email. Mandrill is a free tool which helps prevent email being marked as spam and provides details of all outgoing mails in a clean, easy to use interface.

Rick Donohoe
Catégories: Elsewhere

Drupal core announcements: Update: Drupal 8 beta 12 rescheduled for June 29; get ready for hook_update_N() in core

jeu, 25/06/2015 - 00:35

We've rescheduled Drupal 8 beta 12 for June 29, 2015 to provide a little more leeway time for Drupal 8 core issues that require an update function. Starting June 29, any Drupal 8 core issue that includes a data model change must include an update function and update path test. See the previously announced core policy on requiring hook_update_N() for more information.

Identify your data model changes now!

If you have any core patches that are currently under development, please start identifying the data model changes in those patches now. Tag any issue that requires a data model change with D8 upgrade path and document the specific data model changes in the issue summary. Or, help triage major issues with specific attention to the data model changes.

It's actually also a good idea to start writing hook_update_N() implementations for your patches now! This will ensure in-progress issues can be committed as soon as possible following the next beta, and if your patch is ready before June 29, your update function will still help provide the corresponding update for the head2head project. Plus, if you uncover a critical limitation with Drupal 8 core's update functionality while working on your update function during the next week, the upcoming D8 Accelerate critical issues sprint will be an opportunity to get that critical issue fixed and unblock your patch.

Note for Drupal site owners and developers

Betas are good testing targets for developers and site builders who are comfortable reporting (and where possible, fixing) their own bugs. Betas are not supported releases of Drupal, and generally are not recommended for non-technical users, nor for production websites. The current beta release includes known critical bugs, including publicly disclosed security vulnerabilities. More information on beta releases.

The addition of update functions for Drupal 8.0.x issues should make it easier for developers to update their existing development sites between beta releases using update.php. However, these update functions may include bugs or even introduce data integrity issues, so developers should always back up the site and be prepared to rebuild it from scratch or manually update or migrate the data in case update.php fails to update it properly.

Catégories: Elsewhere

Tom Geller: Moving on from Drupal

jeu, 25/06/2015 - 00:12

In the Esperanto language there was a great writer and activist known as "Kabe". After creating magnificent translations and reaching a position of authority, he suddenly left Esperanto life, never to participate again. So notorious was his disappearance, the language gained the verb "Kabei" -- to vanish suddenly from a position of great visibility.

I'd be flattering myself to compare my position in the Drupal world to Kabe's in Esperantio -- the Esperanto world. But my courses and other writings about Drupal made me fairly well-recognized in Drupal circles.

I've been absent from those circles for the last couple of years, and feel the need to give closure to -- and recognize -- those I got to know there.

I got started in Drupal because I wanted to build a dynamic website to promote a book I'd written. It was a period of great growth for Drupal, and accepted my proposal to create a seven-hour "Essentials" video course. (I think they agreed because their first CMS course -- on WordPress -- was selling pretty well.) That led to seven more, a book, a magazine column, various presentations, and a lot of corporate work.

Was I a "Drupalista"? That's tough to say. I've sincerely enjoyed working with it: Although I've come to recommend WordPress for inexperienced site builders with minimal needs, I'm still thrilled with how much I can accomplish with Drupal and a free afternoon. As I (like most people) have come to live more and more online, Drupal has given me more control over my environment. For example, I'm not afraid that I'll lose a major chunk of my history as LiveJournal slips down the tubes: Through Drupal I made a local copy, privately linking commenters to their real-wold contact information. Those tools, those gifts of the Drupal community, are still with me.

We grew apart. Drupal ceded the mom-and-pop market to other platforms, focusing instead on enterprise needs. That's a fine match... but it's not what interests me, personally. Coding -- a skill I don't have -- eclipsed site-building, evidenced by the increasing percentage of Planet Drupal posts on the subject. And Drupal 8's unexpectedly long development time caused a major writing project to stall after I'd put in a month of work.

But oh! What a fine relationship we've had. I'm scared to list the people who have made my time in "Drupalio" so much fun -- I'm sure I'd miss many. But I want to recognize everybody who helped me on; those involved with Drupal companies I've worked with (Commerce Guys, Mediacurrent, Acquia, Phase2 Technology, DrupalEasy, Tag1 Publishing, TopNotchThemes); those who corresponded privately about Drupal matters; and those who continue to make Drupal great. I'd be very happy to hear from you directly, and will continue to check in on (where I'm tgeller) from time to time.

I've gone back to general technology journalism and communications. Lately I've been quite happy working in video, and have started a U.S.-based agency, Tom Geller Productions. Making a monthly video for The Association for Computing Machinery has put me in touch with people doing fundamental research. I intend to do for that community what I've tried to do for the Drupal community: to make their work clear and accessible to those without specialist knowledge.

Esperantio and "Drupalio" are quite different. But they're similar in an important way -- one that's shared by any international community of people gathered for a righteous cause. After a time, the cause changes and falls away, leaving intact relationships that linger. As Wavy Gravy said, "It's all done with people." Although I might kabei, look forward to seeing you people, wherever we meet.

Blog category: Drupal Planet
Catégories: Elsewhere Why PhantomJS When You Can Chrome

mer, 24/06/2015 - 23:00

Following our unfortunate bug in Shoov which caused login to stop working, we decided to write a Behat test that will continuously check the live site and make sure login with GitHub is working properly.

Writing the Behat test was pretty easy, however it had a major problem - it didn't work.

@javascript Scenario: Login to shoov Given I am an anonymous user When I visit the homepage And I login with my GitHub account Then I should wait for the text "My Account" to "appear"

When Behat sees the @javascript tag in the begining of the scenario, it launches it (with the help of Mink extension) in PhantomJS, Firefox or Chrome.
PhantomJS is usually the easiest to configure and hook into the CI workflow later on.

But the test we wrote just failed on all versions of PhantomJS we tried. Which made us switch to Firefox instead. Travis CI is kind enough to have a headless Firefox installed in their machine which we could use. Unfortunately, Firefox didn't like our test either, but for another reason - it couldn't parse the xpath we use to find our text elements.

So after spending some time trying to figure out a workaround, I suddenly stared at the browser I was using to find the answer - Chrome!

Behat test running on headless Chrome, seen via VNC

Continue reading…

Catégories: Elsewhere