Drupal Planet

Syndicate content
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 2 hours 24 min ago

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

Mon, 12/19/2016 - 2:33am
span property=schema:name data-quickedit-field-id=node/212/title/en/rss class=field field--name-title field--type-string field--label-hiddenDrupal 8: How to create a custom block programatically/span span data-quickedit-field-id=node/212/uid/en/rss rel=schema:author class=field field--name-uid field--type-entity-reference field--label-hiddena title=View user profile. href=/user/9 lang= about=/user/9 typeof=schema:Person property=schema:name datatype= class=usernameJaywant.Topno/a/span span property=schema:dateCreated content=2016-12-19T07:33:52+00:00 data-quickedit-field-id=node/212/created/en/rss class=field field--name-created field--type-created field--label-hiddenMon, 12/19/2016 - 02:33/span
Categories: Drupal Feeds

Valuebound: Drupal 8: Custom Block Creation programmatically

Mon, 12/19/2016 - 2:33am
span property=schema:name data-quickedit-field-id=node/211/title/en/rss class=field field--name-title field--type-string field--label-hiddenDrupal 8: Custom Block Creation programmatically /span span data-quickedit-field-id=node/211/uid/en/rss rel=schema:author class=field field--name-uid field--type-entity-reference field--label-hiddena title=View user profile. href=/user/9 lang= about=/user/9 typeof=schema:Person property=schema:name datatype= class=usernameJaywant.Topno/a/span span property=schema:dateCreated content=2016-12-19T07:33:52+00:00 data-quickedit-field-id=node/211/created/en/rss class=field field--name-created field--type-created field--label-hiddenMon, 12/19/2016 - 02:33/span
Categories: Drupal Feeds

InternetDevels: Drupal 8 tools for meeting accessibility standards: the art of being modern

5 hours 39 min ago
div class=field field--name-field-preview-image field--type-image field--label-hiddendiv class=field__itemsdiv class=field__item evenimg src=http://st1.internetdevels.net/sites/default/files/public/blog_preview/web_accessibility_standards_in_drupal8.jpg width=937 height=622 alt=Drupal 8 tools for meeting accessibility standards: the art of being modern //div/div/divdiv class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenpAmong a href=http://internetdevels.com/blog/drupal-8-improvements-part-2 target=_blankDrupal 8’s many shiny features/a, the support for web accessibility standards shines particularly bright, although it is not immediately noticed by everyone. However, it’s noticed by the people with disabilities (visual or audial impairment, color blindness, difficulty controlling a mouse, etc.) who make up a large segment of web audiences./p a href=http://internetdevels.com/blog/drupal-8-tools-for-meeting-accessibility-standardsRead more/a/div/div/div
Categories: Drupal Feeds

Blair Wadman: Need to quickly roll back your Drupal database? Restore it with just one click

12 hours 2 min ago
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpWith a click here, and a click there, it can be really easy to mess up a Drupal site, especially if you are fairly new to it. It doesn't have to be you, in the hands of your manager or client, they can end up breaking the site. Setting the correct permissions will help reduce the risk of this, but sometimes people want more permission than they really should have. And when the site owner comes to you and says - “I broke all the things!” - you immediately wonder when the last backup was. Are backups even running? How do I restore from a backup! Help!/p h2Fix all the things with one click/h2 pBut you don’t have to live in fear of a broken Drupal site. With just one click, you can quickly and easily restore your Drupal site to its former glory. As soon as your client or boss says I broke all the things, you can say I just fixed all the things!. They will be amazed at your Drupal harnessing powers./p pThe ability to restore your Drupal site with one click comes from the a href=https://www.drupal.org/project/backup_migrateBackup and Migrate/a module. Once you have set it up, it is as easy as pie to use (read on for how to set it up)./p /div/div/div
Categories: Drupal Feeds

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

Thu, 07/28/2016 - 5:10pm
!-- field.tpl -- div class=field field-name-body field-type-text-with-summary field-label-hidden !-- theme hook suggestions: -- !-- hook:field -- !-- tpl file: * field--text-with-summary.tpl.php -- !-- tpl file: * field--body.tpl.php -- !-- tpl file: * field--blog.tpl.php -- !-- tpl file: * field--body--blog.tpl.php -- pLast week in higher education was all about technology impacting student outcomes and teaching methodology. This week, the buzz is around the almighty dollar. We’re seeing higher education become one of the focal points of the Democratic party’s 2016 U.S. Presidential election platform. We also found an interesting study that highlighted the usage of “open” textbooks and the impact they can have on student costs./p pDid we mention higher education pays? Read on to learn more./p /div !--/field.tpl --
Categories: Drupal Feeds

Lullabot: Around the Drupalverse with Enzo García

Thu, 07/28/2016 - 3:00pm
Matt Mike talk with Eduardo Enzo García about his 18 country tour around the the world! We talk about various far-flung Drupal communities, motivations, challenges, and more.
Categories: Drupal Feeds

Don't Panic: A blog about Drupal: Tips tricks for Drupal and GIT

Thu, 07/28/2016 - 2:28pm
a href=http://www.adamevertsson.se/ a href=/en/articles/tips-tricks-drupal-and-gitimg src=/sites/default/files/styles/drupal_planet/public/content/headerimage/2016-06/technology-785742_1920.jpg?itok=BhAvb9DZ width=600 height=100 alt=Keyboard typeof=Image class=img-responsive / /a /a pEver since Drupal 7 I've used GIT to keep track of both my personal repos as the ones the company I work for manage. In short, I use GIT quite a lot. A colleague of mine use GIT to keep track of his computer setup so he easily can pull down his settings and .profile whenever he chooses to reinstall his computer or get a new one. I've heard of a guy (or girl, can't remember) who use GIT to keep track of all his documents. That seems a bit handful, but GIT is wonderful to keep track of the changes in your, for example, Drupal repo./p pAnd even if I've used GIT for so long, I'm still learning new stuff about GIT and it makes my daily work even better and more streamlined. Below I'll share some of my discoveries when working with Drupal and GIT./p h3I've updated many modules, but I want to commit them one by one/h3 pI've done a total update perhaps, or anyway updated more than one module, but I want to make separate commits due to OCD or company guidelines, well as long as the module is located in it's own folder (which they are), that's no problem./p pstrongExample/strong: I've updated two modules, Token and Metatag, and now I have a list of 40+ files which are listed as either modified, deleted or new. Instead of doing a total commit of them all, I simply add the folders, one by one, and do separate commits of them./p pre $ git add sites/modules/token $ git commit -m Updated Token module $ git add sites/modules/metatag $ git commit -m Updated Metatag module/pre pTwo modules, nicely committed one by one. Now you can sleep without any OCD nightmares./p h3Add all files, but not all!/h3 pThis is one of the latest I learned. Sometimes, when I update Drupal Core I want to add all files, but for some reason I want to exclude one or two files./p pstrongExample/strong: I've updated Drupal core, which led to 60+ modified, deleted or new files but among them I have my settings.php and an updated module (let's choose Metatag again) that I want to exclude. I could do a separate git add for the module folder if I want, but perhaps I don't want to commit it at all, and that's where this comes in handy./p pre $ git add -A // Add all the files $ git reset -- sites/modules/metatag** // un-commits the metatag module folder $ git reset -- sites/default/settings.php // un-commits the settings.php $ git commit -m Updated Drupal Core like a pro!/pre h3I've made changes to a file, but want the original file back/h3 pThis happens a lot. You try something out, go wild, and then suddenly want your original file back. No worries. Just use this to make the changes disappear and the original file will magically appear again./p pre git checkout [filename]/pre pYou can even make all the changes disappear, going back to square 1 on your repo./p pre git reset --hard/pre pThat command will not erase new files, though, so you might be standing with a bunch of new files that GIT won't ignore. You can either delete them, file by file, or you can use the following command to erase all the un-committed files:/p pre git clean -d -x -f/pre h3There's changes in my file? What changes?/h3 pSometimes when you upgrade a module or if you just come back to a project and you can't remember what you've done, there's a quick and easy way to see the differences in a file. If you do aem git status/em and a file comes up as changed you can type emgit diff/em followed by the filename or complete path to the filename and you'll see the changes. If there are a lot of changes you might want to check out other ways of analyzing the changes. If you're using a href=https://www.sublimetext.com/Sublime Text Editor/a I can recommend a href=https://github.com/jisaacks/GitGutterGit Gutter/a./p pre $ git status // Lists all changed files/pre pre $ git diff .htaccess // Shows the changes in the .htaccess-file/pre pThat's a few examples of what you can do with GIT, use it for. As I discover more, I'll write them down here so we can spread the knowledge./p
Categories: Drupal Feeds

Axelerant Blog: Drupal Cache Case Study: Boosting Performance

Thu, 07/28/2016 - 1:00pm
div class=post_thumbnail single_post_thumbnaila href='https://axelerant.com/drupal-cache-a-case-study/blog-graphic-cache-case-study/'img width=640 height=360 src=https://axelerant.com/wp-content/uploads/2016/07/Blog-Graphic-Cache-Case-Study-640x360.jpg class=attachment-large size-large alt=Drupal Cache Case Study srcset=http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2016/07/Blog-Graphic-Cache-Case-Study-640x360.jpg 640w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2016/07/Blog-Graphic-Cache-Case-Study-160x90.jpg 160w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2016/07/Blog-Graphic-Cache-Case-Study-480x270.jpg 480w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2016/07/Blog-Graphic-Cache-Case-Study-330x186.jpg 330w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2016/07/Blog-Graphic-Cache-Case-Study-1024x577.jpg 1024w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2016/07/Blog-Graphic-Cache-Case-Study-736x414.jpg 736w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2016/07/Blog-Graphic-Cache-Case-Study-1280x721.jpg 1280w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2016/07/Blog-Graphic-Cache-Case-Study-768x433.jpg 768w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2016/07/Blog-Graphic-Cache-Case-Study-414x233.jpg 414w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2016/07/Blog-Graphic-Cache-Case-Study.jpg 1385w sizes=(max-width: 640px) 100vw, 640px //a/div pThis Drupal cache case study began on a pleasant January afternoon in beautiful Goa. The entire company flew in for our annual retreat, enjoying the scenic beauty of the sandy beaches and the cool breeze. Between the fun times, we were ducking into our remote workspace, poring over a cachegrind report sent over by our client./p pThis report was generated for ajax responses coming from a product page on an e-commerce website. We could clearly see that the page was extremely slow to render and that this was true for all ajax responses./p div id=attachment_1304276 style=width: 1271px class=wp-caption aligncentera href=https://axelerant.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.1.pngimg class=wp-image-1304276 size-full src=https://axelerant.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.1.png alt=The Cachegrind report as sent by the client - Drupal Cache: A Case Study width=1261 height=401 srcset=http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.1.png 1261w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.1-320x102.png 320w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.1-640x204.png 640w sizes=(max-width: 1261px) 100vw, 1261px //ap class=wp-caption-textThe Cachegrind report as sent by the client #8211; Drupal Cache: A Case Study/p/div p style=text-align: center;span style=font-weight: 400;h2 class=axelcta-headerFree Open Source Staffing Guide/h2!--[if lte IE 8] script charset=utf-8 type=text/javascript src=//js.hsforms.net/forms/v2-legacy.js/script ![endif]-- script charset=utf-8 type=text/javascript src=//js.hsforms.net/forms/v2.js/script script hbspt.forms.create({ portalId: '557351', formId: '0e484b0e-3475-47ed-b8f5-49fa6b4cacab' }); /script/span/p h2Progressive Doping:/h2 pDigging deeper to figure out what was causing the performance bottleneck, we use XDebug to generate cachegrind files, which we could then analyze to determine what functions were costing us the most, or where there were functional paths that could be truncated via caching. Performing this process iteratively we came up with a list of major pain areas. This list was very specific to our project./p ol liFunction #8220;get nid from product_id#8221; was being frequently called with a resulting resource consuming data query./li liFunction “hook_commerce_checkout_pane_info_alter” was being executing on each request./li liProduct filtering for a particular type of user was a resource consuming activity/li liFunction “get product_id matching attributes” was being frequently called, with a resulting resource consuming query./li liThe theme function “theme_extra_bundles_radio” was processing some resource consuming business logic./li liA lot of calls were made to the “entity_load” function./li /ol h2Drupal Cache/h2 pIt is a widely accepted fact that as great as the Drupal 7 core can be, it doesn#8217;t scale well for Web sites with a lot of content and a lot of users. To extract the best performance under such scenarios, it#8217;s necessary to make use of several strategies, tools, and techniques. Keeping this in mind, we settled down with the following strategies:/p ul li h3Basic Drupal caching:/h3 /li /ul pDrupal offers basic performance settings at:/p pAdministration gt; Configuration gt; Performance gt; Development gt; Performance (admin/config/development/performance)/p pHere we enabled block and page caching which cached the dynamic complex SQL queries of Drupal for quick retrieval of content. We also enabled the Compress cached pages, Aggregate and compress CSS files and Aggregate JavaScript files which further helped in bandwidth optimization by reducing the number of HTTP calls./p ul li h3Panel Caching:/h3 pWe developed a custom ctools plugin to provide two extra options for panel cache methods./p ul liComplex cache/li liLineup/Dealership cache/li /ul /li /ul div id=attachment_1304277 style=width: 603px class=wp-caption aligncentera href=https://axelerant.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.2.pngimg class=wp-image-1304277 size-full src=https://axelerant.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.2-e1469719249509.png alt=Lineup/Dealership cache - Drupal Cache: A Case Study width=593 height=279 srcset=http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.2-e1469719249509.png 593w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.2-e1469719249509-160x75.png 160w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.2-e1469719249509-480x226.png 480w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.2-e1469719249509-330x155.png 330w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.2-e1469719249509-414x195.png 414w sizes=(max-width: 593px) 100vw, 593px //ap class=wp-caption-textLineup/Dealership cache #8211; Drupal Cache: A Case Study/p/div pYou can also define your panel cache method for your particular use case and cache the panel content.  First, define a ctool plugin like:/p pre class=brush: php; title: ; notranslate lt;?php // Plugin definition. $plugin = array( 'title' =gt; t(quot;Example cachequot;), 'description' =gt; t('Provides a custom option to cache the panel content.'), 'cache get' =gt; 'my_module_cache_get_cache', 'cache set' =gt; 'my_module_cache_set_cache', ); /** * Get cached content. */ function my_module_cache_get_cache($conf, $display, $args, $contexts, $pane = NULL) { $cache = cache_get(‘my_panel_data', 'cache_panels'); if (!$cache) { return FALSE; } if ((time() - $cache-gt;created) gt; $conf['lifetime']) { return FALSE; } return $cache-gt;data; } /** * Set cached content. */ function my_module_cache_set_cache($conf, $content, $display, $args, $contexts, $pane = NULL) { cache_set('my_panel_data', $content, 'cache_panels'); } ?gt; /pre ul listrongCustom caching: /strong/li /ul pAfter looking at few more cachegrind reports, we identified some custom functions that were causing a performance problem and thrashing the database to perform complex queries and expensive calculations every time a user viewed specific pages. This prompted  us to use Drupal#8217;s built-in caching API’s/p pThe rule is never to do something time-consuming twice if we can hold onto the result and reuse them. This can be depicted in a simple example:/p pre class=brush: php; title: ; notranslate lt;?php function my_module_function() { $data = amp;drupal_static(__FUNCTION__); if (!isset($data)) { // Here goes the complex and expensive calculations and populate $data // with the output of the calculations. } return $data; } ?gt; /pre pThe drupal_static function provides a temporary storage to functions for data that sticks around even after they are done executing. drupal_static adds the magic to this function. It returns an empty value on the first call and preserves the data on next call in the same request. That means our function now can determine if the variable is already populated or not. If it has been populated, it will return the value and skip the expensive calculations./p pThe static variable technique stores data for only a single page load. To overcome this situation Drupal cache API persists the cached data in a database. The Following code snippet illustrates the use of Drupal cache API/p pre class=brush: php; title: ; notranslate lt;!--?php function my_module_function() { $data = amp;drupal_static(__FUNCTION__); if (!isset($data)) { $cache = cache_get('my_module_data', 'cache_my_module') if ($cache amp;amp; time() lt; $cache-gt;expire) { $data = $cache---gt;data; } else { // Here goes the complex and expensive calculations and populate // $data with the output of the calculations. cache_set('my_module_data', $data, 'cache_my_module', time() + 360); } } return $data; } ?gt; /pre pThis version of the function uses database caching. Drupal caching API provides three key functions #8211;  cache_get(), cache_set() and cache_clear_all(). The initial check is made to the static variable, and then this function checks Drupal#8217;s cache for data stored with a particular key. If data is found the $data is set to $cache-gt;data./p pIf no cached version is found, the function performs the actual work to generate the data and saves it to the static variable at the same time which means that in the next call in the same request, it does not even need cache_get./p pFinally, we get a slick little function that saves time whenever it can—first checking for an in-memory copy of the data, then checking the cache, and finally calculating it from scratch./p pstrongConclusion:/strong/p pAfter putting all these together, we were able to reduce the total number of functions call to 741 and the execution time reduced to 665ms. Hence we get the ~1500% of performance boost./p div id=attachment_1304278 style=width: 1290px class=wp-caption aligncentera href=https://axelerant.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.3.pngimg class=wp-image-1304278 size-full src=https://axelerant.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.3-e1469719342795.png alt=Cachegrind Report Generated After Implementing Drupal Cache. - Drupal Cache: A Case Study width=1280 height=512 srcset=http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.3-e1469719342795.png 1280w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.3-e1469719342795-160x64.png 160w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.3-e1469719342795-480x192.png 480w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.3-e1469719342795-640x256.png 640w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.3-e1469719342795-330x132.png 330w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.3-e1469719342795-1024x410.png 1024w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.3-e1469719342795-736x294.png 736w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.3-e1469719342795-768x307.png 768w, http://lk0f92vqdxi97nqp1ygpdx2q.wpengine.netdna-cdn.com/wp-content/uploads/2015/04/drupal-cache-a-case-study.3-e1469719342795-414x166.png 414w sizes=(max-width: 1280px) 100vw, 1280px //ap class=wp-caption-textCachegrind Report Generated After Implementing Drupal Cache. #8211; Drupal Cache: A Case Study/p/div p style=text-align: center;span style=font-weight: 400; div class=custom-cta div class=container tab-container span Want to learn how to set up RESTful Drupal Caching? /span a href=https://axelerant.com/how-to-set-up-drupal-restful-caching/ class=cta_579a5eee2ab2b onClick=ga('send', 'event', 'cta-wide', 'click-how-to-set-up-drupal-restful-caching', 'Check this out'); data-color-override=false class=nectar-button regular-button accent-color style=visibility: visible;Check this out./a script charset=utf-8 type=text/javascript jQuery(document).ready(function() { var cta_579a5eee2ab2b = false; jQuery(document).scroll(function() { if ( typeof ga !== 'undefined' typeof isScrolledIntoViewPort !== 'undefined' jQuery.isFunction( isScrolledIntoViewPort) isScrolledIntoViewPort('.cta_579a5eee2ab2b') cta_579a5eee2ab2b == false ) { cta_579a5eee2ab2b = true; ga('send', 'event', 'cta-wide', 'view-how-to-set-up-drupal-restful-caching', 'Check this out'); } }); }); /script /div /div/span/p pstrongReferences:/strong/p ul lia href=https://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7stronghttps://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7/strong/a/li lia href=http://colans.net/blog/drupal-7-performance-optimization-options-and-checkliststronghttp://colans.net/blog/drupal-7-performance-optimization-options-and-checklist/strong/a/li /ul pThis article was originally published in April 2015./p pThis article a rel=nofollow href=https://axelerant.com/drupal-cache-a-case-study/Drupal Cache Case Study: Boosting Performance/a by a rel=nofollow href=https://axelerant.com/team-member/abhishek-dhariwal/Abhishek Dhariwal/a first appeared on a rel=nofollow href=https://axelerant.comAxelerant - Axelerant: Expert Drupal Development, Support, amp; Staffing/a./p
Categories: Drupal Feeds

Drupal Association News: Drupal Association's 12 Month Focus

Thu, 07/28/2016 - 12:10pm
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpAt the end of May, I shared how The Drupal Association went through some a href=https://assoc.drupal.org/blog/megansanicki/reorganizing-for-drupalhard staffing reductions/a so we could better align our expenses with revenue, making the organization much more sustainable. While this is a challenging transition, it allows The Association to serve a href=https://assoc.drupal.org/aboutour mission/a long into the future./p pPart of this transition includes deciding where to focus our smaller team and, unfortunately, identifying work we can no longer take on. I want to give transparency into these decisions so we can best set expectations and invite the community to take over programs and work efforts we can no longer do. /p h3 Our Focus/h3 pOur mission is to unite the community to build and promote Drupal. As I mention in a href=https://assoc.drupal.org/blog/megansanicki/ready-servemy blog post/a, now that Drupal 8 is out, our focus is to put more energy into the “Promote Drupal” portion of the mission./p pWe will do this by improving the adoption journey within Drupal.org and DrupalCon. By adoption journey, I’m referring to the decision making path someone takes to chose a new content management platform for their organization. These decision makers narrow their choice by talking to industry peers and service providers, reading analyst reports, and gathering information online and at conferences. When decision makers visit Drupal.org or attend DrupalCon as part of their fact finding mission, we want to make it easier for them to see that Drupal is the right choice. We will curate content that highlights the power of Drupal solutions, amplifies success stories, and connects the decision makers with Drupal service providers and industry peers. /p pIt’s important that we play our role in growing the number of organizations using Drupal because gaining more Drupal customers is good for the project. They employ Drupal developers, contribute back code, and provide financial support. Plus, highlighting Drupal successes on Drupal.org and at DrupalCon creates a rallying point for our community. Let’s celebrate the many amazing ways organizations are using our community-built software. /p pI do want to point out that the community will still have the great resources they need to continue building and releasing the software. We will still level up developer skills and host large sprints at DrupalCon. And, Drupal.org will continue to provide the tools and resources the community needs to release new versions./p pWhat we can’t do right now is invest in new ways to improve the contribution journey. By contribution journey, I am referring to the path a person takes to join the community online and in person, to collaborate with others and contribute code, documentation, camp organization, etc. So right now, we are not spending resources to improve this contribution journey. However, we are studying what improvements are needed so we can invest in them again as we become financially stronger./p pAs we serve our mission, we will also focus on strengthening The Association’s sustainability. Naturally aligning expenses with resources is the biggest step in that direction. Now we will focus on strengthening our financial health by prioritizing revenue-generating initiatives as thoughtfully as we can. We’re starting this effort by finding out how to add value to each segment of our community so we can update our programs, making them even more attractive for people and companies to invest in./p pThere are many segments that make up our community from the individual to the business community of Drupal Shops, hosting companies, and technology companies. Each segment funds our mission work by buying Drupalcon tickets and sponsorships, by becoming Members and Supporting Partners, finding talent on Drupal Jobs, and buying Drupal.org digital opportunities. We will talk with members in each of these segments and see how we can make these programs better and more valuable to them./p pPlus, our community has grown over the years and we need to welcome newcomers and find out how we can provide them with value that they are willing to pay for. Specifically, system integrators like Tata Consultancy Services and WIPRO and digital agencies like WPP and Digitas are now using Drupal to build ambitious digital experiences for their clients. By interviewing these organizations throughout the summer and fall, we will have a much better understanding of how to best support these kinds of organizations./p h3 More Details/h3 pWhile the details I provided above are high level, The Drupal Association staff are operating from a 12 month execution plan that includes roadmaps with milestones and metrics. As we selected the work in our roadmap, we applied three imperatives:/p ulli Strengthen our financial health: Simply put, we will thoughtfully prioritize revenue generating opportunities that rebuild our cash reserves so we are more stable and do this in ways that add value to the community./li li Execute well: We are picking a few areas to focus on so we are able to deliver results and make an impact. We are using good old fashion project management best practices to properly scope work and get stakeholder input to make sure we set ourselves up for success./li li Determine strategic direction for future planning: While we are heads down working on our execution plan for the next year, we need to know where to focus next to best serve the community. The Drupal Association board and staff will spend time this year determining that strategic direction./li /ulpWe want to share details of the work we will do this year, but rather than make this blog post even longer with all of that detail, we will do a blog series from the Events, Engineering, MarComm, Revenue, and Operations departments./p pEach department will explain what their focus is in more detail and it will explain what work we are not able to do given our smaller size. Plus, we will highlight where community members can get involved to take on the work we can no longer do. If you are interested in volunteering your time to work on community programs, please contact me. We would love to work with you!/p h3 img alt= src=/files/Headshot_MSanicki_0.png style=width: 120px; height: 120px; float: left; margin: 2px 8px; /About Megan/h3 pAs the Executive Director of The Drupal Association, I am inspired by the community values of kindness, collaboration, learning, and doing our best. The Drupal community is a bright spot in a complex world and I am personally motivated to protect its health and longevity./p pOutside of work, you can find me exploring nature with my family and friends or working out with my bootcamp squad doing 100 burpees in the 100℉ / 38℃ heat of Tucson, Arizona, USA./p /div/div/div
Categories: Drupal Feeds

Ben's SEO Blog: How Marketers Use Drupal’s AMP Module to Improve Google Search Rankings

Thu, 07/28/2016 - 11:00am
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:encodedpMobile users are not patient! More than a href=http://www.emailmonday.com/mobile-email-usage-statistics name=Volacci SEO Blog: AMP Module improves mobile experience target=_blank id=Volacci SEO Blog: AMP Module improves mobile experience71%/a of mobile users delete emails immediately that don’t render well on a mobile device, a href=http://www.emailmonday.com/mobile-email-usage-statistics name=Volacci Blog: AMP Module helping marketers improve search rankings target=_blank id=Volacci Blog: AMP Module helping marketers improve search rankings74%/a will only wait 5 seconds for a web page to load on their mobile device before abandoning the site—and nearly half won’t return./p pNot only is mobile responsiveness important for your customers’ experience, it is important for Google search rankings as well. Google favors sites that are mobile-friendly and fast. In fact, they are backing the Accelerated Mobile Pages (AMP) project to help websites become optimized across all devices. Drupal’s AMP module delivers pages that comply with the AMP standard and drastically improves the performance of mobile content./p h2What Marketers Should Know about Drupal AMP to Sound Smart/h2 pThe Accelerated Mobile Pages (AMP) project is an open source initiative that allows content to be optimized for mobile once and loaded instantly everywhere. AMP is a way to build web pages for static content that render quickly for mobile devices. It includes HTML standards, custom tags, and cache for building rich content with reliable performance and fast page loading speed./p pThe Drupal AMP module converts Drupal pages to comply with the AMP standard. It provides special AMP formatters for text, image, and video fields. It includes:/p ulliAMP Theme which produces the specific markup that the AMP HTML standard requires. It works just like any other Drupal theme with flexibility and customization on page displays and can place AMP ad blocks.br / /li liAMP PHP Library which analyzes the HTML entered by users and makes corrections, where possible, to make it compliant with AMP HTML. It automatically converts images, iframes, Tweets, Instagram, and YouTube HTML into their AMP HTML equivalents./li /ulh2img alt=Use Drupal AMP to speed up your site's mobile load times and improve overall SEO src=https://www.volacci.com/sites/default/files/1607_DrupalAMP_Fast_Blog.jpg style=width: 400px; height: 266px; padding-right: 10px; float: left; /What Marketers REALLY Need to Know about Drupal AMP/h2 pSo why should a marketer care about Drupal AMP?/p pstrongAMP web pages are fast./strong Using AMP HTML makes the web fast with smart caching, predictable performance, and modern, beautiful mobile content. When a href=https://engineering.pinterest.com/blog/building-faster-mobile-web-experience-amp name=Volacci Marketing: Pinterest AMP Testing target=_blank id=Volacci Marketing: Pinterest AMP TestingPinterest/a tested publisher AMP pages in their iOS and Android apps, they found that AMP pages loaded four times faster and used eight times less data than traditional mobile-optimized pages. Because it increases page loading speed, it is likely to provide a ranking boost. While AMP isn’t the only way to improve page speed, it is one way that Google recognizes and supports./p pstrongAdvertisements are more effective./strong Businesses using AMP ads are seeing greater revenue. According to ampproject.org:/p ulliem80% of publishers are realizing higher viewability rates/em/li liem90% of publishers are driving greater engagement with higher CTRs/em/li liemThe majority of publishers are seeing higher eCPMs/em/li /ulpstrongGoogle favors AMP pages./strong Google began integrating AMP pages into its search engine in February. For mobile results, Google is holding the News carousel (with AMP content) above-the-fold—which means organic search results are pushed down, resulting in fewer clicks, impressions, and click-through-rate, which, in return, affects SEO rankings./p pstrongAMP pages will help improve SEO./strong Google has made it clear that mobile-responsiveness and page speed are important for high search engine rankings. Some speculate that AMP pages will automatically get a “fast” label designation. In the future, AMP may even become a ranking signal. If you have news-type content or blogs, you can expect to see better rankings when you use the Drupal AMP module./p pThe Drupal AMP module is an important addition if you are looking to improve your Drupal SEO efforts. If you would like to be sure your website is following all of the latest practices for high Google rankings, check out our a href=https://www.volacci.com/drupal-marketing-solutions/drupal-seo name=Volacci Marketing: Helping Drupal Markers for 8 years now target=_blank id=Volacci Marketing: Helping Drupal Markers for 8 years nowDrupal SEO services/a and give us a call at (512) 989-2945./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:contentURL resource=https://www.volacci.com/sites/default/files/styles/blog_main_image/public/blog/image/1607_DrupalAMP_Mobile_Blog.jpg?itok=HQ8ZNISyimg typeof=foaf:Image src=https://www.volacci.com/sites/default/files/styles/blog_main_image/public/blog/image/1607_DrupalAMP_Mobile_Blog.jpg?itok=HQ8ZNISy width=1024 height=596 alt= title=Drupal AMP Module helps Marketers Improve Mobile Load Times //div/div/divdiv class=field field--name-field-subtitle field--type-text field--label-hiddendiv class=field-itemsdiv class=field-item even property=schema:alternativeHeadlineWhy AMP is Important for the Marketer/div/div/divdiv class=field field--name-field-terms field--type-taxonomy-term-reference field--label-hiddendiv class=field-itemsa href=/drupal-8 typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=drupal 8/a, a href=/drupal-marketing typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=drupal marketing/a, a href=/drupal-seo typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=drupal seo/a, a href=/planet-drupal-teasers typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Planet Drupal/a/div/divspan rel=schema:url resource=/blog/how-marketers-use-drupals-amp-module-improve-google-search-rankings class=rdf-meta element-hidden/spanspan property=schema:name content=How Marketers Use Drupal’s AMP Module to Improve Google Search Rankings class=rdf-meta element-hidden/span
Categories: Drupal Feeds

Web Wash: How to Print Variables using Kint in Drupal 8

Thu, 07/28/2016 - 6:10am
div class=field field-name-field-ww-summary field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item evenpWhile developing a module or modifying a template in Drupal you'll often print variables, especially if you're in a preprocess hook./p pYou learn early on how to use a href=http://php.net/manual/en/function.var-dump.phpcodevar_dump/code/a and a href=http://php.net/manual/en/function.print-r.phpcodeprint_r/code/a function. But these functions can sometimes display too much information and can be hard to filter through the arrays or methods in the variable./p pIn Drupal 7, with the a href=https://www.drupal.org/project/develDevel/a module, you could use the codedpm/code or codedsm/code function. When used, these functions will print variables at the top of the page or in the message area using a href=http://krumo.sourceforge.net/Krumo/a./p pNow in Drupal 8, Devel has adopted a new library to print variables and it's called a href=http://raveren.github.io/kint/Kint/a./p /div/div/div
Categories: Drupal Feeds

DrupalEasy: World-wide and World-class Drupal Training

Thu, 07/28/2016 - 5:52am
pimg src=https://www.drupaleasy.com/sites/drupaleasy.com/files/2016-07/dco_globe_only.png alt=DrupalEasy training globe image align=right / DrupalEasy is proud to announce another cavalcade of training events in the coming months, both online and in-person. We have numerous opportunities for you to take advantage of our proven Drupal 8 module and theme development courses as well as our flagship technical education program for those seeking comprehensive training to become developers; the 12-week a href=https://www.drupaleasy.com/dcoDrupal Career Online/a./p pThe primary instructor for all courses is Mike Anello (a href=https://www.drupal.org/u/ultimikeultimike/a), an expert instructor and experienced, practicing Drupal developer. All DrupalEasy training is taught by only expert developers to ensure that lessons are taught accurately, reflect best practices, and draw on how real-world Drupal sites are built. Mike has been active in the Drupal community for over 10 years, is a core contributor, a a href=https://assoc.drupal.org/Drupal Association/a member, and one of the leaders of the Florida Drupal Users' Group./p p12-Weeks of Career Trainingbr /a href=https://www.drupaleasy.com/academy/dco/course-informationDrupal Career Online/a starts on September 26, and runs every Monday and Wednesday afternoon from 1-4:30pm EDT. In addition, there is a 4-hour co-working lab, which is scheduled by the students. Class is held online using GoToMeeting, and use of webcams and microphones keeps the classes highly interactive, with instructor and student-led demos and discussions. The live online classes are supplemented with reference and lesson-guide handouts, as well as screencasts that cover each and every lesson. Each student is assisted by a community mentor to help kickstart their personal Drupal network. Our goal is to provide the most holistic, sanely-paced, best-practice-focused, long-form Drupal course in the world./p pInterested in learning more about 12-week Drupal Career Online course? We are offering two free a href=https://www.drupaleasy.com/dco/tasteTaste of Drupal/a webinars that outline the entire course, set expectations, and give potential students the opportunity to ask questions. Past students have included Drupal newbies, hobbyists, and content admins looking to learn how to become full-fledged Drupal developers./p p5 Options for D8 Theme and Module Development/p pFirst, if you're headed to a href=https://events.drupal.org/dublin2016DrupalCon Dublin/a, we're excited to announce that we've been selected to be one of the official training providers! We'll be offering our a href=https://events.drupal.org/dublin2016/training/d8-module-developmentIntroduction to Drupal 8 Module Development/a workshop live, and in-person. You'll learn through our stellar curriculum, and have follow-on access to all of the handouts and screencasts, with the added bonus of the synergy (yes, we just used that word) of a live classroom./p pWe're also offering the popular Introduction to D8 Module Development online, as well as our Introduction to D8 Theme Development workshops (a href=https://www.drupaleasy.com/training/workshops/upcominghttps://www.drupaleasy.com/training/workshops/upcoming/a) multiple times in August and September. The module development workshop is 8 hours, split over two half-days, and teaches the fundamental concepts of Drupal 8 module development, including using a href=https://drupalconsole.comDrupal Console/a as an aid for module development. Our theme development workshop is 12 hours long, split over three half-days. This super-sized workshop teaches the fundamental concepts of Drupal 8 theme development including building template files with Twig, creating custom subthemes (using Bootstrap as the base theme), and setting up a professional-level front-end development toolchain using a href=https://nodejs.org/Node.js/a and a href=http://gulpjs.comGulp/a. Both of these courses include a live instructor, PDF handouts, and screencasts for all in-class examples./p pWe are committed to providing the highest quality Drupal talent development, from beginner to advanced programs; which is why our trainings work. We've taught the 12-week DCO ten times (including twice as part of Acquia U) and our 1 and 1.5 day workshops always get great reviews, a href=https://www.drupaleasy.com/training/testimonialsjust see what our graduates have to say/a!/pdiv class=feedflare a href=http://feeds.feedburner.com/~ff/DrupalEasy?a=F-0ET0D6JRU:qCL0vxVwurw:yIl2AUoC8zAimg src=http://feeds.feedburner.com/~ff/DrupalEasy?d=yIl2AUoC8zA border=0/img/a a href=http://feeds.feedburner.com/~ff/DrupalEasy?a=F-0ET0D6JRU:qCL0vxVwurw:qj6IDK7rITsimg src=http://feeds.feedburner.com/~ff/DrupalEasy?d=qj6IDK7rITs border=0/img/a /divimg src=http://feeds.feedburner.com/~r/DrupalEasy/~4/F-0ET0D6JRU height=1 width=1 alt=/
Categories: Drupal Feeds

hussainweb.me: Efficient Drupal / PHP development on Windows using cygwin and Cmder

Wed, 07/27/2016 - 10:50pm
In this post, let's cover how you can set up your Windows machine for optimal Drupal development (or PHP in general). I'll be covering Windows 10 but this could very well apply for other versions.
Categories: Drupal Feeds

Cocomore: The central data hub of VDMA - The VDMA E-Market

Wed, 07/27/2016 - 5:00pm
pProducts of different manufacturers can be found in the E-Market of the Association for German Machinery and Plant Engineering (VDMA). We are introducing the E-Market’s special features in the sixth part of our blog series “The Central Data Hub of VDMA”. /p
Categories: Drupal Feeds

Phponwebsites: Pathauto added special characters in url alias - drupal 7

Wed, 07/27/2016 - 2:54pm
div dir=ltr style=text-align: left; trbidi=onnbsp; nbsp; To improve SEO, we need to clean our URLs. By default in drupal, we've an option called clean URLs at the configuration. In drupal 7, we can also manage the URLs. For instance, you have a content type called services. You wanted to each service page have url like services/page-name. To do that, we've a a href=https://www.drupal.org/project/pathautopathauto/a module in drupal 7. The pathauto module allow us to manage the URLs for every content types, files, taxonomy amp; users and also we can remove some unnecessary words from URL like an, the and so on.br /br /nbsp; nbsp;The pathauto module can remove some unnecessary words like a, an, the and so on amp; also remove special characters like !, @, $ and so on. Unfortunately, it doesn't included some other symbols like copyright(©), trademark(™), registered(®) and so on. But it provide a hook to add new symbols into the punctuation settings called hook_pathauto_punctuation_chars_alter. After created a content with some symbols which are represented above, your page URL looks like below image:br /br /br /div class=separator style=clear: both; text-align: center;a href=https://4.bp.blogspot.com/-xaUxuLAPV34/V5kML8eMYNI/AAAAAAAAAvk/XL7F55R8OkkYaSF24fMpu9gG65E-4EQswCLcB/s1600/drupal-pathauto-special-characters.png imageanchor=1 style=margin-left: 1em; margin-right: 1em;img alt=Drupal 7 - remove special characters from url using pathauto module border=0 src=https://4.bp.blogspot.com/-xaUxuLAPV34/V5kML8eMYNI/AAAAAAAAAvk/XL7F55R8OkkYaSF24fMpu9gG65E-4EQswCLcB/s1600/drupal-pathauto-special-characters.png title=Drupal 7 - remove special characters from url using pathauto module //a/divbr /br /br /div class=bdr/**br /nbsp;* Implements hook_pathauto_punctuation_chars_alter().br /nbsp;*/br /function phponwebsites_pathauto_punctuation_chars_alter(array amp;$punctuation) {br /nbsp; $punctuation['copyright'] nbsp; nbsp; nbsp; nbsp; nbsp;= array('value' =gt; '©', 'name' =gt; t('Copyright'));br /nbsp; $punctuation['registered'] nbsp; nbsp; nbsp; nbsp; = array('value' =gt; '®', 'name' =gt; t('Registered trademark'));br /nbsp; $punctuation['trademark'] nbsp; nbsp; nbsp; nbsp; nbsp;= array('value' =gt; '™', 'name' =gt; t('Trademark'));br /}/divbr /nbsp; nbsp;After implemented above code into your module, you cold see added symbols are listing on Pathauto module's settings page at /admin/config/search/path/settings.nbsp;If You didn't get these symbols, clear cache amp; test it again. It looks like below image:br /br /br /div class=separator style=clear: both; text-align: center;a href=https://1.bp.blogspot.com/-dRSIb-LHXkg/V5kPURZoSvI/AAAAAAAAAvw/unIIVfRzYgAaW6TW_EiilgPD3GdSAxeYQCLcB/s1600/drupal-pathauto-special-characters.png imageanchor=1 style=margin-left: 1em; margin-right: 1em;img alt=Drupal 7 - pathauto settings after hook_pathauto_punctuation_chars_alter border=0 src=https://1.bp.blogspot.com/-dRSIb-LHXkg/V5kPURZoSvI/AAAAAAAAAvw/unIIVfRzYgAaW6TW_EiilgPD3GdSAxeYQCLcB/s1600/drupal-pathauto-special-characters.png title=Drupal 7 - pathauto settings after hook_pathauto_punctuation_chars_alter //a/divbr /br /Now you can create a content with those symbols. The pathauto module didn't added those symbols into the URL.br /br /Now I hope you know how to remove some special characters from URL alias using pathauto module in drupal 7./div
Categories: Drupal Feeds

Arpit Jalan: GSOC 2016- Developing tests for “Fil Alt Text” feature of Google Vision module- Week 9

Wed, 07/27/2016 - 12:01pm
div dir=ltr style=text-align: left; trbidi=ondiv dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: italic; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;TL;DR/spanspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; Last week, I had worked on and developed tests to ensure that the similar images are grouped in accordance to the Image Properties feature of the Vision API. The code is under review by the mentors, and I would continue on it once the review is done. Meanwhile, they also reviewed the “Fill Alt Text” feature issue, and approved it is good to go. This week, I have worked on developing tests for this issue./span/divb id=docs-internal-guid-c9a8181b-2d4d-9dc7-abf5-0e9398a47941 style=font-weight: normal;br //bbr /div dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;An important feature that I have implemented in the /spana href=https://www.drupal.org/project/google_vision style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;Google Vision API/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; module is the filling of Alt Text field of an image file entity by any of the four choices- Label Detection, Landmark Detection, Logo Detection and Optical Character Detection. My mentor suggested me to check the availability of the response and then fill the field, as we can not fully rely on the third party responses. With this minor suggestion being implemented, now its time to develop tests to ensure the functionality of this feature./span/divb style=font-weight: normal;br //bbr /div dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;I started developing /spana href=https://www.drupal.org/node/265828 style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;simple web tests/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; for this feature, to ensure that the Alt Text field is properly filled in accordance to the choice of the user. It requires the selection of the four choices one by one and verify that the field is filled correctly. Thus we require four tests to test the entire functionality. I have added an extra test to ensure that if none of the options are selected then the field remains empty. /span/divb style=font-weight: normal;br //bbr /div dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;I created the image files using the images available in the simpletests. The images can be accessed through /spana href=https://api.drupal.org/api/drupal/core!modules!simpletest!src!WebTestBase.php/function/WebTestBase%3A%3AdrupalGetTestFiles/8.2.x style=text-decoration: none;span style=background-color: transparent; color: #1155cc; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;drupalGetTestFiles()/span/aspan style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;. The filling, however, requires call to the Google Cloud Vision API, thus inducing dependency on the API key. To remove the dependency, I mocked the function in the test module, returning the custom data to implement the feature./span/divb style=font-weight: normal;br //bbr /div dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;The first test ensures that the Label Detection feature returns correct response and the Alt Text field is filled correctly. The simpletest provides a list of assertions to verify it, however, I found assertFieldByName() to be most suitable for the purpose. It asserts the value of a field based on the field name. The second test ensures that the Landmark Detection feature works correctly. Similarly, the third and fourth test ensures the correct functionality of the Logo and the Optical Character Detection feature./span/divb style=font-weight: normal;br //bbr /div dir=ltr style=line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;span style=background-color: transparent; color: black; font-family: quot;arialquot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;The fifth test which I have included perform tests when none of the options are selected. It ensures that under this case, the Alt Text field remains empty, and does not contain any unwanted values./span/divbr /span style=font-family: quot;arialquot;; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;I have posted the patch covering the suggestions and tests on the issue queue a href=https://www.drupal.org/node/2743815 target=_blankFill the Alt Text of the Image File using Google Vision API/a to be reviewed by my mentors. Once they review it, I would work on it further, if required./span/div
Categories: Drupal Feeds

Microserve: DrupalCamp Bristol 2016 - Chairman's Write-up

Wed, 07/27/2016 - 11:13am
h1DrupalCamp Bristol 2016 - Chairman#039;s Write-up/h1divJul 27th 2016/divdivp DrupalCamp Bristol 2016 was held over this last weekend, and I hope I'm not the only one to say it was an enjoyable and very useful weekend for many. Although there were a couple of usual hiccups, feedback from attendees was very positive and certainly made it all feel worthwhile. Let's hope that wasn't just the beer talking!/p p Last year I wrote up some a href=https://microserve.io/blogs/organising-drupalcamp-tips-and-feedback-drupalcamp-bristol-2015tips and feedback/a after the event, and as the Chair of the DCB Committee I thought it would be great to share my thoughts again this year. After all, Drupal as a community is based upon being open, so behind the scenes camp organisation should be too!/p h2 What went well?/h2 p Let's start of with the positives:/p ulli strongBusiness Day/strong - In general the Business Day was a fantastic success. We had an increased number of attendees this year which included a larger number of client types, the talks were well varied and lived up to the high expectations set last year, and our new venue - Colston Hall - was a fantastic choice. The weather was brilliant and attendees were able to chat with each other outside on the roof terrace which was a great feature./li li strongQuality of Saturday talks/strong - I'll give a bit more insight into the talks shortly, but this year we managed to put together a larger number of talks without sacrificing any quality. Last year almost all of the talks were of a technical nature, but this year we managed to get a better variety which is the first step to brining in newer faces./li li strongSponsors /strong- This year we completely changed the Sponsor tiers up, allowing us to reduce the number of agency types involved. We had 4 key Organisational Sponsors, a Recruitment Sponsor, and a couple of Brunel tier Sponsors, which was well received. I think I'm correct in saying that most of the Org Sponsors have an existing relationship with the Recruitment Sponsor, so we were able to pick somebody we trusted for the exclusive Sponsor role./li li strongQuiz /strong- This year we ended the Saturday talks at 3.30pm and finished with a Quiz instead for a lighter end to the day. Admittedly the questions were a bit hard and in some cases....different, but the teams soon began to laugh at it and with a load of prizes to give away it was a win-win situation for everybody!/li li strongSocial /strong- We invested heavily in bar tabs both Friday and Saturday, with a total of £1K budgeted between both evenings, and this was definitely worthwhile. For the Business Day attendees the socials are where the networking is most prominent, and for developers the socials are where most people really seem to bond. Personally I think the relationships which are forged at the socials are key to ensuring the regular faces return each year, as this is where you get a real sense of community and team spirit./li li strongSprints /strong- We held a day of Sprints for the first time and we had to stop ticket sales as this had reached maximum capacity. Thanks to a href=https://torchbox.com/Torchbox/a for letting us use their offices for this one./li li strongUse of Slack/strong - The committee was much more dispersed this year, but using Slack as a communication tool made things much simpler and ensured the remote factor didn't play against us./li /ulh2 What didn't go so well?/h2 p There were a few things that concerned me, and although some where event specific I think there's some wider problems that are becoming apparent in the Drupal Community. I'd be really keen to hear how we as a community can go about improving these:/p ulli strongNew talent is lacking/strong - It was great to hear during Sheena Morris's Apprenticeships talk that agencies in the North and in London have adopted their Apprenticeship program so well, but Saturday's attendees showed that there is a huge lack of new Drupal talent. a href=https://twitter.com/emmajanehwEmma Jane/a won a href=https://www.amazon.co.uk/Learning-Drupal-8-Nick-Abbott/dp/1782168753Learning Drupal 8/a during the Quiz which was kindly provide by a href=https://inviqa.com/Inviqa/a, and gifted it to the person in the room who was newest to Drupal. The person in the room with the least Drupal experience had just less than 2 years!/li li strongFemale speakers are sparse/strong - Speaker diversity is a problem which isn't new to us, and this year we only had one female speaker per day. What's troublesome about that is that we didn't have a single talk submission from a female to choose from; it was committee members who sourced both of those speakers./li li strongLast minute program changes/strong - I guess this one is unavoidable, but 3 speakers dropped out of Saturday within a week of the event, and upon arriving at the venue on Saturday morning we were told the main lecture theatre was out of use and we had to direct talks to another lecture theatre. Typical! It would be interesting to know how other camps deal with this; maybe we shouldn't include the Saturday schedule in the printed programme, but instead ensure attendees use the website as the primary source of this info?/li /ulh2 Camp Funds, DCB 2017, and the Committee/h2 p We've estimated an income of £11K this year, with expenditure of just short of £10K. We started the year with a cushion of approximately £4K from last year's camp, which gives us around £5K to rollover. I personally think it would be great to invest some of this into the local Drupal community, perhaps sponsoring more regular talk nights and Sprints? I'd be interested to hear of any suggestions - tweets to @DrupalCampBris./p p The committee will be having a wash up meeting over the next week to discuss next year and see what we can do to improve the event, but I can guarantee you DrupalCamp Bristol 2017 will certainly be happening. Organisation will begin again later this year, and as the committee is always in need of new members we'd be interested to know if anybody new would like to join the team? Again, simply tweet @DrupalCampBris if you'd like to get involved./p p Finally, I'd like to take this chance to offer up the Committee Chair position as I've decided to take a step down to a more back seat next year. I've thoroughly enjoyed leading the team over the first 2 years, but I think it would be good to see somebody else step into the role next year./p p A massive thank you to everybody who attended, thank you to all the Speakers who volunteered their time over the weekend, thank you to all the Sponsors who made the event possible, and a huge thank you to all the committee members for pulling everything together and making the event a success./p p See you all next year!/p /diva href=/about/rick-donohoeimg typeof=foaf:Image src=https://microserve.io/sites/default/files/styles/medium/public/pictures/picture-32-1430928124.jpg?itok=W1yD5gVI alt=Rick Donohoe#039;s picture title=Rick Donohoe#039;s picture //appWritten by: a href=https://microserve.io/about/rick-donohoeRick Donohoe/a, Account Manager/p/pphr /p em style=line-height: 1.6em;Microserve is a a href=https://microserve.io/Drupal Agency/a based in Bristol, UK. We specialise in a href=https://microserve.io/drupal-services/drupal-developmentDrupal Development/a, a href=https://microserve.io/drupal-services/drupal-site-audit-and-health-checkDrupal Site Audits and Health Checks/a, and a href=https://microserve.io/drupal-services/support-maintenance-hostingDrupal Support and Maintenance/a. a href=https://microserve.io/contact-usContact us for for further information/a./em/p /p
Categories: Drupal Feeds

Miloš Bovan: GSoC ‘16 - Week #10: Mailhandler updates

Wed, 07/27/2016 - 10:29am
span property=schema:nameGSoC ‘16 - Week #10: Mailhandler updates/span div property=schema:text class=field field--name-body field--type-text-with-summary field--label-hidden field--itemp dir=ltremThis blog post summarizes week #10 of the a href=https://summerofcode.withgoogle.com/projects/#4520809229975552Google Summer of Code 2016 project - Mailhandler/a./em/p p dir=ltrIn a href=https://blog.bovan.me/2016/07/gsoc-16-week-9-mailhandler-reportthe last blog post/a, I was writing about the comment and demo module improvements. This blog post will provide an overview of the work done in the past 7 days. Even though the plan was to work mostly on UI/UX issues we ended up in code refactoring./p p dir=ltrDuring the last meeting with my mentors we identified 3 key Inmail issues to work on: a href=https://www.drupal.org/node/2754253Lack of standard result in collaboration of analyzers/a, a href=https://www.drupal.org/node/2754261Support switching the user context/a and a href=https://www.drupal.org/node/2769617Provide a hook_requirements fed by plugin instances/a. We agreed those issues will provide better overall value in the integration of Mailhandler and Inmail modules. It will allow Inmail to implement ideas from Mailhandler, make them generic in a way both modules can benefit from./p p dir=ltra href=https://www.drupal.org/node/2754253Lack of standard result in collaboration of analyzers/a was identified as the main blocker to achieve analyzer collaboration. After a long discussion and 7 patches, it was finally committed. As a result, Inmail will have a default analyzer result which can be extended sequentially by all enabled analyzers. As this was a big change in core Inmail module, there are several follow-ups created.br /br / Another Inmail issue a href=https://www.drupal.org/node/2754261Support switching the user context/a was dependent on the default analyzer issue. It uses codeAccountSwitcher/code service which completely switches the user context to the given user/account. That is done after the handlers run. In case the account switching mechanism was activated, we make sure it is switched back after the handlers-processing. On a handler level, we can use code\Drupal::currentUser()/code and be sure it represents the identified user sender or an anonymous user otherwise.br /br / Last but not least, I have been working on a href=https://www.drupal.org/node/2769617Provide a hook_requirements fed by plugin instances/a. The goal of this issue is to create a way for each of the Inmail plugins (analyzers, deliverers, handlers) to provide information about its runtime requirements. They can be PHP extension requirements, valid credentials etc. This information is displayed on “Status report” page (admin/reports/status) or processed by contrib modules like a href=https://www.drupal.org/project/monitoringMonitoring/a./p figure role=group class=align-centerimg alt=PGP Analyzer requirements data-entity-type=file data-entity-uuid=fd7d659a-ba1b-48b8-b3b1-f2708c695ea8 src=/sites/default/files/inline-images/Screenshot%20from%202016-07-27%2016-02-53.png /figcaptionPGP Analyzer requirements/figcaption/figurep dir=ltrInmail plugins can produce several issues with unmet requirements. As displayed in the picture above, PGP Analyzer needs codegnupg/code PHP extension in order to work with signed messages. On the other side, an IMAP deliverer needs valid credentials to be functional./p pSince the most of the Inmail issues mentioned above were committed, Mailhandler module will need adaption which is going to be my focus for this week. Also, I will analyze the code of the module and try to simplify it. Besides the mentioned, I will work on a href=https://www.drupal.org/project/issues/inmail?version=8.xamp;component=User+interfaceInmail UI/UX issues/a which will be described in the next blog post./p p /p p /p p /p/div span rel=schema:authorspan lang= about=/user/4 typeof=schema:Person property=schema:name datatype=Milos/span/span span property=schema:dateCreated content=2016-07-27T15:29:12+00:00Wed, 07/27/2016 - 17:29/span 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/2 property=schema:about hreflang=enDrupal/a/div div class=field--itema href=/taxonomy/term/3 property=schema:about hreflang=enOpen source/a/div div class=field--itema href=/taxonomy/term/1 property=schema:about hreflang=enGoogle Summer of Code/a/div div class=field--itema href=/taxonomy/term/4 property=schema:about hreflang=enDrupal Planet/a/div /div /div section rel=schema:comment h2Add new comment/h2 drupal-render-placeholder callback=comment.lazy_builders:renderForm arguments=0=nodeamp;1=10amp;2=commentamp;3=comment token=a58a614e/drupal-render-placeholder /section
Categories: Drupal Feeds

GVSO Blog: [GSoC 2016: Social API] Week 9: Social Post implementer - Part II

Wed, 07/27/2016 - 7:13am
span property=schema:name[GSoC 2016: Social API] Week 9: Social Post implementer - Part II/span div property=schema:text class=field field--name-body field--type-text-with-summary field--label-hidden field--itempWith this week over, we are getting closer to GSoC final evaluations. Therefore, we keep working hard to develop the Social API project even further. This week, I focused on a href=https://github.com/drupalsocialinitiative/social_post_twitterSocial Post Twitter/a as I mentioned in my last a href=http://blog.gvsanz.net/article/2016-07-20/gsoc-2016-social-api-week-8-social-post-implementerweekly summary/a. This module works as an implementer of a href=https://www.drupal.org/project/social_postSocial Post/a./p/div span rel=schema:authorspan lang= about=/user/1 typeof=schema:Person property=schema:name datatype=gvso/span/span span property=schema:dateCreated content=2016-07-27T12:13:20+00:00Wed, 07/27/2016 - 08:13/span div class=field field--name-field-tags field--type-entity-reference field--label-above div class=field--labelTags/div div class=field__items span class=field--itema href=/tag/drupal property=schema:about hreflang=enDrupal/a/span span class=field--itema href=/tag/drupal-planet property=schema:about hreflang=enDrupal Planet/a/span span class=field--itema href=/tag/gsoc2016 property=schema:about hreflang=enGSoC 2016/a/span /div /div ul class=links inline list-inlineli class=node-readmorea href=/article/2016-07-27/gsoc-2016-social-api-week-9-social-post-implementer-part-ii rel=tag title=[GSoC 2016: Social API] Week 9: Social Post implementer - Part II hreflang=enRead morespan class=visually-hidden about [GSoC 2016: Social API] Week 9: Social Post implementer - Part II/span/a/lili class=comment-forbiddena href=/user/login?destination=/article/2016-07-27/gsoc-2016-social-api-week-9-social-post-implementer-part-ii%23comment-formLog in/a to post comments/li/ul
Categories: Drupal Feeds

Deeson: 7 facts that reveal the state of Drupal

Wed, 07/27/2016 - 6:34am
img src=https://d3suqxyr95ccqd.cloudfront.net/sites/default/files/styles/image_400_width/public/lead_image/bannerconcepts20-20.png?itok=XtXwwdIZ width=400 height=142 alt=7 facts that reveal the true state of Drupal title=7 facts that reveal the true state of Drupal /img class=img-responsive src=https://d3suqxyr95ccqd.cloudfront.net/sites/default/files/styles/image_600_width/public/lead_image/drupalcon_nola.jpg?itok=jmU6mHEf width=600 height=288 alt=DrupalCon New Orleans title=DrupalCon New Orleans Community /pDrupal 8 was released on the 19th of November, 2015. Just a touch under five years from the 5th of January, 2011 release of Drupal 7. In web terms, an epoch. To put things in context, in 2011 AngularJS had not reached 1.0, React was two years out from being released and the term “Devops” was only whispered in dark corridors. Now that Drupal 8 is finally here the front-end revolution is led by AngularJS and React and articles are proclaiming that “a href=http://techcrunch.com/2016/04/07/devops-is-dead-long-live-devops/DevOps is dead/a”. In short, much has changed./p pUnderstandably, this has created some concern within the Drupal community. Has the huge Drupal 8 release cycle hurt Drupal in some irrevocable way? Is Drupal still a relevant technology? Is it too little too late or, as some argue, a href=https://backdropcms.org/too much too late/a?/p pAt the New Orleans DrupalCon, roughly six months after the release of Drupal 8, many were trying to glean some answers from available data. One fact cited is that after the first three months of the Drupal 8 release there were a href=http://buytaert.net/how-is-drupal-8-doingroughly 60,000/a sites compared to 30,000 in the equivalent time period for Drupal 7. However, others argued that that is not necessarily a positive number because (a href=http://buytaert.net/comment/125091#comment-125091as is pointed out here/a) the Drupal community is also three times bigger now./p pIn addition, the reasons that are holding people back from moving to D8 were discussed. a href=https://events.drupal.org/neworleans2016/driesnoteDries Buytaert’s keynote/a at the New Orleans DrupalCon covers that very well, with the leading factor being the migration of existing modules from Drupal 7 to Drupal 8./p pHowever, as Dries goes on to explain, the number of sites and the number of upgraded modules are not the only relevant metrics. He argues that this increase in the richness and reach of Drupal will ultimately mean that Drupal 8 will see much bigger numbers than any other Drupal release./p pWhat I will attempt to do in this blog post is add to the discussion by offering some simple facts that are very revealing about the actual state of Drupal and are relevant to any organisation trying to decide whether Drupal should form a component of their web strategy for the next five years./p h3Millions in ongoing investment by the Drupal community/h3 p2016 marks the year where it is no longer a novelty for leading Drupal agencies to employ people with a very specific mandate of working directly on Drupal core issues, or large Drupal 8 contrib modules (here at Deeson this is exactly what we do with the a href=https://www.deeson.co.uk/labs/group-alternative-organic-groupsGroup/a module, a href=https://www.deeson.co.uk/labs/rainmaker-local-linux-development-containers-discerning-drupal-developerRainmaker/a, a href=https://www.deeson.co.uk/labs/warden-monitoring-security-your-drupal-estateWarden/a and our monthly a href=https://www.deeson.co.uk/labs/coder-lounge-january-2016Coder Lounge/a). The amount of ongoing direct investment from Drupal agencies and other organisations easily runs into multiple millions./p h3$500,000 invested to accelerate Drupal 8 module development/h3 pAcquia alone is investing $500,000 to speed-up the migration of popular Drupal 7 modules to Drupal 8. This means that popular modules will be ready faster and, more importantly, the quality of those modules will be higher as the maintainers will be able to dedicate focused time to get upgrades right. Using Drupal 8 means you are using an open-source CMS that is built to very high standards from some of the best developers around./p h3Big site wins are no longer big news/h3 pThere was a time when a big site launching on Drupal would represent headline news in the community. It would receive applause at conferences and would be tweeted widely. This is no longer the case. Everyone is still happy to hear about big names joining Drupal but it is not news, it is the normal state of affairs./p pThese big launches span from media brands like a href=https://www.deeson.co.uk/work/press-centreITV/a to multinationals like a href=https://www.deeson.co.uk/work/do-surgerycomJohnson amp; Johnson/a; from a href=https://www.deeson.co.uk/work/robbie-williamspop singers/a to a href=https://www.royalcollection.org.uk/large cultural institutions/a. While the absolute number of sites running a CMS is important, the number of large complex sites using Drupal is arguably more significant to an organisation looking to set out its strategy for the next 5 years./p h3DrupalCon isn’t just about Drupal anymore/h3 pIf you haven’t attended a DrupalCon yet, you should. One of the most interesting ways DrupalCons have evolved in the past few years is that they are no longer just about Drupal. There are dedicated tracks on project management, business development, user experience, PHP, front end technologies and much more. This is proof of a maturing community./p pAs the community has matured, interests have become more diverse and the breadth of shared practices has grown. Drupal has community sharing in its DNA which means that, by using Drupal, you are tapping into a very rich world that is willing to share knowledge about every aspect of a web strategy./p h3Drupal 8 is actually already at 8.1.7/h3 pThe Drupal release cycle has changed drastically from 7 to 8. This is an often overlooked “feature” of Drupal 8. While with Drupal 7 we essentially had the sum of features at the start and new functionality could only really develop through contributed modules, Drupal 8 brings minor releases that can add completely new functionality./p pTo prove the point we are already at Drupal 8.1.7 with Drupal 8.1.0 seeing exciting new features such as the addition of the a href=https://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919BigPipe technique/a to Drupal. This finally allows Drupal to adapt and adjust its course, and the days of worrying about Drupal becoming irrelevant as the rest of the web marches on are behind us./p h3There are 17 external JS Libraries and 27 external PHP Libraries in Drupal 8/h3 pDrupal 8 core contains at least 17 significant JavaScript libraries and 27 PHP libraries that are completely separate open-source projects. Drupal has well and truly built bridges to other technology islands and this also makes Drupal stronger, more relevant and more resilient to changes./p h3You can build a Drupal site with 0% Drupal on the frontend./h3 p0 is a strange number to be touting as a success. But Drupal 8 now realistically allows you to build a front end that is 100% Drupal free. At Deeson we are currently building amazing front end experiences using React and taking advantage of Drupal’s powerful content model to store information and allow editors to quickly add and update information. The wider community is developing modules and best practices around this (for example, the great work happening around the a href=https://www.drupal.org/sandbox/mrjmd/2664138Decoupled Blocks/a module)./p pNow, given the above is Drupal a relevant technology for a modern, forward-looking web strategy? All indications point to an unequivocal yes. Drupal 8 is more relevant than ever. It is the most advanced open-source CMS and it is built in a way that allows it to embrace and enhance a range of other technologies. The best news is that we are just at the start of what Drupal 8 will be able to do and, as best practices and experience accrues, the possibilities and the efficiency with which projects can be delivered will improve./p pstrongWant to know more about this topic? We're holding a webinar on the current state of Drupal and where it's headed. During the webinar you'll have the chance to ask Ronald Ashri, author of this post, any questions you like on this topic. /strong/p pstrongInterested? Sign up using the form at the top of this page./strong/p p /p
Categories: Drupal Feeds