Planet Drupal

Syndicate content
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 40 min 51 sec ago

Acquia Developer Center Blog: Percona Live 2017 Blog Post: ProxySQL as a Failover Option for Drupal

Tue, 06/20/2017 - 16:41
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=https://dev.acquia.com/sites/default/files/styles/blog__190_x110_/public/blog/proxysql2.png?itok=fW8_I5jg width=140 height=85 alt=proxySQL title=proxySQL //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:encodedpOne of the more interesting products to hit the spotlight at this year's a href=https://www.percona.com/live/17/Percona Live/a Open Source Database conference was a href=http://www.proxysql.com/ProxySQL/a./p pThis open source MySQL proxy server has been around for a couple of years now and keeps adding more features. The current release (1.3.6) has the usual features that you would expect from a proxy server, like load balancing and failover support, but ProxySQL also has database specific features like a query cache and query routing./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

Amazee Labs: Submit your Site Building Session to DrupalCon Vienna

Tue, 06/20/2017 - 14:19
spanSubmit your Site Building Session to DrupalCon Vienna/span div class=field field-node--field-lead field-name-field-lead field-type-text-long field-label-hidden div class=field-items div class=field-itempa href=https://events.drupal.org/vienna2017DrupalCon Vienna/a will be taking place end of September this year. The site building track is about letting Drupal do the hard work without needing to write code. By assembling the right modules and configurations we can create rich and complex features, without worrying about reinventing the wheel and write complex logic and code./p/div /div /div spana href=/en/josef-dabernig title=View user profile. lang= about=/en/josef-dabernig typeof=schema:Person property=schema:name datatype= class=usernameJosef Dabernig/a/span spanTue, 06/20/2017 - 14:19/span div class=field field-node--field-image field-name-field-image field-type-image field-label-hidden div class=field-items div class=field-itemimg class=image-style-blog-full src=https://www.amazeelabs.com/sites/default/files/styles/blog_full/public/29352912353_7a61b5095e_k.jpg?itok=IZQg5qhe width=580 height=387 alt=DrupalCon Session typeof=foaf:Image / /div /div /div div class=field field-node--body field-name-body field-type-text-with-summary field-label-hidden div class=field-items div class=field-itemp dir=ltrSounds great, right? As excited as I am for helping to put together the program for the site building track, I would like to share a few session ideas, which might be worth submitting. If you have never submitted a session for DrupalCon, this might be a good opportunity to give it a try:  /p p dir=ltremShowcases/em will let others learn from how you built your last exciting Drupal 8 project. Talking points can include which approaches you took, lessons you learnt from working on the project, and what fellow site builders should know when tackling similar problems./p p dir=ltremModule presentations/em are a great way to explain and highlight best practice solutions. How do you choose from the various competing site building tools available to address problems like layout management, workflows or content modelling? Are the same solutions from Drupal 7 still valid, or what are the latest experiences you've had whilst building Drupal 8 sites and how could this be further developed and enhanced in the future?/p p dir=ltremProcess descriptions/em are welcome to help us figure out how site building can best fill the gap between end users, content editors, developers, UX designers and anyone else involved in Drupal web projects. How do you involve your customers and explain site building to them? What does a developer need from a site builder and where do those practices blend? /p p dir=ltremOutside perspectives/em are also welcomed to learn how problems can be solved the site builder’s way in related web technologies./p p dir=ltrTogether with a href=https://www.drupal.org/u/hernaniHernâni Borges de Freitas/a and a href=https://www.drupal.org/u/dboegerDustin Boeger/a, we are looking forward to reviewing your exciting and interesting applications. If you aren’t sure what to present, feel free to get in touch via the contact form on my a href=https://www.drupal.org/u/dasjoDrupal.org profile/a or a href=https://twitter.com/dasjoTwitter/a./p p dir=ltrThanks for a href=https://events.drupal.org/vienna2017/submit-sessionsubmitting your session/a by June 28, 23:59 CEST./p/div /div /div

ComputerMinds.co.uk: Help Drupal help your configuration

Tue, 06/20/2017 - 14:00
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-items id=md1div class=field-item even itemprop=articleBodypDefine a schema for any bespoke configuration, it's not too hard. It's needed to make it translatable, but Drupal 8 will also validate your config against it so it's still handy on non-translatable sites. As a schema ensures your configuration is valid, your code, or Drupal itself, can trip up without one. Set up a schema and you avoid those problems, emand/em get robust validation for free. Hopefully my example YAML shows how it can be quite simple to do./p /div/div/div

Cheppers blog: On Being Human at DrupalCon Vienna - Call for Papers closes in a week

Tue, 06/20/2017 - 13:09
a href=https://cheppers.com/being-human-drupalcon-vienna-call-papers-closes-week img src=https://cheppers.com/sites/default/files/styles/cheppers_blog_teaser_mobile/public/Being_Human_DrupalConVienna_0.png?itok=WwU4RoaZ width=536 height=300 alt= class=image-style-cheppers-blog-teaser-mobile //a pAround two years ago, when the launch of Drupal 8 was just around the corner and the main topic of concern was the status of the issue queue, the Drupal community slowly started murmuring about a topic outside of technical solutions and patches. As a result, a brand new DrupalCon track was introduced - Being Human. Our COO, Zsófi is the Being Human local track chair at DrupalCon Vienna - this is her Call for Papers./p

Appnovation Technologies: PHP Speakers Wanted For DrupalCon Vienna 2017

Tue, 06/20/2017 - 12:43
PHP Speakers Wanted For DrupalCon Vienna 2017 On 28th June (23:59 Vienna local time (GMT +2)) session submissions will close for DrupalCon Vienna 2017 and we're looking for more great speakers. After volunteering on the Core Conversation track team last year, I am now helping the PHP track team find and select sessions for this year's European conference. As PHP the foundation for...

Agiledrop.com Blog: AGILEDROP: DrupalCon sessions about DevOps

Tue, 06/20/2017 - 10:55
a href=http://www.agiledrop.com/blog/drupalcon-sessions-about-devopsimg src=https://www.agiledrop.com/sites/default/files/2017-06/coding-699318_640.jpg //a Last time, we gathered together DrupalCon Baltimore sessions about Front End. Before that, we explored the area of Site Building, Drupal Showcase, Coding and Development, Project Management and Case Studies. And that was not our last stop. This time, we looked at sessions that were presented in the area of DevOps. 100% Observability by Jason Yee from Datadog In this session, the author broke down the expansive monitoring landscape into 5 categories and provided a framework to help users ensure full coverage. He also touched why these categories are important to users business and shared the… a href=http://www.agiledrop.com/blog/drupalcon-sessions-about-devopsREAD MORE/a

Commerce Guys: Drupal Commerce integration with Square payments released

Mon, 06/19/2017 - 21:41
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpimg src=https://commerceguys.com/sites/default/files/blog/files/Drupal%2BCommerce.png alt=Drupal Commerce and Square //p pSquare's pitch is pretty straightforward: accept payments anywhere, no coding required. They nailed this first through their simple phone based card readers and their slick in-store tablet interface. They also made it easy to process all major credit cards, guaranteeing deposits as soon as the emnext business day/em./p pThey're now rolling out their same great support for merchants online with the steady release of open APIs for eCommerce applications. With our recently released a href=https://www.drupal.org/project/commerce_squareCommerce Square/a module for Drupal 7 and Drupal 8, you can now pitch Drupal Commerce to existing Square customers in your area./p pThus far we integrate their payment APIs for full checkout and administrative support in Commerce 1.x and 2.x. We're working with Square to integrate new APIs as they become available in pursuit of our vision to enable the turnkey creation of online stores for Square merchants using Drupal Commerce./p pAmong the module's primary benefits, especially when used in conjunction with Square for retail sales, are:/p ul liYou can sell online, and in person, with all of your sales in one place. Integrating your physical and online retail operations will ultimately simplify the management of your business. liAccept all major cards, (including Apple Pay and Android Pay in-store) and pay one simple rate per tap, dip, or swipe. (Note: Square also offers custom rates for qualifying stores processing over $250k annually.) liIntegration is simple and seamless for Drupal Commerce on both Drupal 7 and Drupal 8. (Look for new features to come into the D8 branch first and be backported, as additional contributed modules may be required to make up for core features that were added in Commerce 2.x.) /ul pSquare’s eCommerce API is on the bleeding edge of integration technology, making PCI compliance easy; customer credit card information never touches your website, so you don’t need to worry or complete a single checklist. Each component of the payment method form is an embedded iframe hosted on Square's server and returns a payment token identifier used to capture payment. We actually designed the Commerce 2.x checkout form to treat these types of payment methods as emfirst class/em citizens, so expect the integration to just work./p h2Sign up for Square and get free processing on your first $5,000 in sales./h2 pAs part of our module launch effort, Square has teamed up with us to offer free processing on your first $5,000 in sales. If you or one of your customers are interested in learning more, a href=https://squareup.com/signup?signup_token=66E4C36F?utm_campaign=square_module_released_for_drupal_commerce_1x_2xamp;utm_medium=emailamp;utm_source=newsletteramp;utm_term=2017-06-15review the offer details here/a and hit us up in the issue queue if you run into any problems!/p /div/div/div

Acquia Developer Center Blog: Introducing Reservoir, a Distribution for Decoupling Drupal

Mon, 06/19/2017 - 19:51
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=https://dev.acquia.com/sites/default/files/styles/blog__190_x110_/public/blog/gettyimages-94100732.jpg?itok=i8pLPgtb width=140 height=85 alt=A reservoir title=A reservoir //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:encodedpReservoir is an experimental Drupal distribution that is an exceptional starting point for any decoupled Drupal implementation. It is also designed to on-board developers of all backgrounds: stronga decoupled Drupal distribution and optimal back end for every developer./strong/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

Drupal core announcements: Drupal core security release window on Wednesday, June 21, 2017

Mon, 06/19/2017 - 06:32
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-06-21 12:00 America/New_York/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 xjm /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, June 21./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, July 05. 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=http://drupal.org/documentation/version-info#whenrelease timing/a and a href=http://drupal.org/node/1173280security releases/a, and the a href=http://groups.drupal.org/node/260803discussion/a that led to this policy being implemented./p

fluffy.pro. Drupal Developer's blog: Drupal tester: docker image for testing Drupal projects

Sun, 06/18/2017 - 12:19
div dir=ltr style=text-align: left; trbidi=ondivRecently I set out to make a simple instrument for running simpletest tests without having LAMP stack installed on your local environment. I needed this for two reasons:/divdivol style=text-align: left;lifor running tests locally/lilifor running tests on CI server/li/oldivI#39;ve decided to use a href=https://www.docker.com/ target=_blankDocker/a and create monolith container with Drupal and all the LAMP stuff inside and here what I#39;ve got: a href=https://github.com/PavelLoparev/drupal-tester target=_blankdocker-tester/a.br/div/div/diva href=http://www.fluffy.pro/2017/06/drupal-tester-docker-image-for-testing.html#moreRead more »/a

Evolving Web: Migrating Content Translated with Content Translation from Drupal 7 to Drupal 8

Sat, 06/17/2017 - 17:55
a href=https://evolvingweb.ca/blog/migrating-content-translated-content-translation-drupal-7-drupal-8?utm_source=feedutm_medium=feed_image img src=https://evolvingweb.ca/sites/default/files/styles/ewsite8_blog_image/public/2017-06/iStock-92886807-languages-compressed.jpg?itok=KEULai3X width=720 height=254 alt=Languages typeof=Image class=img-responsive //apSince the release of Drupal 8 with a standardized way of managing translations, many sites running Drupal 7 are making a switch to Drupal 8. In Drupal 7 there are two ways to translate content:/p olliUsing the strongcontent_translation/strong module. The D7 core way of translating content, where every translation is a separate node./li liUsing the strongentity_translation/strong module. Maintains one node with a unique codenid/code, while translations take place at the field level./li /olpIn this article we will discuss how to migrate content translations created with the emcontent_translation/em module from Drupal 7 to Drupal 8. You can a href=https://evolvingweb.ca/blog/migrating-content-translated-entity-translation-drupal-7-drupal-8find our tutorial about migrating translations that use Entity Translation here/a./p pThis article would not have been possible without the help of my colleague a href=https://evolvingweb.ca/about-evolvingweb/dave-vasilevskyDave/a. ¡Gracias Dave!/p h3The problem/h3 pWe have a a href=https://github.com/jigarius/drupal-migration-i18n-example/blob/8.x/dump/sandbox_d7_content.sqlDrupal 7 database/a containing emarticle/em nodes, which might have translations in English, Spanish and French. Some of these nodes are language-neutral, i.e. non-translatable. Our target is to migrate the Drupal 7 nodes into a Drupal 8 website, preserving the translations./p h3Before we start/h3 ulliSince this is an advanced migration topic, it is assumed you already know the basics of migration. If are new to migrations in Drupal 8, I recommend that you read about a href=https://evolvingweb.ca/blog/drupal-8-migration-migrating-basic-data-part-1migrating basic data to Drupal 8/a first./li liIf you'd like to run the migrations in this example yourself, see the a href=https://github.com/evolvingweb/migrate_example_i18n#quick-startquick-start/a documentation in our a href=https://github.com/evolvingweb/migrate_example_i18ndrupal migration i18n example/a repository./li liThe source website used in this example is Drupal 7.54./li liThe destination website used in this example is Drupal 8.3.x. However, an alternative solution for earlier versions is included towards the end of the article./li /ulh3The module/h3 pTo write the migrations, we create a module - in our case, emmigrate_example_i18n/em. There's nothing special about the module declaration, except for the dependencies:/p ullia href=https://www.drupal.org/project/migrate_plusmigrate_plus/a and a href=https://www.drupal.org/project/migrate_toolsmigrate_tools/a provide various features for defining and executing migrations./li lia href=https://www.drupal.org/project/migrate_source_csvmigrate_source_csv/a: Will be used for demonstrating migration of translated content from non-Drupal sources in an upcoming article./li listrongmigrate_drupal:/strong This module provides tools for migrating data from older versions of Drupal. It comes with Drupal 8.x core. Since this migration uses a Drupal 7 site as a source for its data, we need the emmigrate_drupal/em module./li /ulh3How do translations work?/h3 ul/ulpBefore jumping into writing these migrations, it is important to mention that Drupal 7 and Drupal 8 translations work very differently. Here's the difference in a nutshell:/p ullistrongDrupal 7:/strong When we translate a node, a new node is created with a different ID. This translated node has a property named codetnid,/code which stores the ID of the original node, linking the two nodes together. For language-neutral or untranslated content, the codetnid/code is set to 0./li listrongDrupal 8:/strong When we translate a node, no new node is created! The translation is saved in the fields of the original node, but with a different language code./li /ulpSo just like we do when a href=https://evolvingweb.ca/blog/migrate-translated-content-drupal-6-drupal-8migrating translated content from Drupal 6 to Drupal 8/a, we create two migrations:/p ulliThe a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/config/install/migrate_plus.migration.example_dog_base.ymlexample_dog_base/a migration will migrate the original content of each node, untranslated./li liThe a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/config/install/migrate_plus.migration.example_dog_i18n.ymlexample_dog_i18n/a migration will migrate only translations and associate them with original content created by example_dog_base./li /ulpWe group the two migrations using the a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/config/install/migrate_plus.migration_group.example_dog.ymlexample_dog/a migration group to keep things clean and organized. Then we can execute both migrations with codedrush migrate-import --group=example_dog --update/code./p h3Step 1: Base migration/h3 pWe start with a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/config/install/migrate_plus.migration.example_dog_base.ymlexample_dog_base/a to migrate all base data or non-translations. Described below are some noteworthy parameters:/p h4Source/h4 pre code class=highlightsource: plugin: d7_node node_type: article key: drupal_7_content constants: uid_root: 1 node_article: 'article'/code/preullistrongplugin:/strong Since we want to import data from a Drupal installation, we need to set the source plugin to coded7_node/code. The coded7_node/code source plugin is introduced by the codemigrate_drupal/code, module and it helps us read nodes from a Drupal 7 database without having to write queries manually. Since Drupal 8.3.x, this plugin supports translations created with the content_translation module. If you are using an older version of Drupal 8, then check the alternative solution provided towards the end of this article./li listrongnode_type:/strong This tells the source plugin that we are interested in just one particular Drupal 7 node type, namely emarticle/em./li listrongkey:/strong Our Drupal 7 data doesn't come from our main Drupal 8 database - instead it comes from a secondary database connection. We choose a key to identify each such connection and we need to tell the source which such key to use. The keys themselves are defined in the code$databases/code variable in our codesettings.php/code or codesettings.local.php/code. See the example a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/dump/settings.local.phpsettings.local.php/a file to see how it's done./li listrongconstants:/strong We define some hard-coded values under this parameter./li listrongtranslations:/strong Notice there is strongno/strong codetranslations/code parameter here. The default value (codefalse)/code tells the source plugin that we're only interested in migrating non-translations, i.e. content in the base language and language-neutral content./li /ulh4Destination/h4 pre code class=highlightdestination: plugin: 'entity:node'/code/preullistrongplugin:/strong Since we want to create node entities in Drupal 8, we specify this as codeentity:node/code. That's it./li listrongtranslations:/strong Again we do strongnot/strong define the translations parameter while migrating base data. Omitting the parameter tells the destination plugin that we are interested in creating fresh nodes for each record, not translations of existing nodes./li /ulh4Process/h4 pre code class=highlighttype: constants/node_article langcode: plugin: default_value source: language default_value: und uid: constants/uid_root title: title body: body field_one_liner: field_one_liner sticky: sticky status: status promote: promote/code/prepThis is where we map the old node properties to the new node properties. Most of the properties have been assigned as is, without alteration, however, some noteworthy properties have been discussed below:/p ullistrongnid/strongstrong: /strongThere is strongno/strong codenid/code parameter here, because we don't care what nid each new node has in Drupal 8. Drupal can just assign a new nid to each node in the normal way./li listrongtype:/strong We specify that we want to create emarticle/em nodes./li listronglangcode:/strong The codelangcode/code parameter was formerly codelanguage/code in Drupal 7, so we rename it here. Also, if a Drupal 7 node is language-neutral, the codelanguage/code property will have no value. In that case,  we default to codeund/code./li /ulpThis takes care of the base data. If we run this migration with codedrush migrate-import example_hybrid_base --update/code, all Drupal 7 nodes which are in base language or are language-neutral will be migrated into Drupal 8./p h3Step 2: Translation migration/h3 pWe are halfway through now! All that's missing is migrating translations of the nodes we migrated above. To do this, we create another migration with the ID a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/config/install/migrate_plus.migration.example_dog_i18n.ymlexample_dog_i18n/a:/p pre code class=highlightsource: plugin: d7_node node_type: article translations: true # ... destination: plugin: 'entity:node' translations: true process: nid: plugin: migration source: tnid migration: example_dog_base langcode: language # ... migration_dependencies: required: - example_dog_base/code/preullistrongsource:/strong ullistrongtranslations:/strong We set this to codetrue/code to make the source plugin read only translations./li /ul/li listrongdestination:/strong ullistrongtranslations:/strong We set this to codetrue/code to make the destination plugin create translations for existing nodes instead of creating fresh new nodes./li /ul/li listrongprocess:/strong ullistrongnid:/strong In this case, we strongdo/strong care what the Drupal 8 codenid/code is for each node. It has to match the codenid/code for the untranslated version of this content, so that Drupal can add a translation to the correct node. This section uses the a href=https://www.drupal.org/docs/8/api/migrate-api/migrate-process/process-plugin-migrationcodemigration/code/a (migration_lookup) process plugin to figure out the right codenid/code. It tells Drupal to check the previously-executed codeexample_hybrid_base/code migration for a D6 node that has the same codetnid/code as this D6 node. It will then then reuse the resulting codenid/code here./li listronglangcode:/strong We define the language in which the translation should be created./li /ul/li listrongmigration_dependencies:/strong Since we cannot add translations to nodes that do not yet exist, we tell Drupal that this migration depends on the base migration codeexample_dog_base/code. That way, the base migration will run before this migration./li /ulpThat's it! We can run our translation migration with codedrush migrate-import example_dog_i18n --update/code and the translations will be imported into Drupal 8. Alternatively, we can use the migration group we defined to run both these migrations at once - the embase/em migration will automatically be executed first and then the emi18n/em migration. Here's how the output should look:/p pre code class=language-bash highlight$ drush migrate-import --group=example_dog --update Processed 7 items (7 created, 0 updated, 0 failed, 0 ignored) - done with 'example_dog_base' Processed 7 items (7 created, 0 updated, 0 failed, 0 ignored) - done with 'example_dog_i18n'/code/prepYou can check if everything went alright by clicking the codeTranslate/code option for any translated node in Drupal 8. If everything went correctly, you should see that the node exists in the original language and has one or more translations./p pfigure role=group class=align-centerimg alt=Article migrated from Drupal 7 to Drupal 8 data-entity-type=file data-entity-uuid=13772db3-374d-4237-b917-4237be5f6b89 src=https://evolvingweb.ca/sites/default/files/inline-images/article%20migrated%20from%20drupal%207%20to%20drupal%208.png /figcaptionArticle migrated from Drupal 7 to Drupal 8/figcaption/figure/p h3Alternate Solution for Drupal 8.2.x and Older/h3 pThe example code for this article works out of the box with Drupal 8.3 or higher. However, it will not work with earlier versions of Drupal 8. For Drupal 8.2 or older, we need to use a custom source plugin (inspired by the emd6_node/em plugin). All we have to do is use the a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/src/Plugin/migrate/source/D7NodeContentTranslation.phpD7NodeContnentTranslation/a source plugin included in the code for this example, like codesource: d7_node_content_translation/code. This custom source plugin adds support for the codetranslations/code parameter, which in turn makes the migration of content translations work correctly./p h3Next Steps/h3 ulliView the code for the a href=https://github.com/evolvingweb/migrate_example_i18n/migrate_example_i18n/a project on GitHub./li liRead about a href=https://evolvingweb.ca/blog/migrating-entity-translations-drupal-7-drupal-8migrating entity translations from Drupal 7 to Drupal 8/a./li liRead about a href=https://evolvingweb.ca/blog/migrate-translated-content-drupal-6-drupal-8migrating translated content from Drupal 6 to Drupal 8/a./li liRead about a href=https://evolvingweb.ca/blog/migrate-translations-csv-json-or-xml-drupal-8migrating translations from CSV, JSON or XML to Drupal 8/a./li liNew to Drupal 8 migrations? Start with a href=https://evolvingweb.ca/blog/drupal-8-migration-migrating-basic-data-part-1Drupal 8 migration basics/a./li /ula href=https://evolvingweb.ca/blog/migrating-content-translated-content-translation-drupal-7-drupal-8?utm_source=feedutm_medium=more target=_blank+ more awesome articles by Evolving Web/a

Evolving Web: Migrating Content Translated with Entity Translation from Drupal 7 to Drupal 8

Sat, 06/17/2017 - 17:39
a href=https://evolvingweb.ca/blog/migrating-content-translated-entity-translation-drupal-7-drupal-8?utm_source=feedutm_medium=feed_image img src=https://evolvingweb.ca/sites/default/files/styles/ewsite8_blog_image/public/2017-06/iStock-92886807-languages-compressed_0.jpg?itok=QPw8XPI7 width=720 height=254 alt=Languages typeof=Image class=img-responsive //apSince the release of Drupal 8 with a standardized way of managing translations, many sites running Drupal 7 are making a switch to Drupal 8. In Drupal 7 there are two ways to translate content:/p olliUsing the strongcontent_translation/strong module. The D7 core way of translating content, where every translation is a separate node./li liUsing the strongentity_translation/strong module. Maintains one node with a unique codenid/code, while translations take place at the field level./li /olpIn this article we will discuss how to migrate content translations created with the a href=https://www.drupal.org/project/entity_translationentity_translation/a module from Drupal 7 to Drupal 8. You can a href=https://evolvingweb.ca/blog/migrating-content-translated-content-translation-drupal-7-drupal-8find our tutorial about migrating translations that use Content Translation here/a./p pThis article would not have been possible without the help of my colleague a href=https://evolvingweb.ca/about-evolvingweb/dave-vasilevskyDave/a. Merci Dave!/p h3The problem/h3 pWe have a a href=https://github.com/jigarius/drupal-migration-i18n-example/blob/8.x/dump/sandbox_d7_entity.sqlDrupal 7 database/a containing emarticle/em nodes, which might have translations in English, Spanish and French. Some of these nodes are language-neutral, i.e. non-translatable. Our target is to migrate the D7 nodes into a D8 website, preserving the translations./p h3Before we start/h3 ulliSince this is an advanced migration topic, it is assumed you already know the basics of migration. If you are new to migrations in Drupal 8, I recommend that you read about a href=https://evolvingweb.ca/blog/drupal-8-migration-migrating-basic-data-part-1migrating basic data to Drupal 8/a first./li liThis article assumes that you have read our previous article on a href=https://evolvingweb.ca/blog/migrate-content-translations-drupal-7-drupal-8how to migrate content translations from Drupal 7 to Drupal 8/a or have the relevant knowledge./li liTo execute the migrations in this example, you can download the a href=https://github.com/evolvingweb/migrate_example_i18ndrupal migration i18n example/a repository from GitHub. The module should work without any trouble for a standard Drupal 8 install. See a href=https://github.com/evolvingweb/migrate_example_i18n#quick-startquick-start/a for more information./li liTo see the example migrations in action, you need: ulliA Drupal 8 site./li liThe a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/dump/sandbox_d7_entity.sqlrelevant D7 database/a, since we are migrating data from a Drupal 6 site./li lia href=http://www.drush.org/Drush/a will be required to execute migration commands./li /ul/li /ulh3The module/h3 pTo write the migrations, we create a module - in our case, it has been named emmigrate_example_i18n/em. Just like migrating content translations from D7 to D8, we create 2 YML files to define:/p ulliThe a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/config/install/migrate_plus.migration.example_creature_base.ymlexample_creature_base/a migration will migrate all base data or non-translations. ulliThe codesource/translations/code parameter is omitted or set to codefalse/code./li liThe codedestination/translations/code parameter is omitted or set to codefalse/code./li /ul/li liThe a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/config/install/migrate_plus.migration.example_creature_i18n.ymlexample_creature_i18n/a migration will migrate all translations. ulliThe codeprocess/nid/code is configured to use the migration plugin to lookup the node in the base language./li liThe codesource/translations/code parameter is set to codetrue/code./li liThe codedestination/translations/code parameter is to codetrue/code./li liThe codemigration_dependencies/code parameter declares codeexample_creature_base/code as a dependency./li /ul/li /ulpWe group the two migrations using the a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/config/install/migrate_plus.migration_group.example_creature.ymlexample_creature/a migration group to keep things clean and organized. Then we can execute both migrations with codedrush migrate-import --group=example_creature --update/code./p h3How to migrate Entity Translations?/h3 pEntity translations! Drupal 7 content translations are supported since Drupal 8.3. At the point of writing this, there is no standard method for migrating entity translations to Drupal 8. In this example, we will migrate D7 nodes translated with the a href=https://www.drupal.org/project/entity_translationentity_translation/a module, however, the procedure should be similar for other entity types as well. Before we start, here are some notes about what's so different about entity translations:/p ulliAll translations have the same codeentity_id/code. So, for a translated node, the entity_translation module will result in only one entry in the codenode/code table./li liTranslation information, certain metadata and revision information for entities is stored in the codeentity_translation/code table./li /ulpSo if an English node with ID 19 has translations in Spanish and French, the codeentity_translations/code table has the following records:/p table align=center border=1 data-uniqueid=2010242039captionAn extract from the entity_translation table./caption theadtrth data-decimals=0 data-originallength=4 data-type=string scope=colentity_type/th th data-decimals=0 data-type=int scope=colentity_id/th th data-decimals=0 data-type=int scope=colrevision_id/th th data-decimals=0 data-originallength=2 data-type=string scope=collanguage/th th scope=colsource/th th data-decimals=0 data-type=int scope=coluid/th th data-decimals=0 data-type=int scope=colstatus/th th data-decimals=0 data-type=int scope=coltranslate/th th data-decimals=0 data-type=int scope=colcreated/th th data-decimals=0 data-type=int scope=colchanged/th /tr/theadtbodytrtd data-decimals=0 data-originallength=4 data-type=stringnode/td td data-decimals=0 data-type=int19/td td data-decimals=0 data-type=int1/td td data-decimals=0 data-originallength=2 data-type=stringen/td td /td td data-decimals=0 data-type=int1/td td data-decimals=0 data-type=int1/td td data-decimals=0 data-type=int0/td td data-decimals=0 data-type=int1485800973/td td data-decimals=0 data-type=int1487198982/td /trtrtd data-decimals=0 data-originallength=4 data-type=stringnode/td td data-decimals=0 data-type=int19/td td data-decimals=0 data-type=int1/td td data-decimals=0 data-originallength=2 data-type=stringes/td td data-decimals=0 data-originallength=2 data-type=stringen/td td data-decimals=0 data-type=int1/td td data-decimals=0 data-type=int1/td td data-decimals=0 data-type=int0/td td data-decimals=0 data-type=int1485802336/td td data-decimals=0 data-type=int1487199003/td /trtrtd data-decimals=0 data-originallength=4 data-type=stringnode/td td data-decimals=0 data-type=int19/td td data-decimals=0 data-type=int1/td td data-decimals=0 data-originallength=2 data-type=stringfr/td td data-decimals=0 data-originallength=2 data-type=stringen/td td data-decimals=0 data-type=int1/td td data-decimals=0 data-type=int1/td td data-decimals=0 data-type=int0/td td data-decimals=0 data-type=int1487185898/td td data-decimals=0 data-type=int1487198969/td /tr/tbody/tablepThe above data structure is significantly different from the content translation structure. In fact, Drupal 8 handles translations much like the entity translation module! Hence, to handle entity-translations, we must take the ementity_translation/em table into consideration, which the core emd7_node/em source plugin does not do at the time of writing this article. Hence, we override the emd7_node/em source with a custom source plugin named emd7_node_entity_translation/em./p h2class a href=https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/src/Plugin/migrate/source/D7NodeEntityTranslation.phpD7NodeEntityTranslation/a/h2 pThis is where we jump into code! We override certain methods of emd7_node/em source to add support for the ementity_translation/em table./p pre code class=language-php highlightclass D7NodeEntityTranslation extends D7Node { // Determines if the node-type being translated supports entity_translation. protected function isEntityTranslatable() {} // Depending on the source/translations parameter, this method alters // the migration query to return only translations or non-translations. protected function handleTranslations(SelectInterface $query) {} // This method has been overridden to ensure that every node's fields are // are loaded in the correct language. public function prepareRow(Row $row) {} // This method is called by the prepareRow() method to load field values // for source nodes. We override this method to add support for $language. protected function getFieldValues($entity_type, $field, $entity_id, $revision_id = NULL, $language = NULL) {} // Since all source nodes have the same nid, we need to use a // combination of nid:language to distinguish each source translation. public function getIds() {} }/code/prepHere's a quick look at the changes we need to make:/p ullistrongfunction getIds()/strong tells the migrate API to use one or more source properties which should be used to uniquely identify source records. When working with entity translations, all translations have the same codeentity_id/code, but they have a different codelanguage/code. We override this method to tell Drupal to consider both the entity_id and the language properties to uniquely identify source records. So, the source records are uniquely identified something like code19:en/code, code19:es/code, code19:fr/code instead of using just code19/code./li listrongfunction handleTranslations()/strong is the method which adds support for the codetranslations/code parameter we use in the source plugin. The codetranslations/code parameter tells Drupal whether to migrate entities in their base language or to migrate translations. We override this method to: ulliSee if the node type being migrated supports entity translations./li liIf the node type supports entity translations, then we codeINNER JOIN entity_translation/code and read translation data and some entity metadata, like date of creation, date of updation, etc from that table./li /ul/li listrongfunction prepareRow()/strong as the name suggests, prepares a row of source data before it is passed to the process plugins. At this stage, field data is also attached to the source data. However, it does not load field data in the language specified in the source row. To overcome this problem, we override the codegetFieldValues()/code method and make sure it loads the field data in the same language as specified in the source row./li /ulpThat's it! You should now be able to run the migration with codedrush migrate-import --group=example_creature --update/code. The output should look something like this:/p pre code class=language-bash highlight$ drush mi --group=example_creature --update Processed 9 items (9 created, 0 updated, 0 failed, 0 ignored) - done with 'example_creature_base' Processed 9 items (9 created, 0 updated, 0 failed, 0 ignored) - done with 'example_creature_i18n'/code/prepstrongNote:/strong Keep an eye out for Drupal core updates. If the emdrupal_migrate/em module adds support for entity translations, migrating entity translations might become much easier./p h3Next Steps/h3 ulliView the code for the a href=https://github.com/evolvingweb/migrate_example_i18n/migrate_example_i18n/a project on GitHub./li liRead about a href=https://evolvingweb.ca/blog/migrate-content-translations-drupal-7-drupal-8migrating content translations from Drupal 7 to Drupal 8/a./li liRead about a href=https://evolvingweb.ca/blog/migrate-translated-content-drupal-6-drupal-8migrating translated content from Drupal 6 to Drupal 8/a./li liRead about a href=https://evolvingweb.ca/blog/migrate-translations-csv-json-or-xml-drupal-8migrating translations from CSV, JSON or XML to Drupal 8/a./li liNew to Drupal 8 migrations? Start with a href=https://evolvingweb.ca/blog/drupal-8-migration-migrating-basic-data-part-1Drupal 8 migration basics/a./li /ula href=https://evolvingweb.ca/blog/migrating-content-translated-entity-translation-drupal-7-drupal-8?utm_source=feedutm_medium=more target=_blank+ more awesome articles by Evolving Web/a

Drupal core announcements: Sprint with the migrate team at DrupalCamp Montreal

Fri, 06/16/2017 - 20:42
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-start2017-06-15 (All day)/spanspan class=date-display-separator - /spanspan class=date-display-end2017-06-18 (All day) America/Toronto/span /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 Sprint /div /div /div pSeveral key contributors to the Migrate Initiative will be at a href=http://2017.drupalcampmontreal.com/en/programthe sprint at DrupalCamp Montreal/a on Sunday (and to some degree on earlier days as well). Join contributors Adam G-H (phenaproxima), Maxime Turcotte (maxocub) and Dave Vasilevsky (vasi) in person. Initiative coordinator Mike Ryan (mikeryan) is also planning to join remotely on Sunday./p pAmong the most important emMigrate critical/em issues on the table that are planned to be worked on is a href=https://www.drupal.org/node/2876085auditing for potential ID conflicts/a before upgrading from older versions. This is the most thorny outstanding issue for the initiative. Use cases and feedback in general is welcome. Further migrate issues are categorized and tracked in a href=https://docs.google.com/spreadsheets/d/16SwQsp7nF1UKrZQCNdPYML_wi53ZjM1egwuLoPDwzUY/edit?pref=2amp;pli=1#gid=1071206918the Migrate triage spreadsheet/a (update regularly). These include handling import of private files, adding back support for incremental migrations, redirecting for obsolete content translations when they are merged in the migration, etc. All of those need helping hands and this is a great time to get experienced with help from the most well versed people in the field./p pIf you cannot join the sprint this time, your involvement is more than welcome anytime. The migrate team has weekly meetings on every Thursday at alternating meeting times. See a href=https://www.drupal.org/node/2735059#meet title=https://www.drupal.org/node/2735059#meethttps://www.drupal.org/node/2735059#meet/a for the upcoming meetings. /p

Ben's SEO Blog: Why Amazon.com Just Bought Whole Foods and What That Means for Drupal

Fri, 06/16/2017 - 18:21
div class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field-itemsdiv class=field-item even property=schema:articleBody content:encodedpTwo of the biggest retailers in the world are getting together. This morning, Amazon.com, the juggernaut that continues to put massive pressure on brick-and-mortar retailers, announced that it is buying Whole Foods, the popular, high-end organic foods grocer./p pBoth companies are major stakeholders in the Drupal ecosystem: Amazon a href=https://www.acquia.com/about-us/newsroom/press-releases/acquia-secures-additional-funding-following-50-million-financingmade an investment in Acquia/a in 2014, and much of Acquia’s hosting infrastructure relies on Amazon Web Services. Whole Foods, for its part, has used Drupal for its web presence for at least five years—if not much longer—and holds a href=http://engage2015.acquia.com/sites/default/files/wholefoodsmarketpreso.pdfAcquia as a key partner/a. Acquia Drupal is a significant part of the Whole Foods DevOps story. (I can just imagine that email from the Whole Foods Accounts Payables department to Acquia: “Send the bill to Amazon.”)/p pFrom a presentation at an Acquia event:/p pimg alt= src=/sites/default/files/Screenshot%202017-06-16%2009.27.05.png style=width: 899px; height: 282px; //p pSo why would Amazon jump out and make this purchase? The answer is complex and multi-faceted./p h2For Amazon, it's all about the data./h2 pFirst, Amazon is, at its core, a data company. They use shopping history and patterns to sell us things we need before we even know that we need them. With all the newly acquired data from Whole Foods upper-end clientele, Amazon can make more efficient stock decisions in both the retail and physical stores. In February, Whole Foods Chief Executive John Mackey said that they would retain the services of Dunnhumby, a customer data and insights company, to inform merchandising and services (in other words, help us stock our shelves and get our prices down). I can’t help but think that Amazon could do even better./p h2Distribution/h2 pSecond, this acquisition gives Amazon access to a grocery distribution network that enhances their own. It creates more markets for home grocery delivery. Nomura Instinet analyst Anthony DiClemente recently said that the grocery industry remains one of the largest and most under-penetrated markets for Amazon. Well, that just changed./p pHow convenient could Whole Foods home delivery be? As Dries has demonstrated in recent keynotes (blog post: a href=http://buytaert.net/cross-channel-user-experiences-with-drupalhttp://buytaert.net/cross-channel-user-experiences-with-drupal/a), I can envision a future where I ask my Echo Dot for some free-range chickpeas and organic shampoo and a Whole Foods van shows up at my door an hour or two later with my products (and as of today, with a sizable charge on my debit card)./p h2The Whole Foods brand - a trip down memory lane/h2 pThird, it gives Amazon a very strong brand that is associated with organic groceries and high-end shopping experience./p pI’m from Austin, and I’ve been shopping at Whole Foods since there was a single store in the early 80s. My family lived in nearby Temple so once a month we’d drive to Austin so Mom could shop at Whole Foods while us kids ran around the nearby Book Stop (Look it up. It was ahead of its time.), and eat at a fancy restaurant called Chilis./p pSo, maybe my brand recognition and a lifelong love of the grocery chain is stronger than most. There's no denying that it looms large over the health-food industry and is super-popular with upper-middle class soccer moms and those avocado-on-toast loving millennials we hear so much about (joke). How will Amazon leverage that loyalty? Could we see Amazon Fresh become “Whole Foods from Amazon”?/p h2It's Go time./h2 pThe fourth and perhaps most compelling upside for the acquisition lies with Amazon Go, a recent experiment with automated retail stores./p pGo is a frictionless shopping and checkout experience for physical stores. According to their website, you just “browse and shop like you would at any other store. Then you’re on the way: no lines, no checkout.”/p pConvenient./p pIt's currently only open to Amazon employees in a single Seattle store but the idea is as simple as the implementation is complicated: use advanced scanners and trackers to automate checkout. But what does this do to labor cost? In their commercial, the lone store employee is making sandwiches. That's hyperbole, but it makes that point: this is what Amazon wants. strongAny labor that doesn’t directly enhance the customer experience is suspect and should be eliminated as soon as possible./strong/p pYesterday, outgoing CEO of GE Jeff Immelt scoffed that robots were not going to take over factory jobs in the next five years. Perhaps, but in retail, it has already begun. Many retailers from grocery stores to Home Depot offer self-checkout. If Amazon leads the way to friction-free checkout in supermarkets, retailers that do not follow in their footsteps will find that they’re the next Borders, CompUSA, or Radio Shack./p pThe Go technology isn't ready for real world use yet but let's say it's at most 36 months away from being ready for prime time. That means that in relatively short order, Amazon can dramatically reduce one of the biggest expenses Whole Foods carries today: labor. They'll still have the cheese guy and the bread lady—those personal interactions are why people shop at a high-end grocer after all. Still, no more jockeying for the shortest checkout lines. It's hugely convenient, and it will happen./p pWith Go, Amazon can now tackle Whole Foods’ biggest issue for most people: price. As much as I love it, my family doesn’t do our grocery shopping at Whole Foods. I have a great experience, but I need a second job just to pay the bill. In fact, I walk around with my iPhone out looking up pricing and even placing one-click orders on Amazon. Now, if I could get that Whole Foods experience at Amazon prices? Sign me up./p pAmazon will continue to do what they do best: leverage technology to remove inefficiencies in established industries, give customers the best possible experience along the way, and provide a shortcut to the things I want to do. This combination is their killer app./p h2The Drupal Opportunity/h2 pThe opportunity for Drupal companies could be limited or could be huge. It seems unlikely that Amazon will continue to use Drupal to power their Whole Foods infrastructure in the long run. In the short run, however, Whole Foods will continue to operate as an independent, wholly-owned subsidiary—just with a lot more coverage and support from the most technically-savvy retail company around./p pOutside of the immediate timeframe, it could open opportunities to build closer ties to Amazon through the use of headless Drupal for backend data storage, retrieval, and integration. As much as retailers suffer from Amazon’s dominance, manufacturers benefit from frictionless distribution and additional sales channels that will be created. That gives us, the Drupal community, more opportunities to do what we do best with Drupal 8 and beyond. We can continue toward building voice interactions that tie into Amazon’s Alexa infrastructure in unique ways; Tech stacks that better integrate e-commerce platforms into Amazon’s listings and sales engine; and possibly even recruiting opportunities for top Drupal talent that may be winding down their tenure with Whole Foods./p pAnd that’s not even to mention the retailers that want to compete with Amazon head-on. They need what Drupal has: vision, community, and a platform for building world-class, sustainable, and expandable solutions. They need technology that allows them to meet and beat the Amazon at their own game. They need a shortcut to success, and that’s Drupal 8./p /div/div/divdiv class=field field--name-field-image field--type-image field--label-hiddendiv class=field-itemsdiv class=field-item even rel=schema:image resource=https://www.volacci.com/sites/default/files/styles/blog_main_image/public/blog/image/amazonwholefoodsdrupal_0.png?itok=x10oM_hfimg typeof=foaf:Image src=https://www.volacci.com/sites/default/files/styles/blog_main_image/public/blog/image/amazonwholefoodsdrupal_0.png?itok=x10oM_hf width=1024 height=596 alt=Amazon, Whole Foods, and Drupal logo title=It#039;s great when Drupal companies get together. //div/div/divdiv class=field field--name-field-subtitle field--type-text field--label-hiddendiv class=field-itemsdiv class=field-item even property=schema:alternativeHeadlineOpportunities for Drupal from a mega merger of Drupal community companies./div/div/divdiv class=field field--name-field-terms field--type-taxonomy-term-reference field--label-hiddendiv class=field-itemsa href=/planet-drupal-teasers typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Planet Drupal/a, a href=/amazoncom typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=amazon.com/a, a href=/whole-foods-0 typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=whole foods/a, a href=/drupal-news typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=drupal news/a/div/divspan rel=schema:url resource=/blog/why-amazoncom-just-bought-whole-foods-and-what-means-drupal class=rdf-meta element-hidden/spanspan property=schema:name content=Why Amazon.com Just Bought Whole Foods and What That Means for Drupal class=rdf-meta element-hidden/span

Promet Source: Drupal Texas Camp Presentation: Harnessing Human Connection to Achieve Marketing Success

Fri, 06/16/2017 - 16:16
This blog post is transcribed from the session More Social, Less Media: Harnessing the power of Human Connection to Achieve Marketing Success presented by Molly Nelson at Drupal Texas Camp in Austin, TX - June 2017 More Social, Less Media

La Drupalera (en): La Drupalera brings you the most refreshing Drupal events of the summer

Fri, 06/16/2017 - 08:39
div data-history-node-id=310 class=node node--type-article node--view-mode-rss ds-1col clearfix img property=schema:image src=http://www.ladrupalera.com/sites/default/files/styles/max_650x650/public/2017-06/eventos%20drupal%20verano%202017.jpg?itok=hNIHOaai width=650 height=417 alt=La Drupalera brings you the most refreshing Drupal events of the summer typeof=foaf:Image class=image-style-max-650x650 /img alt=La Drupalera brings you the most refreshing Drupal events of the summer data-entity-type=file data-entity-uuid=e130b5c4-821a-4a13-aab7-3e8295a4ccd3 src=http://www.ladrupalera.com/sites/default/files/inline-images/eventos%20drupal%20verano%202017_0.jpg class=align-center /p dir=ltr /p p dir=ltrspan id=docs-internal-guid-175f7332-a778-b92c-5bb4-2f1676c05a06We know that you don’t want to lose news of Drupal. For that reason, and although it has officially started beach season, here you have the most interesting events of this summer. /span/p h2 dir=ltrspan id=docs-internal-guid-175f7332-a778-b92c-5bb4-2f1676c05a06June 15/span/h2 ulli dir=ltr p dir=ltrspan id=docs-internal-guid-175f7332-a778-b92c-5bb4-2f1676c05a06a href=https://www.meetup.com/es-ES/Drupal-Costa-Rica/events/240618410/?eventId=240618410Drupaleada/a/span in San José (Costa Rica)/p div class=field field--name-node-link field--type-ds field--label-hidden field__itema href=http://www.ladrupalera.com/en/drupal/drupal-community/news/la-drupalera-brings-you-most-refreshing-drupal-events-summer hreflang=en-x-simpleRead more/a/div /li/ul/div

OhTheHugeManatee: Better PHP === Better Drupalists: The PHP Track at Drupalcon Vienna

Thu, 06/15/2017 - 17:19
pOne of the best parts of Drupal 8 is our shift to enterprise PHP coding structures. With tools like composer and Symfonyrsquo;s structures like Events and Dependency Injection, Drupalists are learning to be great PHP developers, and vice-versa. Today, the fastest route to becoming a rock star Drupalist is through PHP./p pIrsquo;m one of the PHP track chairs for Drupalcon Vienna, and this year our focus is embetter PHP === better Drupalists/em. How can better PHP make your life as a Drupal developer easier?/p !-- more -- p/p pstrongDo you like PHP 7?/strong We want to hear about the technicalities of types, throwing all the things, and your favorite operators (mine is null coalesce, but full respect for you spaceship operator fans)./p pstrongHave you seen the light of functional programming?/strong Tell us why we should love higher orders with lambda functions and closures. Letrsquo;s hear the finer points of first class functions./p pstrongDo your tests bring all the bugs to the yard?/strong We want to talk about it. Every method is a promise, and your tests make sure you keep your promises. We want sessions about test driven development in a drupal context, choosing the right test framework and scope, and how your real-world tests are saving you real-world time./p pstrongHave you written a composer library wrapper module yet?/strong Submit a session about how composer is saving you lines of code./p pstrongIs your development environment fine-tuned for drupal excellence?/strong Tell us how, and why./p pWe have only two weeks left until session submissions close! a href=https://events.drupal.org/node/add/session?og_group_ref=14447Get your session in now/a and help us make Drupal code something to be proud of./p

Valuebound: How to manage page layout using Display Suit module in Drupal 8

Thu, 06/15/2017 - 17:12
pThe Contributed module a href=https://www.drupal.org/project/dsDisplay suite/a (“DS”) allows you to take control on How do you want to render them using interface. admin has ability to arrange nodes, comment,user data, views etc. provides drag and drop after as we do for managing field section./p pIf you want to build a a href=http://valuebound.com/resources/blog/drupal-8-how-to-create-a-custom-block-programaticallydrupal custom page/a and really don't have any drupal technical knowledge or coding skill or, you don’t want to write custom templates, and  for smaller stuff then you can go ahead with this Display Suite module. Is really helpful when it comes to replacing the default view of an entity to user defined view using application interface. It’s straightforward…/p

Texas Creative: 3 Tips for Client Friendly Paragraphs in Drupal 8

Thu, 06/15/2017 - 16:30
img src=https://texascreative.com/sites/default/files/styles/blog_teaser/public/blog-images/2017-06/art-drupal-blog-texas-creative_1.png?itok=uDnS0tqT pDrupal#8217;s Paragraphs module is a big part of what makes it easy for our clients to manage their site content. These three tips are how we make the user experience evennbsp;better./p a href=/blog/3-tips-client-friendly-paragraphs-drupal-8Read More/a

Promet Source: The Secret to a Great Web Design RFP

Thu, 06/15/2017 - 16:03
A recent prospect responded to my inquiry about the project budget with this:  We can't release budget information as we need all vendors to bid their best price. If they know the budget they just bid right up to it.