Drupal Planet
Pixelite: Environment aware Drupal sites
As a course of developing for larger Drupal sites, you typically find yourself having multiple environments, one for development, one or more for staging or user acceptance testing, and another for production (and perhaps disaster recovery).
One thing that always comes up is making Drupal "environment" aware, so it knows how it should behave, what modules should be turned on (or off) and what servers it should be talking to for instance.
Environment moduleThe environment module allows you to define arbitrary environments (it also comes with some out of the box) in code. Example hook
/** * Implements hook_environment(). */ function HOOK_config_environment() { return array( 'prod' => array( 'label' => t('Production'), 'description' => t('Live sites are in full production and browsable on the web.'), 'allowed' => array( 'default' => TRUE, ), ), 'dev' => array( 'label' => t('Development'), 'description' => t('Developer machines.'), 'allowed' => array( 'default' => FALSE, ), ), 'staging' => array( 'label' => t('Staging'), 'description' => t('Bug fixes and testing are done here.'), 'allowed' => array( 'default' => FALSE, ), ), ); }You also may want to remove the default environments that come with the environment module
/** * Implements hook_environment_alter(). */ function HOOK_config_environment_alter(&$environments) { // Remove default environments. unset($environments['production']); unset($environments['development']); }Using this code, and some magic in settings.php, you can effectively tell Drupal which environment it is by switching on the HTTP_HOST. A stripped back example is:
// Include environment-specific config by parsing the URL. // To override this, set $environment in settings.php // BEFORE including this file. if (!isset($environment)) { if (strpos($_SERVER['SERVER_NAME'], '.demo.net.nz') !== FALSE) { $environment = 'staging'; } elseif (strpos($_SERVER['SERVER_NAME'], 'local') !== FALSE) { $environment = 'dev'; } else { // Default to production. $environment = 'prod'; } } // The environment module uses a lowercase variable. $conf['environment']['default'] = $environment; define('ENVIRONMENT', $environment); // Load the environment config file, followed by host-specific // over-rides (if any) in non-production environments. $conf_path = DRUPAL_ROOT . "/sites/default/"; require $conf_path . "settings.$environment.php";Note this also lets you include a separate PHP file called "settings.dev.php" for development, where variable overrides (using global $conf) can be done on a per-environment basis.
Environment switchingA natural extension of the environment module is to allow pulling a production database back to development, and then "switching" it into a development state. This switching is already a hook you can implement, allowing you to react on both the current and target environments.
An example of this is from the module's homepage:
/** * Implementation of hook_environment_switch(). */ function HOOK_environment_switch($target_env, $current_env) { // Declare each optional development-related module $devel_modules = array( 'context_ui', 'devel', 'devel_generate', 'devel_node_access', 'update', 'views_ui', ); switch ($target_env) { case 'production': module_disable($devel_modules); drupal_set_message('Disabled development modules'); return; case 'development': module_enable($devel_modules); drupal_set_message('Enabled development modules'); return; } }Other common things we do in our environment switch to development include:
Removing JS and CSS aggregation
variable_set('preprocess_css', 0); variable_set('preprocess_js', 0); drupal_set_message(t('Removed aggregation from CSS and JS.'));Changing the Apache Solr environment to point at localhost
if (module_exists('apachesolr')) { $solr_env = array( 'url' => 'http://127.0.0.1:8983/solr/dev', 'make_default' => TRUE, 'name' => 'DEV', 'env_id' => 'solr', 'service_class' => '', 'conf' => array( 'apachesolr_read_only' => '0', ), ); apachesolr_environment_save($solr_env); drupal_set_message(t('Set solr environment to @name at @url', array( '@name' => $solr_env['name'], '@url' => $solr_env['url'], ))); }Preventing API writes to production systems
variable_set('brightcove_api_write_enabled', 0); drupal_set_message(t('Stopped the Brightcove write API sync.'));Granting helpful debugging permissions to certain roles
if (module_exists('devel')) { $dev_perms = array( 'access devel information', 'switch users', ); user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, $dev_perms); user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, $dev_perms); }The list goes on here.
Environment indicator moduleNow that Drupal is environment aware, it is really helpful if Drupal can inform the user what environment they are currently looking at. Out of the box the environment module has no UI, so enter the module environment indicator to come save the day.
The new 7.x-2.x branch of environment indicator contains a lot of improvements over the 7.x-1.x branch, one of which is the integration with the core toolbar and shortcut modules.
To illustrate this, here is a screenshot of our toolbar in development (some links were stripped)
The module also alters the favicon to include a tiny letter and coloured background to match the colour you chose
This way you will never again forget which environment you are using, as the colours will be right there at the top of every page.
CommentsI am keen to hear how other people solve the issue of environment aware Drupal applications, and how this is communicated to the end users of the application. What other modules are out there? What experiences have you had?
Tags drupal drupalplanet environment hosting Source Environment Indicator Category TutorialDon't Panic: A blog about Drupal: First day of DrupalCon Amsterdam
My first day of DrupalCon Amsterdam comes to an end, and behind me are a visit to the wonderful sprint venue Berlage, which is located near the train station in the center of Amsterdam, and a loooong walk to Vondelpark (no, not Wunderkraut-sponsored Wunderpark, which many suggested). My global aim for this DrupalCon is to dive into the code of Drupal, becoming more custom to the code behind Drupal. Normally I classify me as a Drupal user, I use modules and tune them to make Drupal do the stuff I want Drupal to do. But I want to evolve, to learn something more than just using Drupal. So when my co-workers are going home on Thursday, I will stay for the sprints on Friday and Saturday to hopefully learn something about coding for Drupal.
My visit to Berlage was a small step in that direction, to see if I can help out and learn something. It turns out I came just when people were leaving to welcome the people coming to DrupalCamp Amsterdam by bike (!). I knew some of these people, so naturally I came along to Vondelpark to welcome the cyclists. A barbecue was firing up, beers were cooling and people were nice to talk to. I met a whole bunch of new people, and some old acquaintances as well (which was surprising since I don't consider myself a Drupal-globetrotter).
The local Drupal Community really showed off a good time, arranging this barbecue, and they also talked about what will happen during the following couple of days, which really looks promising. There are around 15 persons in the local community, and it seems they have done a good job! It's going to be nice seeing what will become of this.
Drupal Association News: Drupal.org User Research Results: User Personas
Back in May the Drupal Assocation with the help of the Drupal.org Content Working Group kicked off user research project for Drupal.org. Our goal was to understand who are our users, how do they use the website, what is their ideal user experience. We wanted to understand what are the main segments of our audience and define their priority so we could focus our development efforts. This user research is a first step on the path to a complete Drupal.org redesign. For the redesign to be successful, we wanted to have a complete picture of everyone who uses Drupal.org.
This user research was conducted with the help of Whitney Hess, user experience coach. We are thankful to Whitney for her time and experience she shared with us. It was a great pleasure working with her.
Now to the results we want to share.
The ProcessWe kicked of the project with a workshop during DrupalCon Amsterdam. Participants included members of the Drupal.org Working Groups (Content, Software and Infrastructure), members of the DSWG Leadership teams (Developer and Community Tools), and the Drupal Association staff members.
Findings from this first workshop you can find in the blog post.
Our next step was user interviews. During DrupalCon Austin and in the weeks following the event we’ve conducted 30 user interviews with various people: new to Drupal, long-term community members, ex-Drupalistas; developers, site builders, designers, content strategists, PMs, etc.; located in North and South America and Europe. Interviews were conducted by Whitney Hess, Joshua Mitchell, Roy Scholten and Tatiana Ugriumova (myself).
Once we had completed several interviews, Whitney and I started synthesizing them and developing personas.
In the middle of July, during our annual all-staff onsite week at the Drupal Association, we had the second workshop of this project. Drupal Association staff and Whitney Hess took a look at the work-in-progress personas and our original objectives, to make sure they still made sense and to prepare them for review by the working groups and board.
The ResultsObjectives for a new Drupal.org:
- Be the home of the Drupal community. Central source of relevant info/answers, collaboration, education and talent.
- Provide learnable, efficient tools to help coordinate the advancement of Drupal ecosystem.
- Encourage people to develop themselves, their Drupal proficiency, their careers & build human connections over time.
Based on the insights we learned in our research we decided to center our personas around competency in Drupal and the Drupal ecosystem.
We modified Dreyfus's model of skill acquisition as a basis for our persona structure. This model suggests 5 levels of competency, which for our purposes we call:
- Newcomer
- Learner
- Skilled
- Expert
- Master
For further clarity and focus, we determined primary and secondary personas. Primary personas are who we design for first. Each primary persona requires their own set of features and content, and the needs of a primary persona will not be met if we do not design for them explicitly. The needs of secondary personas can mostly be met by focusing on the primary personas. However, there are a few needs specific to them that we will need to accommodate for.
Based on the goal of growing the community and the usage of Drupal, we determined the primary personas to be: Learner and Skilled. Our secondary persona is Expert. Newcomer and Master are our tertiary personas.
This is a very short summary of the research results. More information and an actual personas can be found in the full report below.
Get the full Drupal.org User Personas report: Google Doc | Pdf
We'd like again to say thanks to Whitney for helping us during this process.
As I mentioned above, user research is the first step of a greater project. Our next step is content strategy work for Drupal.org. We'll be posting RFP for it shortly, watch this blog.
Netstudio.gr Blog: You own an e-shop? Automate your shipments
If you own an e-shop, you know the process:: Orders come, you write the shipping vouchers by hand or through the software that your courier service has given to you, you print them, and you stick them on the packages. This has to be done quickly and with no mistakes.
The solutionRecently, we developed for a client the automation of this process. When an order is received, it automatically gets assigned a voucher ID. The client receives an email, SMS or both with a link to the tracking page. This page resides inside the e-shop, so the prestige of the site is increased. Alternatively, before the voucher creation, the shop owner checks the address for possible extra charges and informs the client. This automation reduces the time it needs to prepare the shipments to one third and keeps the client happy as he may check his shipment progress through the tracking page without having to call the e-shop. Finally, mistakes are gone, as the voucher gets printed with the data that the client has entered himself. For more info call us at +30 2108004447 or fill in the contact form.
TweetVerbosity: Migrating Drupal 8 in Europe
This week we're in Europe for DrupalCon Amsterdam! This is starting to feel suspiciously close to a beta so it is time to dive into Migrate again so you can start working on your new sites with real-world data. Let's begin!
What's up with migrate?Migrate in the Drupal context means running a migration from the new Drupal 8 site and pulling data from an existing site. It replaces the old upgrade-in-place system that was used in prior versoins of Drupal. So do a fresh install of Drupal 8 and have an old Drupal 6 site on the same host. After you've logged into Drupal 8 you can connect to your Drupal 6 site.
How is Drupal 8 migrate different from Drupal 7 migrate (and migrate_d2d)?In the older versions of Migrate the process invovled defining your field mappings and manually creating the new content types in the D7 system. This is no longer necessary.
Drupal 8 migrations will automatically create the needed content types and establish the mappings between the old and new fields by default. Therefore much less configuration is needed.
For times when it is necessary to customizae your migration you can use the included hooks or you can use the configuration schema to use the included plugins with your custom data set. The hooks go further than in D7, allowing you to alter data in the prepareRow stage without having to create a custom migration to deal with the data.
Migrate from Drupal 6? What about from Drupal 7?Migrate frees us from the need to update each sequential version. You can leafrog versions! With Drupal 6 being close to end-of-life it is important to have a pathway for these users. For this reason, the D6 to D8 path was built first.
For Drupal 7: soon. This is now in-progress now that we are finalizing the Drupal 6 code.
Requirements- Drush! The UI is still in a contrib sandbox, so for now you must use Drush. The latest version - from Github.
- Composer. It is needed to install Drush. Go into the drush folder and run "composer install". Already installed? "composer update"
- D6 Database. Have it on the same host as the new Drupal 8 install.
- D6 Files. Probably a good idea to be on the same host. Can be file path or http(s) address.
- D8 Database. A new, empty database. Use the old Creating the database howto if new to this.
- D8 Files. Check out the git repo... unless of course a beta becomes available. Then use that.
If you do not currently have a Drupal 8 install one route to get there is to use the Drupal Tools for your platform. It includes all the software you need and the correct versions. It is available for Linux, Mac, and Windows.
If you install the Drupal Tools package it is not necessary to install Git, Drush, or Composer.
The installation should be current as it includes a version of Drush which must be up-to-date. So if you had installed Tools before, double check the version if you have any trouble.
Install Drupal8Using the database credentials you created, install your new Drupal 8 site.
If you need to rebuild your site remember to delete your ENTIRE files folder and old settings.php. Reinstalling without doing this step will cause problems.
Install Composer / DrushMake sure you have run the Composer installer. You should be able to type which composer and get a result in your terminal.
Check out the latest Drush. Go into the Drush folder and run composer install.
Next time you git pull (or git fetch) in the Drush folder, make sure to run composer update.
Find an isuse to test- Go to the Drupal project issue queue and filter down by Component: migration system, Version: 8.x.
- Pick an issue that is not already fixed.
- If you are sprinting with lots of people, pick something further down the list so you are not working on the same thing as someone else.
- Read the posts. If it is easy enough you think you can handle it, post a comment to say you are doing some work on it.
- Post the results of your tests.
Put the manifest.yml file with the migrations you wish to run in your D8 site root. Then go there on the command line and run the following command, using your D6 database credentials.
You can install Drupal 8 at this stage. If you do, be sure to enable all of the necessary modules. For example, if you use the Book module, it is not enabled by default, so you should enable it now or your book nodes will simply become a regular content type.
When Drupal 8 is no longer in beta the manifest.yml file will not be necessary unless you are doing some custom work. In most cases all that will be necessary is to put in the database credentials and the system will run all the migrations that the system knows about by default.
You will find a manifest.yml file attached to many Migrate issues that will enable you to begin the migration. Here is a sample of what I am using... I have added together many different issues and I run them all at the same time:
# user- d6_user
- d6_user_profile_field
- d6_user_profile_field_instance
- d6_user_profile_entity_display
- d6_user_profile_entity_form_display
- d6_profile_values:user
- d6_filter_format
- d6_user_role
- d6_user_picture_entity_display
- d6_user_picture_entity_form_display
- d6_user_picture_file
- d6_user_picture_field
- d6_user_picture_field_instance
# taxonomy
- d6_taxonomy_vocabulary
- d6_taxonomy_settings
- d6_taxonomy_term
# nodes
- d6_node
- d6_node_revision
- d6_node_type
- d6_view_modes
- d6_filter_format
- d6_field_instance_per_form_display
- d6_field_instance_widget_settings
- d6_field_formatter_settings
- d6_field_instance
- d6_field
- d6_field_settings
- d6_node_settings
- d6_cck_field_values:*
- d6_cck_field_revision:*
# taxonomy fields
- d6_term_node_revision
- d6_term_node
- d6_vocabulary_entity_display
- d6_vocabulary_entity_form_display
- d6_vocabulary_field_instance
- d6_vocabulary_field
# blocks
- d6_block
- d6_menu
# custom blocks
- d6_custom_block
- d6_filter_format
# book
- d6_book
- d6_book_settings
Now that you have created a manifest.yml file in the Drupal 8 root directory you can run the migration.
drush migrate-manifest --legacy-db-url=mysql://d6user:d6pass@localhost/d6 manifest.yml
If you are using Drupal Tools (Acquia Dev Desktop), and if you have also put your D6 site into Dev Desktop, you will need to specify the port number. You can find your database settings by creating an AcquiaDevDesktop terminal and typing drush status to get the exact settings for your D6 site. The result should look something like this:
drush migrate-manifest --legacy-db-url=mysql://drupaluser:@127.0.0.1:33067/drupal_6 manifest.yml
Note that the database user for D6 is called "drupaluser" and it uses the local IP address and port number rather than the host name. Again, run drush status if you are having trouble connecting to verify these values.
ResultsAfter you have run the migration check your work. Did things do what you expected? Post the results of your findings to the issue queue you of the item you were working on.
Was the result successful? If so, post the result.
Did something fail? Post the result.
Post your results! Don't be afraid to comment on Drupal.org. If you provide examples of your tests you will help the migration path improve.
Rolling back (starting over)- It is possible to re-run the migration. This can be helpful if you forgot to run a component, or if you have new items in the source site that you would like to add to the Drpual8 site.
- To completely "roll-back" you really need to reinstall Drupal 8. To do this you must do three things: (1) empty your database, (2) delete settings.php, (3) remove the files folder completely.
- Join us at IMP meetups. Find out more at groups.drupal.org/imp.
- Read the Drupal 8 Migrate API documentation.
- Sprint with us if you are in Amsterdam this week!
- Participate in IRC at #drupal-migrate.
Deeson: Data visualisation of who's making Drupal 8
I've been having fun for the last few weeks building an interactive data visualisation tool, The Drupal8r, to show how the Drupal community is coming together to develop the next release, Drupal 8.
What is Drupal?Drupal is a free open-source web development platform which is designed to support online content, community and commerce. We've been using it since 2007.
Because it is open-source and built, developed and maintained by a huge global community who constantly update it as technology evolves.
Drupal 8, the latest release, is coming soon.
There are more than half a million people in the Drupal community, all working to make it the best platform around and usually in their spare time.
We wanted to celebrate the community's collaboration and show who is making some of the biggest contributions and commitments in getting Drupal 8 ready for launch. And so the idea for The Drupal8r was born.
The Drupal communityThere are hundreds of people in the Drupal community who write the platform's core code as their community contribution (called the contributors). This code is tested and reviewed by a handful of people who then commit it to the core (known as the committers).
D3 data visualisationI used the d3.js JavaScript library for manipulating documents based on data and Drupal git-log data to build a chart which displays the names of code contributors and committers with their corresponding Drupal 8 modules. At the moment you can view data from the latest 5000 commits to Drupal 8.
Have a go!Have a play with The Drupal8r, our fun and interactive data visualisation tool to see who has committed and contributed to modules for the next release of Drupal 8.
Come and play with The Drupal8r now.
For mobile usersThe text is small for mobile users and our human eyes haven't quite caught up with technology yet. So, have a look at this short video to see how it works instead.
The Drupal8r data visualisation tool Keep in mindWhen using it for just committers or contributors, the width of the connection represents the number of commits. When you are viewing both, the width of the connection has no meaning.
The Drupal8r can only show a certain amount of items on the page, by default The Drupal8r shows 100 items. It shows all the modules and committers, but the number of contributors are capped and grouped together under 'other'.
Four things The Drupal8r shows- A lot of people contribute - getting Drupal 8 ready is a massive team effort. It isn't just one person contributing to each module, but many people. Thanks everyone!
- In terms of pure numbers, Alex Pott, Webchick, and Nathaniel Catchpole have been the most prolific contributors to the Drupal 8 project. Impressive stuff.
- But the number of commits isn't necessarily a reasonable measure of an individual's contribution. Dries Buytaert and Jennifer Hodgdon may have been focusing on the bigger issues. The core team have reviewed and tested more than 5000 bug patches and bring us close to Drupal 8's launch - what a feat.
- For those in the Drupal community, see if you can spot the person who is in there twice under different names...
Next month I'm going to write another blog post over here on Labs about how I made The Drupal8r and the technologies used.
I'll be enhancing The Drupal8r over the next few months. I'm going to add an option to download more data to include in the chart and a contributor filter, so you'll be able to link to a particular contributor's commits.
Don't miss out on our development of the chart, so sign up to our newsletter below to keep in the loop.
Unimity Solutions Drupal Blog: DrupalCon Amsterdam - Diary - Saturday 27th Sep
I am proud to receive a Grant from the Drupal Association to attend DrupalCon Amsterdam. As a note of thanking the community, I started Day 1 here, Saturday, 27th September Volunteering to help Tote Bag and Badge Stuffing activity at Onyx Lounge at Amsterdam Rai.
The Cherry Hill Company: Why Drupal, and some digression.
Recently, there was a thread stated by a frustrated Drupal user on the Code4Lib (Code for Libraries) mailing list. It drew many thoughtful and occasionally passionate responses. This was mine:
I think that it is widely conceded that it is a good idea to use the most suitable tool for a given task. But what does that mean? There is a long list of conditions and factors that go into selecting tools, some reflecting immediate needs, some reflecting long term needs and strategy, and others reflecting the availability of resources, and these interact in many ways, many of them problematic.
I have given the genesis of Cherry Hill’s tech evolution at the end of this missive. The short version is that we started focused on minimizing size and complexity while maximizing performance, and over time have moved to an approach that balances those agains building and maintenance cost along with human and infrastructure resource usage.
Among the lessons we have learned in the...
Read more »Appnovation Technologies: DrupalCamp Montreal 2014
The seventh annual DrupalCamp Montreal took place at McGill University on September 12nd and 13th.
var switchTo5x = false;stLight.options({"publisher":"dr-75626d0b-d9b4-2fdb-6d29-1a20f61d683"});Deeson: Take a look at our swag for DrupalCon Amsterdam
Following the success of our DrupalCon t-shirt last year, Team Deeson is back and ready for the 'Dam armed with stickers, posters and a new tee to give away (because we're nice like that).
Deft with the DelftThis year we've taken The Netherlands' traditional and iconic Delftware as our inspiration for our DrupalCon Amsterdam tee - well, when in Amsterdam....
Drupal blossomsOur swag has been produced by our insanely talented designer, Rachael Case.
Rachael reversed the colour scheme, and added elements of other ‘classic’ Dutch imagery, including a windmill (of course), tulips and a bike. But if you look closer, the tulips ‘blossoms’ out of the Drupal drop. We also have the Drupal logo perched jauntily on the bike.
To finish it all off, we also added a rather tongue in cheek strapline, celebrating the ‘social’ side of Amsterdam...
Roll up, roll up! Tweet to get a teeSo if you want to grab your swag - tweet us @DeesonAgency and we’ll sort you out at DrupalCon Amsterdam. Zie je daar!
For posters and stickers, come and see us at stand 203 at DrupalCon for a chat. Don't leave it too late though, they have a habit of going fast!
See you thereSo if you want swag, come and find us in Amsterdam between 29th September and 3rd October. John, Tim and I will be around to chat about all things Drupal, open-source and open data.
Code Karate: Drupal 7 jReject Module
In this DDoD we look at the jReject module. This module allows you to display a modal popup notifying the user / visitor that their browser is outdated and wont work well with the site. In the video, you will see that jReject comes with a wide variety of customizations to fit your brand and preferences.
Tags: DrupalDrupal 7Drupal PlanetTips and TricksJavascriptModal FormsKristian Polso: My road to DrupalCon Amsterdam
KYbest: Using PHP_CodeSniffer in PhpStorm
PHP_CodeSniffer is a PHP5 script, which can validate PHP, JavaScript and CSS type source codes according to the different coding standards. In other words, you can easily check your source code’s standardization with a script, instead of knowing every detail about the coding standards by heart. You can use PHP_CodeSniffer in different ways, for example you can run it simply from terminal but thanks for the PhpStorm’s built-in support it becomes a much more effective tool.
DrupalCon Amsterdam: DrupalCon Amsterdam is almost here
It’s the Friday before DrupalCon Amsterdam, and we couldn’t be more excited for what’s in store. As we prepare to dive headlong into a week filled with fun, friends, and Drupal, there are a few things that all DrupalCon attendees (and would-be attendees) need to be aware of.
Late pricing ends todayAt 23:59 tonight, ticket pricing will move to onsite prices. You’ll still be able to register for tickets online, but in order to get the late pricing you must register to attend DrupalCon Amsterdam before midnight tonight Amsterdam time.
DrupalCon Amsterdam is our biggest European DrupalCon yetWe’re thrilled to announce that over 2,000 people have registered to attend DrupalCon Amsterdam, which makes it our biggest European DrupalCon to date. With so many people signed up to attend, there will be tons of opportunities to network, learn, and make new friends.
The fun starts before TuesdayExcited to get the DrupalCon party started? Many of our amazing community members are starting the celebration early: the Tour de Drupal is cruising across Europe, and a student training with over 200 attendees is happening right now, thanks to the local Dutch community.
We wish you safe travels on your way to Amsterdam. Whether you’re taking a plane, a train, a bike, a boat, or some other method of transportation, we hope that you have a fun and safe trip, and we can’t wait to celebrate the best community in Open Sourced with you.
See you in Amsterdam!
Acquia: Ultimate Guide to Drupal 8: Episode 8 - Answers to Your Burning Questions
Welcome to the 8th and FINAL installment of an 8-part blog series we're calling "The Ultimate Guide to Drupal 8." Whether you're a site builder, module or theme developer, or simply an end-user of a Drupal website, Drupal 8 has tons in store for you! This blog series will attempt to enumerate the major changes in Drupal 8.
Mediacurrent: Exploring the Picture Element Module (Part 1)
Responsive Web Design or RWD, has come a long way since it was first introduced in 2010, and you would think that by now, given the popularity of the subject, all things have been sorted out and all questions have been answered. Not quite. RWD is a moving target that continues to evolve, but for the most part the majority of the techniques used to accomplish the goal of an adaptable website are unquestionable except one, images.
CMS Quick Start: Drupal 7 Login Methods and Module Roundup: Part 1
Drupal Watchdog: Drupal 7 Form Building
Static websites, comprising web pages that do not respond to any user input, may be adequate for listing information, but little else. Dynamic pages are what make the Web more than just interlinked digital billboards. The primary mechanism that enables this is the humble web form – whether a modest single button or a multi-page form with various controls that allow the user to input text, make choices, upload files, etc.
Anyone developing a new Drupal-based website will usually need to create forms for gathering data from users. There are at least two possible approaches to solving this problem: One approach mostly relies on Drupal core, and the other uses a contributed module dedicated to forms.
The Node KnowsIf you understand how to create content types and attach fields to them, then that could be a straightforward way to make a form – not for creating nodes to be used later for other purposes, but solely for gathering user input. To add different types of form fields to a content type, you will need to install and enable the corresponding modules, all of which are available from Drupal.org's modules section.
Some of these modules are part of Drupal's core: File (for uploading files), List (for selection lists), Number (for integers, decimals, and floats), Options (for selection controls, checkboxes, and radio buttons), Taxonomy (for tagging content with terms), and Text (for single- and multi-line entry fields).
Other field-related modules have been contributed by the Drupal community, including:
MariqueCalcus: Prius is in Alpha 15
Today, we are very excited to announce the latest release of our Drupal 8 theme Prius. Alongside a full support of Drupal 8 Alpha 15, we have included a number of new features. This release is particularly exciting as we are one step closer to an official launch of Drupal 8. Indeed, Drupal Alpha 15 is the first candidate for a Beta release. Meaning if no new beta blocker bugs are found within the next coming days1, we could see the first Beta version of our favourite "CMS" very soon.
Read More...Commerce Guys: Commerce Guys is pleased to sponsor Symfony live
The Symfony Live events of this Fall (London, Berlin, NYC, Madrid) are around the corner, and for the first year, Commerce Guys is going to attend these events as a sponsor. Some people are wondering why, and I’d like to explain why Commerce Guys is very excited to engage with the Symfony community and its open source software vendor, SensioLabs.
In fact, there are 3 main reasons for Commerce Guys’ interest in Symfony and working tightly with SensioLabs:
It’s no secret that Drupal8 will rely on Symfony components. This architecture decision is good, and paved the way for similar thoughts on Drupal Commerce 2.0. It also ties the destinies of both open source communities, we think for the better. The work on Drupal Commerce for Drupal 8, known as Drupal Commerce 2.x, started in June 2014. During a community sprint that included members of SensioLabs and other partners like Smile, Publicis Modem, Osinet, i-KOS, Adyax, and Ekino, we validated the idea that some of the core eCommerce components of Drupal Commerce 2.x should rely on Symfony and other general PHP libraries directly. The goal is to offer an even more generic and flexible solution that spreads the impact of our code beyond the walls of the Drupal community.
This effort is well in progress already. Bojan Zivanovic, Drupal Commerce 2.x co-maintainer, provides a great example of this in a recent blog post about our new Internationalization library. He explains how much improvement this component will bring to the software for managing and formatting currencies internationally via a generic PHP library called commerceguys/intl. Expanding the reach of our work to the broader PHP community will help us get more feedback, more users, and more open source contributors, ultimately leading to better software. Ryan Szrama, Commerce Guys co-founder and Drupal Commerce CTO, will be presenting this approach at Symfony Live in New York City in October. We strongly believe this vision will bring us closer to our goal of building the most popular open source eCommerce software.
In a context where Symfony will be central to mastering Drupal 8 projects, we’ve pursued the goal to enable our development & production Platform as a Service (PaaS) for Symfony projects in general. We’re convinced that this will provide Platform.sh an edge, and wanted to be a driving force in providing tools that will fit both open source communities.
Since Spring 2014, Commerce Guys engineers have been collaborating with SensioLabs engineers to understand Symfony better. Few companies in the world have the expertise in enterprise PHP that SensioLabs has, and the Platform.sh Symfony experience is the outcome of lots of intense discussions with the SensioLabs’ team.
Our objective was to enable teams to develop and deploy Symfony projects faster and more productively on Platform.sh. That work is now done and we’re very happy to announce today that, with just a few clicks, Symfony developers can create a full Symfony development environment (starting from an existing Symfony distribution), in order to build and deploy highly scalable websites and custom applications. This will lead to a much improved development process, lots of time saved for developers and a reduced time to market from development to production. Sponsoring Symfony live is a way for Commerce Guys to share the hard work we’ve done to build a unique, cloud-based development experience for Symfony developers. We’re excited to share our work and get feedback from the Symfony community about this product.
The time we’ve spent with SensioLabs’ management team highlighted our common passion and interest: help developers be more efficient and successful and, as much as it depends on us, to enjoy their jobs even more. SensioLabs and Commerce Guys were both founded to design and develop open source frameworks, gather large and global developer communities, and enable developers to create great web experiences. Both companies aim at making developers happier and more successful by providing them the right tools. It’s on these values and fundamental principles that this partnership was built. It’s all very solid and here to stay!