Planet Drupal

Syndicate content - aggregated feeds in category Planet Drupal
Updated: 38 min 55 sec ago Drupal 6 security update for CCK

Tue, 04/18/2017 - 20:05
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpemAs you may know, a href= 6 has reached End-of-Life (EOL)/a which means the Drupal Security Team is no longer doing Security Advisories or working on security patches for Drupal 6 core or contrib modules - but the a href= 6 LTS vendors/a are and we're one of them!/em/ppstrongToday, there is a Moderately Critical security release for the CCK module to fix an Access Bypass vulnerability./strong/pp class=p1span class=s1CCK allows you to add custom fields to any content type./span/pp class=p1span class=s1spanThe Node Reference sub-module had a bug where it could list the node titles of nodes that the user doesn't have access to./span/span/ppHere you can download a href= Drupal 6 patch/a./ppstrong/strongIf you have a Drupal 6 site using the CCK module, we recommend you update immediately! We have already deployed the patch for all of our Drupal 6 Long-Term Support clients. :-)/ppstrongIf you'd like all your Drupal 6 modules to receive security updates and have the fixes deployed the same day they're released, please a href= out our D6LTS plans/a./strong/ppemNote: if you use the a href= module (totally free!), you'll be alerted to these and any future security updates, and will be able to use drush to install them (even though they won't necessarily have a release on

Pantheon Blog: Building a Network of 195 Drupal 8 Sites Using Pantheon’s Upstream

Tue, 04/18/2017 - 20:04
Fairfax County Public Schools (FCPS) is the largest school system in Virginia and the 10th largest in the United States, with more than 200 schools and centers serving 186,000 students. To keep this large community of students, parents, teachers, employees, and the general public informed, FCPS is building out a network of 195 school websites. blog: What's new on - March 2017

Tue, 04/18/2017 - 20:02
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpRead our a href= rel=nofollowRoadmap/a to understand how this work falls into priorities set by the Drupal Association with direction and collaboration from the Board and community./p pimg alt=DrupalCon Baltimore logo Apr 24-28 class=left height=127 src=/files/DrupalCon-Baltimore-Logo.png width=150 //p pThe Drupal Association team is gearing up for a href= rel=nofollowDrupalCon Baltimore/a. We're excited to see you there and we'll a href= rel=nofollowpresenting a panel/a giving an update on our work since Dublin, and our plans for the coming months./p updates/h2 h3Project application revamp/h3 pAs we a href= rel=nofollowannounced in mid-March/a, new contributors on can now create full projects and releases! Contributors no longer have to wait in the project application queue for a manual review before they are able to contribute projects./p pThis is a very significant change in the Drupal contribution landscape, and it's something we approached carefully and will continue to monitor over the coming months. Drupal has always had a reputation for a high quality code, and we want to make sure that reputation is preserved with good security signals, project quality signals, and continued incentives for peer code review./p pThat said, we're very excited to see how this change opens up Drupal to a wider audience of contributors./p pPlease note that the removal of project applications to create full projects and releases means a change in the security advisory policy (see below for details)./p h3Security Advisory Opt-in and new Security Signals for Projects/h3 div class=note-version h4Are you responsible for the security of your clients' Drupal sites?/h4 h4/h4 pPlease note that a href=//” rel=nofollowDrupal's security advisory coverage policy/a has changed. Security advisory coverage for contributed projects is now only available for projects that have strongboth/strong opted in to receive coverage strongand/strong made a stable release. You can see which projects have opted in by checking their project pages. If you have questions, please contact a /div pBecause users may now create full projects and releases without opting in to security advisory coverage, it's critically important that we provide good security signals to users evaluating projects on This is why we've added a a href= rel=nofollowsecurity coverage warning/a to projects that aren't opted in to coverage./p pWe've also:/p ullia href= rel=nofollowOpened up the opt-in process/a, allowing any maintainer of a project (not just the node author) to opt in to receive security advisory coverage/li lia href= rel=nofollowAdded a confirmation step when a user goes to make a stable release/a - this encourages users to be sure the project is ready for a release, and to opt-in to coverage if they haven't already/li lia href= rel=nofollowBlocked security advisory opt-in/a if a project has an open, public security issue/li lia href= rel=nofollowStarted displaying info about public security issues/a on project pages that haven't opted into advisory coverage/li lia href= rel=nofollowAdded a filter to project browsing pages/a to make it easier to find projects with supported stable releases/li /ulh32017 Community Elections Update/h3 pimg alt= class=left src=/files/raised-hands-elections-drop.png //p pThe a href= rel=nofollow2017 elections/a for the community-at-large seat on the board were held successfully in March. Drupal Association community board elections are conducted with the a href=;feature=related rel=nofollowInstant Runoff Voting/a system. This voting methodology requires that voters rank their preferred candidates on their ballot, and we've heard that this system has been somewhat unwieldy in the past./p pEach year we try to improve the voter experience and so this year we deployed a new drag-and-drop ballot./p p class=centerimg alt=Drag and Drop Ballot src=/files/ballot-drag-and-drop.gif //p pFinally, we want to congratulate our newest board member a href= rel=nofollowRyan Szrama/a!/p h3Better international datetime support throughout has grown organically over the course of more than a decade, and as features have been built out they were not always consistent in their display of datetime information. While it sometimes makes sense to have a few different formats for displaying date and time, many of the formats in use were simply arbitrary historical decisions./p pAs a quality of life improvement, especially for users outside of the USA, we've a href= rel=nofollowstandardized the datetime format/a used on That format is: DD MMM YYYY - hh:mm (UTC±h). For example: 11 Aug 2016 - 16:42 (UTC+8)/p h2DrupalCI/h2 h3CSS Lint check style results/h3 pimg alt=DrupalCI logo class=left height=120 src=/files/styles/grid-3/public/project-images/drupalci_0.png width=120 //p pWhen we implemented coding standards testing in DrupalCI in February we were not able to add CSS Lint testing until the CSSLint configuration file in core was fixed. That issue was fixed in late February and so we added a href= rel=nofollowCSSLint to support coding standards testing for CSS/a at the beginning of March./p h3Cleaning up coding standards results/h3 pThe addition of coding standards results to DrupalCI means that is now storing even more test data about the code we test on Our initial implementation of coding standards testing did not include clean up of older results, and so to preserve database space and testing resources, we a href= rel=nofollowimplemented some clean-up routines/a in March. In particular we are now:/p ulliCleaning up all results for closed issues/li liFor custom one-off tests, keeping results for 30 days to match what is shown on project’s automated testing tab/li liFor tests triggered on a schedule or commit, keeping the most recent per-environment per-branch, and keeping anything less than 24h old/li /ulh2Infrastructure/h2 h3Protecting Git services/h3 pWe experienced some minor Git outages in March, due to malicious authentication attempts. To mitigate these issues in the future, we've implemented fail2ban rules to protect Git authentication. This should improve the stability and uptime of Git services for all developers on pWe want to thank infrastructure volunteer a href= rel=nofollowmlhess/a for his assistance with this./p h2Community Initiatives/h2 h3Contrib Documentation Migration/h3 pNew tools for Documentation have been available on for more than half a year. While most of the core documentation has been migrated to the new system, we are still encouraging Contrib maintainers to migrate their docs./p pTo make it easier for contrib project maintainers to migrate their documentation to the new documentation tools, we've made two improvements:/p ulliMaintainers may now a href= rel=nofollowattach Documentation guides directly to their project pages/a./li liThe Documentation Guides that a user maintains are now a href= rel=nofollowlisted on their user profile/a./li /ulp———/p pAs always, we’d like to say thanks to all the volunteers who work with us, and to the Drupal Association a href= rel=nofollowSupporters/a, who made it possible for us to work on these projects. In particular we want to thank:/p ullia href= rel=nofollowCivicActions/a - *NEW* Supporting Partner/li lia href= rel=nofollowHS2 Solutions/a - *NEW* Supporting Partner/li lia href= rel=nofollowCheeky Monkey Media/a - Renewing Supporting Partner/li lia href= rel=nofollowCybage Software/a - Renewing Supporting Partner/li lia href= rel=nofollowDigital Circus/a - Renewing Supporting Partner/li lia href= rel=nofollowMessage Agency/a - Renewing Supporting Partner/li lia href= rel=nofollowQED42/a - Renewing Supporting Partner/li lia href= rel=nofollowSrijan Technologies/a - Renewing Supporting Partner/li lia href= rel=nofollowEvolving Web/a - Renewing Supporting Partner/li lia href= rel=nofollowBrightcove/a - *NEW* Technology Supporter Partner/li lia href= rel=nofollowSiteGround/a - Renewing Hosting Supporter Partner/li lia href= rel=nofollowSmartling/a - *NEW* Technology Supporter Partner/li lia href= rel=nofollowSevaa Group/a - *NEW* Technology Supporter Partner/li /ulpIf you would like to support our work as an individual or an organization, consider becoming a a href= rel=nofollowmember of the Drupal Association/a./p pFollow us on Twitter for regular updates: a href= rel=nofollow@drupal_org/a, a href= rel=nofollow@drupal_infra/a/p/div/div/div

Acquia Developer Center Blog: Getting Started with Acquia Cloud CD

Tue, 04/18/2017 - 19:19
div class=field field-name-field-blog-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg typeof=foaf:Image class=img-responsive src= width=140 height=85 alt=cloud title=cloud //div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpThe engineers at Acquia recently launched a href= Cloud CD/a, a set of developer tools to automatically and continuously assure the quality of Drupal applications on Acquia Cloud./p pTo help you get started with these powerful tools, Acquia Learning Services has created a task-oriented, hands-on tutorial, to walk you through implementing continuous integration for your Drupal application./p/div/div/divdiv class=field field-name-field-blog-tags field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/tags/acquia-drupal-planet typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=acquia drupal planet/a/div/div/div

DrupalCon News: Additional ways to participate in Drupal training

Tue, 04/18/2017 - 19:04
div class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenpA week at DrupalCon is a fantastic way to level up your skills and bring new knowledge back to your work. We have had such high interest in these training courses, that many have sold out!  We know there are still people out there who want to learn these valuable skills, and we want to be sure you have that chance, even if it's not at DrupalCon. /p/div/div/div

Web Wash: How to Crop Images using Crop API, Image Widget Crop and Focal Point in Drupal 8

Tue, 04/18/2017 - 19:00
If you’ve done any Drupal site building, I’m sure you’ve experienced this issue. You create an image style with the “Scale and crop” effect and everything is going great until an editor uploads an image with a different aspect ratio. Now instead of images getting cropped correctly, they’re getting cut in half, or the top part is chopped off, and images are not displaying nicely. You could fix this problem by tweaking the image style to handle different aspect ratios, but it’ll never be the perfect solution. The best option is to crop image directly in Drupal, and this is what you’ll learn today. In this tutorial, you’ll learn how to avoid these situations by using Crop API. Now, Crop API doesn’t offer any interface on its own; it’s just an API. The two modules that provide an interface are Image Widget Crop and Focal Point. We’ll take a look at these modules in detail, in this tutorial.

Mikkel Høgh: Why I care about the Drupal drama

Tue, 04/18/2017 - 18:23
span class=field-titleWhy I care about the Drupal drama/span div class=field-bodypThere’s been a lot said and written about the most recent drama in the Drupal community, quite a few people have asked me why I care. This is hard to answer without sounding flippant in 140 characters, so I’ve taken the time to write another blog post about the topic. This one a little less angry and more reasoned than a href= first/a./p/div span class=field-uidspanmikl/span/span span class=field-createdTue, 2017-04-18 - 18:23/span div class=field-field-tags divTags/div div diva href= hreflang=enDrupal/a/div diva href= hreflang=enDrupal Planet/a/div /div /div ul class=links inlineli class=node-readmorea href= rel=tag title=Why I care about the Drupal drama hreflang=enRead morespan class=visually-hidden about Why I care about the Drupal drama/span/a/lili class=comment-adda href= title=Share your thoughts and opinions. hreflang=enAdd new comment/a/li/ul

Xeno Media: Xeno Media’s Jim Birch presents on Bootstrap Paragraphs at Baltimore DrupalCon 2017

Tue, 04/18/2017 - 17:22
pAttendees to Baltimore's DrupalCon 2017 should check out Xeno Media Strategist Jim Birch's presentation, Bootstrap Paragraphs, on April 26 at 10:45am./p pIn it, you will learn how to combine the power of the world's most popular front end framework, Bootstrap with Drupal Paragraphs, the powerful module that allows content creators to build layouts and structured pages./p pUsing the a href= rel=nofollowBootstrap Paragraphs Drupal 8 module/a, you'll be able to create Bootstrap features like Accordions, Carousels, Modals, Tabs, and Multi-column layouts.  We'll also demonstrate how to harness the power of Drupal referencing Text, Images, Contact Forms, Blocks, and even Views!  We will also review how the module adds different widths and backgrounds which can be modified in the Drupal theme layer./p This presentation will review: ulliWhy use the Bootstrap framework?/li liWhy use the Paragraphs module?/li liWhat goes into the different types of bundles?/li liHow we add width and background options/li liHow to override, and build on top of the defaults/li /ulLearning Objectives Outcomes: p Attendees will come away learning how to build a site using the Bootstrap Paragraphs module, how to customize it in their own themes, and how to use the module as a baseline to develop their own Paragraphs bundle types./p

Colorfield: Update a project installed via composer_manager or drush to a CI based Composer template under Drupal VM

Tue, 04/18/2017 - 12:24
span property=schema:name class=field field--name-title field--type-string field--label-hiddenUpdate a project installed via composer_manager or drush to a CI based Composer template under Drupal VM/span span rel=schema:author class=field field--name-uid field--type-entity-reference field--label-hiddenspan lang= about= typeof=schema:Person property=schema:name datatype= xml:lang=christophe/span/span span property=schema:dateCreated content=2017-04-18T10:24:55+00:00 class=field field--name-created field--type-created field--label-hiddenTue, 18/04/2017 - 12:24/span div property=schema:text class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itempIf you have to go for a Drupal core update from a previous install based on composer_manager or drush (both deprecated), consider installing something robust, Composer friendly, that also enables CI tools like strongPhing/strong, strongBehat/strong, strongPHPUnit/strong, /br / If you don't have already Drupal VM installed, head to the a href=

Valuebound: How to Sync Blocks Between different environments in a Drupal 8 website

Tue, 04/18/2017 - 09:32
p dir=ltrA custom block is made of two entities, one for the placement and one for the actual content. Only the actual placement can be exported with cim. The content can not. Therefore this will result in Block description Broken/Missing error on site where the config is imported. And since there is no option to disable custom blocks from being exported through Configuration management, this will break the functionality./p p dir=ltrstrongSteps to reproduce/strong/p p dir=ltrstrongOn Site A:/strong/p blockquote pCreate custom block/p p dir=ltrAssign this custom block to any region/p p dir=ltrExport configuration of the site/p /blockquote p dir=ltrstrongOn Site B:/strong/p blockquote pImport configuration from site A…/p/blockquote

Palantir: The Draven

Mon, 04/17/2017 - 19:09
spanThe Draven/span spana title=View user profile. href= lang= about= typeof=schema:Person property=schema:name datatype= xml:lang=brandt/a/span spanMon, 04/17/2017 - 12:09/span Allison Manley time datetime=2017-04-17T12:00:00ZApr 17, 2017/timeimg src= width=1300 height=731 alt=Baltimore skyline typeof=foaf:Image /div class=lede pLet's connect at DrupalCon Baltimore, April 24 - 28, 2017./p /div In this post we will cover... ulliSessions we'll be presenting at DrupalCon/li liA fun movie trailer for PM: The Musical!/li liAn opportunity for you to sign up to meet with us/li /ulsection class=ctah3 class=cta__title /h3pWe want to speak with you at DrupalCon!/p span class=cta__link a href= a Time/a /span /sectionpemHeavily borrowing from “The Raven” by Baltimore’s own Edgar Allen Poe. /em/p pbr / Once upon a laptop dreary, with its glow so blue and eerie,br / Viewing travel sites where I could shop the online store —br / While I purchased, looked at mapping, suddenly there came a tapping,br / As of someone gently rapping, rapping at my office / “’Tis my colleague,” I muttered, “tapping at my office door —br / Helping plan for Baltimore.”/p pa href=! It is upon us! This conference of such colossus;br / 3,000 strong will be among us on the conference / Many coming from Palantir to learn and join in Drupal’s cheerbr / Coming to learn and share with those of similar rapport,br / Descending upon a a href= center/a on this eastern / Arriving to explore./p pPalantir will have a presence: strongBooth 109/strong — and we’ll have presents:br / Swag to give all those who visit our spot upon the / A photo booth will offer chances to give our visitors some glancesbr / Of how they look with props and hats of variety / They can tweet and share photos beyond that building’s / Posterity forever more!/p pThree talks will come from Palantiri, who worked hard on each topic’s / The first is 2:15 on Tuesday, and has a musical score:br /a href=“Project Management: The Musical”/a . . . could be slightly a href=!br /a href= and a href= will sing and dance on running scrums and / There’s much to learn! Don’t be fooled by the use of songs of / Room 307 – Acquia in Baltimore./p pThe next are April 27. First at noon . . . is it hell or heaven?br / Can separate teams together be something to desire or deplore?br /a href=“Successfully Integrating Teams”/a is the stuff of engineer / Mixing teams with thoughtful prep can much success / The tips to do this seamlessly a href= Plunkett/a will / Room 319 – in Baltimore./p pThe last is in the afternoon, and shows that no site is immunebr / From website content that has been continuously /a href=“Content Before Code: A D8 Case Study”/a at 2:45. Grab a buddy!br / So you too can learn how to gather content in ways to make all / “Get your content ready for launch!” a href= and a href= / Room 307 – Acquia in Baltimore./p pPalantir will host the fun at a href= Night/a, where everyonebr / Can try for fame by answering questions about / Doors will open right at 8, so hurry there and don’t be late!br / Test your skills against your friends to gain the highest / Baltimore Soundstage is the place where we shall host the / 124 Market Place in Baltimore./p pOur wish to see you there grows stronger; hesitating then no longer,br / Please know we’d love to see you at our booth or on the / Since we know that time can be fleeting, you can even a href= up a meeting/ / To discuss how we can help your project take wing, and then to soar!br /a href= us/a so we can meet that week in / DrupalCon forevermore!/p aside class=ctah3 class=cta__title /h3pWe want to speak with you at DrupalCon!/p span class=cta__link a href= a Time/a /span /asideul class=list--simpleli class=taga href= hreflang=enCommunity/a/li li class=taga href= hreflang=enDrupal/a/li li class=taga href= hreflang=enEvents/a/li li class=taga href= hreflang=enPeople/a/li /ul

Chromatic: How to Avoid the DrupalFlu

Mon, 04/17/2017 - 15:15
img src= /pThis year, don't take home the DrupalFlu along with your swag and business cards - here are some tips for staying healthy at a huge conference./p

Palantir: Project Management: The Musical! DrupalCon Trailer

Fri, 04/14/2017 - 22:10
spanProject Management: The Musical! DrupalCon Trailer/span spana title=View user profile. href= lang= about= typeof=schema:Person property=schema:name datatype= xml:lang=brandt/a/span spanFri, 04/14/2017 - 15:10/span Alex Brandt time datetime=2017-04-14T12:00:00ZApr 14, 2017/timeimg src= width=1300 height=731 alt=Allison Manley and Joe Allen-Black typeof=foaf:Image /div class=lede pCome see Project Management: The Musical! at DrupalCon Baltimore. April 25th at 2:15pm./p /div In this presentation we will cover... ulliHow to get your project organized/li liWhat analytics and KPIs to review/li liHow to handle scope creep/li li...and many more facets of project management/li /ulsection class=ctah3 class=cta__title /h3pWe want to make your project a success./p span class=cta__link a href='s Chat./a /span /sectionpiframe allowfullscreen= frameborder=0 height=315 src= width=560/iframe/p pAdditional information about this session can be found on the a href= site/a. /p p /p p /p aside class=ctah3 class=cta__title /h3pStay connected with the latest news on web strategy, design, and development./p span class=cta__link a href= up for our newsletter./a /span /asideul class=list--simpleli class=taga href= hreflang=enCommunity/a/li li class=taga href= hreflang=enDrupal/a/li li class=taga href= hreflang=enEvents/a/li li class=taga href= hreflang=enProject Management/a/li /ul

Agaric Collective: Doing links on Drupal 8

Fri, 04/14/2017 - 21:19
pThere are plenty of ways to create links when using Drupal 8 and I will share some of those ways in this post./p pThe easiest way to create internal links is using a href=!lib!Drupal!Core!Link.php/function/Link%3A%3AcreateFromRoute/8.2.xLink::createFromRoute/a/p pAnd it is used like this:/p pre class=brush: php use Drupal\Core\Link; $link = Link::createFromRoute('This is a link', 'entity.node.canonical', ['node' =gt; 1]); /prep Using the codeUrl/code object gives you more flexibility to create links, for instance, we can do the same as codeLink::createFromRoute/code method using the Url object like this: /p pre class=brush: php use Drupal\Core\Link; use Drupal\Core\Url; $link = Link::fromTextAndUrl('This is a link', Url::fromRoute('entity.node.canonical', ['node' =gt; 1])); /prepAnd actually codeLink::fromTextAndUrl/code is what Drupal recommends instead of using the deprecated codel()/code method. Passing the Url object to the link object gives you great flexibility to create links, here are some examples:br //p pstrongInternal links which have no routes:/strong/p pre class=brush: php $link = Link::fromTextAndUrl('This is a link', Url::fromUri('base:robots.txt')); /prep strongExternal links:/strong/p pre class=brush: php $link = Link::fromTextAndUrl('This is a link', Url::fromUri('')); /prep strongUsing the data provided by a user:/strong/p pre class=brush: php $link = Link::fromTextAndUrl('This is a link', Url::fromUserInput('/node/1'); /prepThe param passed to fromUserInput must start with /,#,? or it will throw an exception./p pstrongLinking entities./strong/p pre class=brush: php $link = Link::fromTextAndUrl('This is a link', Url::fromUri('entity:node/1')); /prepEntities are a special case, and there are more ways to link them: /p pre class=brush: php $node = Node::load(1); $link = $node-gt;toLink(); $link-gt;setText('This is a link'); /prepAnd even using the route: /p pre class=brush: php $link = Link::fromTextAndUrl('This is a link', Url::fromRoute('entity.node.canonical', ['node' =gt; 1])); /prep Drupal usually expects a render array if you are going to print the link, so the Link object has a method for that:/p pre class=brush: php $link-gt;toRenderable(); /prep which will return an array./p h2Final tips:/h2 pstrongSearching a route using Drupal Console/strong/p pThe easiest way to find the route of a specific path is using a href= Console/a, with the following command./p pre class=brush: bash $ drupal router:debug | grep -i \/node /prepThat will return something like:/p pre class=brush: bash entity.node.canonical /node/{node} entity.node.delete_form /node/{node}/delete entity.node.edit_form /node/{node}/edit entity.node.preview /node/preview/{node_preview}/{view_mode_id} entity.node.revision /node/{node}/revisions/{node_revision}/view entity.node.version_history /node/{node}/revisions node.add /node/add/{node_type} node.add_page /node/add node.multiple_delete_confirm /admin/content/node/delete node.revision_delete_confirm /node/{node}/revisions/{node_revision}/delete node.revision_revert_confirm /node/{node}/revisions/{node_revision}/revert node.revision_revert_translation_confirm /node/{node}/revisions/{node_revision}/revert/{langcode} search.help_node_search /search/node/help search.view_node_search /search/node view.frontpage.page_1 /node /prepListing all the possible routes with that word, we can choose one and do:/p pre class=brush: bash drupal router:debug entity.node.canonical /prepAnd that will display more information about a specific route:/p pre class=brush: bash Route entity.node.canonical Path /node/{node} Defaults _controller \Drupal\node\Controller\NodeViewController::view _title_callback \Drupal\node\Controller\NodeViewController::title Requirements node \d+ _entity_access node.view _method GET|POST Options compiler_class \Drupal\Core\Routing\RouteCompiler parameters node: type: 'entity:node' converter: paramconverter.entity _route_filters method_filter content_type_header_matcher _route_enhancers route_enhancer.param_conversion _access_checks access_check.entity /prep So in this way we can search the route without the needing to search in all the *.routing.yml files and in this example the route is codeentity.node.canonical/code and the param expected is node. /p pstrongPrint links directly within a twig template/strong/p pIt is also possible to print links directly on the twig template with the following syntax:/p pre class=brush: xml lt;a href={{url('entity.node.canonical', {'node': ) }}gt; {{ 'This is a link'|t }} lt;/agt; /prep strongAdd links inside a t() method./strong/p pIf you want to add a link inside the t() method you need to pass the link as a string, something like this:/p pre class=brush: php use Drupal\Core\Link; $link = Link::fromTextAndUrl('This is a link', Url::fromRoute('entity.node.canonical', ['node' =gt; 1])); $this-gt;t('You can click this %link' ['%link' =gt; $link-gt;toString()]); /pre

Drupal core announcements: Drupal core security release window on Wednesday, April 19, 2017

Fri, 04/14/2017 - 17:29
div class=field field-type-datestamp field-field-start7 div class=field-items div class=field-item odd div class=field-label-inline-first Start:nbsp;/div span class=date-display-single2017-04-19 span class=date-display-start12:00/spanspan class=date-display-separator - /spanspan class=date-display-end23:00/span UTC/span /div /div /div div class=field field-type-userreference field-field-organizers div class=field-labelOrganizers:nbsp;/div div class=field-items div class=field-item odd a href=/user/24722 title=View user profile.xjm/a /div div class=field-item even a href=/user/4521 title=View user profile.catch/a /div div class=field-item odd a href=/user/1639494 title=View user profile.cilefen/a /div div class=field-item even a href=/user/14705 title=View user profile.David_Rothstein/a /div div class=field-item odd a href=/user/1370143 title=View user profile.stefan.r/a /div /div /div div class=field field-type-text field-field-event-type div class=field-labelEvent type:nbsp;/div div class=field-items div class=field-item odd Online meeting (eg. IRC meeting) /div /div /div pThe monthly security release window for Drupal 8 and 7 core will take place on Wednesday, April 19./p pThis does not mean that a Drupal core security release will necessarily take place on that date for any of the Drupal 8 or 7 branches, only that you should watch for one (and be ready to update your Drupal sites in the event that the Drupal security team decides to make a release)./p pThere will be no bug fix or stable feature release on this date. The next window for a Drupal core patch (bug fix) release for all branches is Wednesday, May 03. The next scheduled minor (feature) release for Drupal 8 will be on Wednesday, October 5./p pFor more information on Drupal core release windows, see the documentation on a href= timing/a and a href= releases/a, and the a href= that led to this policy being implemented./p

I Fix Drupal: Synchronising production Drupal database to a dev environment

Fri, 04/14/2017 - 16:13
Drush has a great feature that allows you to limit the data that will be exported when you dump a database. Using this feature you can pull the schema for the entire database while specifying tables who's data you wish to ignore. This can substantially reduce the time it takes to complete an sync operation, especially the time spent importing the DB on the target. The key to this piece of magic lies inside drushrc.php, where you can predefine those lists of tables that do not require data to be dumped using this option. $options['structure-tables']['common'] = array('cache', 'cache_*', '...

Dropsolid: Online payments in Drupal

Fri, 04/14/2017 - 09:36
span class=field field--name-title field--type-string field--label-hiddenOnline payments in Drupal/span span class=field field--name-uid field--type-entity-reference field--label-hiddenspan lang= about=/en/user/2066 typeof=schema:Person property=schema:name datatype=Thierry/span/span span class=field field--name-created field--type-created field--label-hiddenFri, 04/14/2017 - 09:36/span div class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itemp class=text-align-justifyemIn this day and age, it’s very hard to imagine a world without online payments. They permeate every possible sector and purpose, ranging from banking apps to online ticket ordering and charity donations./em/p p class=text-align-justifyemDrupal has kept pace with this evolution and is offering enterprise-quality solutions to tackle most online payment needs, most notably a href= target=_blankDrupal Commerce/a with secure payment integrations. Drupal Commerce allows developers to implement different gateways to PayPal, Stripe, iDeal, Mollie and Ingenico (previously known as Ogone)./em/p p class=text-align-justifyemIn this blog post, I will explain the possibilities of the Drupal Payment module and describe an example of how to apply it together with a href= target=_blankMollie/a, a rising star in the realm of payment service providers./em/p p class=text-align-justify /p h4 class=text-align-justifyDrupal Payment module/h4 p class=text-align-justify dir=ltrAre you looking to make people pay for their membership when they register for an account? Then you will have to integrate an easily manageable payment system into your /br / In situations like these and more, Drupal’s a href= target=_blankPayment module/a can act as a bridge to a secure payment integration. You can implement different payment gateways that communicate directly with the Payment module. This means that all incoming payments from various payment service providers are stored in a centralised /br / The Payment module integrates well with Drupal Commerce and Ubercart, but you can even integrate the module into any kind of entity with both the Payment form field and the Payment reference /br / Do you think this might suit your need as an out-of-the-box solution for a simple integration with Drupal Webforms or a basic donation form with Drupal Payment integration? They are available for download on a href= /  /p h4 class=text-align-justify dir=ltrPayment Service Providers/h4 p class=text-align-justify dir=ltrIf you would like to receive online payments through you website, you'll have to implement an actual payment service provider. The most commonly used payment providers in the Benelux are Ingenico, Paypal and Mollie./p h4 class=text-align-justify dir=ltrbr / Mollie/h4 p class=text-align-justifyMollie has become very popular very quickly, because it charges a transaction-based fee instead of a monthly subscription. This means that you will not be charged if there are no transactions, which is perfect for projects that do not (yet) generate a lot of transactions./p p class=text-align-justifyTo allow for easy integration, Mollie provides developers with a very good API. Drupal (and other) developers can access the available RESTful service or a PHP API library, which makes it possible to implement logic - for example to refund a customer through the / If your Drupal project does not require automatic refunding of customers, you can use the a href= target=_blankemmollie_payment /em/amodule, which uses Mollie’s PHP API /  /p h4 class=text-align-justifyExample: enabling a payment method/h4 p class=text-align-justifyTo enable payments with Mollie, you have to define a payment method using the so-called emMolliePaymentMethodController/em. The controller is defined in the Mollie Payment module and uses Mollie's PHP API library to process the requests./p p class=text-align-justifyYou can add the Payment method through the module install file:/p p class=text-align-justifymeta charset=utf-8 //p tablecolgroupcol width=* //colgrouptbodytrtd pre code class=language-php/** * Add payment method (Mollie) */ function MYMODULE_update_7001(){ $mollie = new PaymentMethod(array( 'controller' =gt; payment_method_controller_load('MolliePaymentMethodController'), 'controller_data' =gt; array('mollie_id' =gt; 'test_AA11bb22CC33dd44EE55ff66GG77hh'), 'name' =gt; 'pay_with_mollie', 'title_generic' =gt; 'Pay with Mollie', 'title_specific' =gt; 'Pay with Mollie', )); entity_save('payment_method', $mollie); }/code/pre p /p /td /tr/tbody/tableh4Forms embedding a payment form/h4 pStart by defining a simple form, extendable with multiple form elements available in Drupal’s Form API./p pmeta charset=utf-8 //p tablecolgroupcol width=* //colgrouptbodytrtd pre code class=language-php/** * Callback function to build a basic payment form. * * @param array $form * The form build array. * @param array $form_state * The form state information. */ function MYMODULE_form($form, $form_state) { $form = array(); // Add form actions. $form['actions'] = array( '#type' =gt; 'actions', ); $form['actions']['save'] = array( '#type' =gt; 'submit', '#value' =gt; t('Pay with Mollie'), ); return $form; }/code/pre p /p /td /tr/tbody/tablep class=text-align-justifyThis form is then capable to embed a payment form, provided by the Payment module. In order to do this, you should first define a Payment object. This will provide all the payment methods that have to be integrated in the payment form. You can pass context and context data for reference and later use, the currency you are making a payment in and the callback that has to be executed after a payment has been done./p p class=text-align-justifymeta charset=utf-8 //p tablecolgroupcol width=* //colgrouptbodytrtd pre code class=language-php// Define a payment object. $payment = new Payment(); $payment-gt;context = 'donation'; $payment-gt;context_data = array( 'time' =gt; time(), 'type' =gt; 'donation', ); $payment-gt;currency_code = 'EUR'; $payment-gt;description = 'Basic payment form'; $payment-gt;finish_callback = 'MYMODULE_finish_callback';/code/pre p /p /td /tr/tbody/tablep class=text-align-justifyA single payment object can contain multiple items. Useful if you would like to implement this in a commerce environment. In this example, a single line item will define the total amount that has to be paid. Don't forget to define the price without taxes, because the Payment module will handle all tax calculations./p pre code class=language-php// Define a payment line item. $line_item = new PaymentLineItem(); $line_item-gt;amount = 100.00 / 1.21; $line_item-gt;name = t('EUR 100'); $line_item-gt;tax_rate = 0.21; $line_item-gt;quantity = 1; // Add the payment line item to the payment object. $payment-gt;setLineItem($line_item);/code/pre p class=text-align-justify /p p class=text-align-justifymeta charset=utf-8 //p p class=text-align-justify dir=ltrBy assigning the payment object to the form, you can use the transferred information in a later stage - for instance during /  /p pre code class=language-php// Add the payment object to the form. $form_state['payment'] = $payment;/code/pre p class=text-align-justify dir=ltrYou can use multiple payment methods with the payment module. In this example, Mollie is forced as the only payment option available. It is of course also possible to add multiple methods in the payment options and to allow people to pick their payment method of choice./p p class=text-align-justify dir=ltr /p p class=text-align-justify dir=ltrmeta charset=utf-8 //p pre code class=language-php// Get available payment methods and limit this form to Mollie payment. $payment_methods = $payment-gt;availablePaymentMethods(); $payment_options = array(); foreach ($payment_methods as $payment_method) { if ($payment_method-gt;enabled amp;amp; $payment_method-gt;name == 'pay_with_mollie') { $payment_options[] = $payment_method-gt;pmid; } }/code/pre p class=text-align-justify dir=ltrTo include the payment form into your custom form, you have to call the payment_form_embedded function. The function will use the payment object and the available payment options to build the required form elements and form actions. Then assign the payment elements and submit action to your custom form in order to enable the payment./p pre code class=language-php// Get the payment embed elements. $payment_embed_form = payment_form_embedded($form_state, $payment, $payment_options); // Add the embedded payment form element. $form['payment'] = $payment_embed_form['elements']; // Define the form submit callback. $form['#submit'] = $payment_embed_form['submit'];/code/pre p class=text-align-justify dir=ltrWhen defining the payment object, you actually define a finished callback. This callback will be triggered after a successful payment from the Mollie payment service provider. To be certain, you could check if there is a payment success status within the payment object and run any additional callbacks if needed./p p class=text-align-justify dir=ltrmeta charset=utf-8 //p tablecolgroupcol width=* //colgrouptbodytrtd pre code class=language-php/** * Handle successful payment from Mollie. * * @param \Payment $payment * The returned payment object containing all relevant information. */ function MYMODULE_finish_callback(Payment $payment) { $payment_complete = FALSE; // Check if the payment status contains a successful state. foreach ($payment-gt;statuses as $status) { if ($status-gt;status == 'payment_status_success') { $payment_complete = FALSE; break; } } if ($payment_complete) { drupal_set_message('Your payment has been received.', 'success'); // @TODO: Implement custom callbacks. } }/code/pre p /p /td /tr/tbody/tableh4Conclusion/h4 p class=text-align-justifyAs you noticed, it's not that hard to implement a payment workflow in your own form! /p p class=text-align-justifyOne final tip: use form validation to check if all requirements are met before people are redirected to the payment service provider./p p class=text-align-justifyI hope this blog post has helped you to make payments in Drupal easier. Feel free to leave a comment below if you have any questions or if you would like to share some thoughts on different possible approaches./p /div section class=field field--name-field-blog-comments field--type-comment field--label-above comment-wrapper h2 class=title comment-form__titleAdd new comment/h2 drupal-render-placeholder callback=comment.lazy_builders:renderForm arguments=0=nodeamp;1=499amp;2=field_blog_commentsamp;3=comment token=b89f0c65/drupal-render-placeholder /section div class=field field--name-field-header-image field--type-image field--label-above div class=field__labelHeader image/div div class=field__item img src=/sites/default/files/2017-04/till.jpeg width=940 height=623 alt=till - cash register typeof=foaf:Image / /div /div div class=field field--name-field-tags field--type-entity-reference field--label-above div class=field__labelTags/div div class=field__items div class=field__itema href=/taxonomy/term/64 hreflang=undDrupal 8/a/div div class=field__itema href=/nl/taxonomy/term/143 hreflang=nlTech/a/div /div /div div class=field field--name-field-teaser-image field--type-image field--label-above div class=field__labelTeaser image/div div class=field__item img src=/sites/default/files/2017-04/till_0.jpeg width=940 height=623 alt=till - cash register typeof=foaf:Image / /div /div div class=field field--name-field-publish-to-drupal-planet field--type-boolean field--label-above div class=field__labelPublish to Drupal planet/div div class=field__itemOn/div /div

Aten Design Group: See you at DrupalCon Baltimore, hon!

Thu, 04/13/2017 - 19:56
img src= width=1000 height=600 alt= /pIt’s that time of year again when the Drupal community of developers, designers, strategists, project managers and more come together for the biggest Drupal event in the world: DrupalCon North America. This year, from April 24-28, we'll be in Baltimore and here’s where you can find us:/p h3The Aten Booth/h3 pBe sure to stop by booth 216 in the exhibit hall, we’d love to chat about the successes and challenges you face in your web projects. We’ll also have our sought-after sketchbooks to add to your collection./p h2Monday, April 24/h2 h3Nonprofit Summit/h3 pWe are thrilled to support the newly added a href= Summit/a at DrupalCon this year. a href=, Aten’s Director of Digital Strategy/a, and a href=, Aten’s Director of Engineering/a, work closely together and are sharing tips to create intuitive and compelling experiences for organizations to successfully connect with their users./p h2Tuesday, April 25/h2 pa href= Drupal 8’s Libraries API/abr / Matt Jagerbr / 2:45 p.m. - 3:15 / Room: 307 - Acquia/p h2Wednesday, April 26/h2 pa href= an Interactive SVG and JavaScript Game Engine with Drupal/abr / Peter Weberbr / 2:45 p.m. - 3:15 / Room: 307 - Acquia/p pa href= Type System for Tomorrow/abr / Gabe Sullicebr / 3:45 p.m. - 4:45 / Room: 318 - New Target/p h2Thursday, April 27/h2 pa href= for the Brave and True/abr / Gabe Sullicebr / 10:45 a.m. - 11:45 a.m. Room: 315 - Symfony/p

Mediacurrent: Inclusive Development: Using Style Guides to Improve Website Accessibility

Thu, 04/13/2017 - 17:58
img typeof=foaf:Image src= width=200 height=152 alt=Inclusive Development: Using Style Guides to Improve Website Accessibility title=Inclusive Development: Using Style Guides to Improve Website Accessibility / h2What exactly is the role of a Front-end developer?/h2 pWhat exactly does it mean to be a 'front-end developer'? From company to company? From website to website? Really, from day to day? Does your colleague actually do the same job as you? For example, some days I’m working in InDesign or Photoshop all day, the next I’m writing jQuery or building theme components. The very next day I am writing a blog post, prepping for a presentation, or doing research on the latest trends./p

Mediacurrent: Inclusive Development: Using Style Guides to Improve Website Accessiblity

Thu, 04/13/2017 - 17:58
img typeof=foaf:Image src= width=200 height=152 alt=Inclusive Development: Using Style Guides to Improve Website Accessibility title=Inclusive Development: Using Style Guides to Improve Website Accessibility / h2What exactly is the role of a Front-end developer?/h2 pWhat exactly does it mean to be a 'front-end developer'? From company to company? From website to website? Really, from day to day? Does your colleague actually do the same job as you? For example, some days I’m working in InDesign or Photoshop all day, the next I’m writing jQuery or building theme components. The very next day I am writing a blog post, prepping for a presentation, or doing research on the latest trends./p