Drupal Planet

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

Drupal core announcements: What's next for core patches after 8.0.0?

Tue, 11/24/2015 - 7:03pm
pLast week, we a href=https://www.drupal.org/news/drupal-8.0.0-releasedreleased Drupal 8.0.0/a! This amazing milestone signals a new era in Drupal core development, with a href=https://www.drupal.org/core/d8-allowed-changeschanges to the changes allowed in patches/a and a a href=https://www.drupal.org/core/release-cycle-overviewnew release cycle with minor versions scheduled every six months/a./p pNow that Drupal 8 is a href=https://www.drupal.org/8/readyready for building real sites, with contributed projects already available or being built/a, the immediate focus for Drupal 8 core will be fixing bugs to help those real sites, as well as fixing any issues in Drupal core that prevent contributed modules from being ported to Drupal 8. Another top priority is stabilizing and completing the core Migrate feature and its user interface, so that existing Drupal 7 and especially Drupal 6 sites can move to Drupal 8 reliably. Finally, a third priority is adding frontend and performance testing to help us make changes more safely. For the next six weeks, we will mainly be committing patches that move us toward these three goals./p pThen, after January 6, 2016, we will begin a broader feature development phase for innovations in 8.1.x, 8.2.x, and beyond, so long as we are able to resolve critical issues consistently and keep 8.1.x stable for a reliable scheduled minor release. a href=https://www.drupal.org/node/2455081Read more about the proposed development, beta, and release candidate phases for minor versions/a./p h3Drupal 8 core branches and the core issue workflow/h3 pStarting today, all patches that are accepted to core according to the priorities above will be committed first to the 8.1.x git branch (even when they are filed against 8.0.x-dev in the core issue queue). Patches that are a href=https://www.drupal.org/core/d8-allowed-changes#patcheligible for patch releases/a will typically be immediately committed to 8.0.x as well. If we are close to a bugfix release window, the issue may be marked Patch (to be ported) and committed just after the bugfix release, to give ample time to catch any regressions or followups before each change is deployed to production sites./p pSome patches will only be committed to 8.1.x (for example, if they are too disruptive for a patch release or if they make additions that are only a href=https://www.drupal.org/core/d8-allowed-changes#minorallowed in minor releases/a). Keep in mind that the open feature development phase for 8.1.x has not started yet, so plan to work on general feature additions and BC-compatible API improvements after it does./p pNote that for the time being, patch-release-eligible issues are strongstill filed against 8.0.x-dev/strong in the core issue queue and most 8.1.x issues are still postponed pending the open feature development phase. Later, we will update the core issue metadata and processes as we move into more extensive minor version development./p
Categories: Drupal Feeds

DrupalCon News: Sessions Announced for DrupalCon Asia

Tue, 11/24/2015 - 4:19pm
div class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenpOne of the most exciting aspects of preparing for a DrupalCon is selecting the sessions that will be presented. It’s always incredibly cool and humbling to see all the great ideas that our community comes up with— and they’re all so great that making the official selections is definitely not an easy process! This time, the Track Chairs had almost 350 sessions to read through to determine which 50 would be presented in Mumbai./p/div/div/div
Categories: Drupal Feeds

Drupal Watchdog: Black Box – White Hat

Tue, 11/24/2015 - 12:51pm
div class=field field--article-edit-printtype field-type-list-text field-label-hidden field--rss Article /div div class=field field--article-body field-type-text-long field-label-hidden field--rss pimg src=//drupalwatchdog.com/sites/default/files/images/web/DW5.02-BlackBoxHeader.png alt=Photo width=100% align=left class=img-responsive img-thumbnail margin-right / Drupal has a pretty secure structure: a small, simple and stable core that can be extended with tons of modules and themes. From Drupal 7’s initial release on January 5, 2011 until now, there were only 17 core security updates, which is quite a small number for a period lasting longer than four years./p p But when it comes to third-party modules and themes, the picture is quite different. Although only modules with official releases are reviewed by the security team, or have security announcements issued, the majority of the 11,000+ third-party modules and themes for Drupal 7 get weekly reports for security issues./p pAnd using custom modules is even more dangerous if they are not tested properly. Let’s face it: no one uses Drupal without modules. That’s why I will share with you some of the best open source tools to improve the security of your website./p pKnowing your opponent’s moves helps you better prepare your defenses. That’s why we will try to attack with every known-at-the-moment method of testing vulnerability. All the tools I will show are easy to use without any knowledge of the source code. And the best part is, you can use this strategy indefinitely, if you keep these tools up-to-date. Remember: update first, then test./p h3Being Up-to-Date/h3 pI can’t emphasize enough how important it is to keep all your stuff up-to-date, so let’s start with that idea: If one tiny part of your website has a security breach, the whole system is corrupted. That’s why you should check for updates for the core and the modules you are using. There are reports you can find on a href=http://wdog.it/5/2/secDrupal’s official page/a; if you find that there is a security update available, immediately apply it./p h3Metasploit + Armitage = Hail Mary!/h3 pStart with Kali Linux: it's small, and has Metasploit and Armitage pre-installed. Armitage gives you a GUI, exploit recommendations, and use of the advanced features of Metasploit Framework's Meterpreter. (But remember to get updates every time you're about to run tests.)/p pThen, get an exact clone of the server; same machine, database, structure, OS version, etc./p pNOTE: It is not recommended you use this technique on live websites because there is a chance the server will go down./p /div
Categories: Drupal Feeds

Pantheon Blog: Update Your Nginx Config for Drupal 8

Tue, 11/24/2015 - 12:10pm
If you are still using the same Nginx configuration that you have been for Drupal 7 on your new Drupal 8 install, most things will continue to work; however, depending on the exact directives and expressions you are using, you might notice a few operational problems here and there that cause some minor difficulties.  The good news is that the Drupal configuration recipe in the Nginx documentation has been updated to work with Drupal 8, so if you have a very basic Nginx setup, you can just grab that and you’ll be
Categories: Drupal Feeds

a-fro.com: Speed Up Cache Clearing on Drupal 7

Tue, 11/24/2015 - 11:33am
span property=schema:name data-quickedit-field-id=node/6/title/en/rss class=field field--name-title field--type-string field--label-hiddenSpeed Up Cache Clearing on Drupal 7/span div property=schema:text data-quickedit-field-id=node/6/body/en/rss class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itemh3Cache clearing nirvana may be two vsets away/h3 pstrongtl;dr/strong If your D7 site uses features or has many entity types, some recent patches to the a href=https://www.drupal.org/node/2378343features module/a and the a href=https://www.drupal.org/node/2241979entity api module/a may deliver dramatic performance increases when you clear Drupal's cache. The magic:/p pre code $ drush vset features_rebuild_on_flush FALSE $ drush vset entity_rebuild_on_flush FALSE /code/pre/div span data-quickedit-field-id=node/6/uid/en/rss rel=schema:author class=field field--name-uid field--type-entity-reference field--label-hiddenspan lang= about=/user/2 typeof=schema:Person property=schema:name datatype=aaron/span/span span property=schema:dateCreated content=2015-11-24T17:33:19+00:00 data-quickedit-field-id=node/6/created/en/rss class=field field--name-created field--type-created field--label-hiddenTue, 11/24/2015 - 11:33/span
Categories: Drupal Feeds

.VDMi/Blog: Generating menu items in Drupal 8

Tue, 11/24/2015 - 9:02am
div class=field field-name-field-afbeelding field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/blog/generating-menu-items-drupal-8img style=max-width: 40%; height: auto; float: left; margin-right: 1em; align=left hspace=10 src=http://www.vdmi.nl/sites/vdmisite.s1.aegirhost.nl/files/styles/200_max_width/public/drupal_8_logo_cmyk_72_0.png?itok=KfuR-17c width=200 height=205 alt=Generating menu items in Drupal 8 //a/div/div/divdiv class=field field-name-field-samenvatting1 field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item evenDrupal 8 comes with a new way to generate menu items from code. In Drupal 7 you would do this with quot;hook_menu()quot;, in Drupal 8 you use a Derivative Plugin./div/div/div
Categories: Drupal Feeds

Mediacurrent: Weather.com Recognized as Acquia Partner Site of the Year

Tue, 11/24/2015 - 8:18am
img typeof=foaf:Image src=http://d1l4od7sxc8nwf.cloudfront.net/sites/default/files/styles/thumb_blog_spotlight/public/weatherlaunches.png?itok=lBu80pv9 width=200 height=154 alt=Weather.com Launches on Drupal title=Weather.com Launches on Drupal / pLast November, a href=https://www.mediacurrent.com/blog/weather-channel-journey-drupal target=_blankWeather.com launched on Drupal/a and became one of the highest trafficked websites in the world to launch on an open-source content management system (CMS). span style=line-height: 1.538em;Today, we're proud to announce that we have been recognized with a /spana href=https://www.acquia.com/about-us/newsroom/press-releases/acquia-announces-winners-2015-partner-site-year-awards-nov-12-2015 style=line-height: 1.538em; target=_blank2015 Partner Site of the Year Award/aspa/spa/p
Categories: Drupal Feeds

Pantheon Blog: Explicit Drupal: Clear Intentions in Drupal 8!

Mon, 11/23/2015 - 9:36pm
Much of the conversation in the Drupal 8 development cycle has focused on “NIH vs. PIE.” In Drupal 8 we have replaced a fear of anything “Not-Invented-Here” with an embrace of tools that were “Proudly-Invented Elsewhere.” In practice, this switch means removing “drupalisms,” sections of code created for Drupal that are understood only by (some) Drupal developers. In their place, we have added external libraries or conventions used by a much wider group of people.
Categories: Drupal Feeds

OSTraining: Put Drupal Sites in Maintenance Mode Manually

Mon, 11/23/2015 - 9:14pm
div class=ost-intro-imageimg src=https://www.ostraining.com/images/drupal/maintenance-mode-manually.jpg alt=Put your Drupal Site in Maintenance Mode Manually width=200 height=133 //div pDrupal allows to set a website offline with a few clicks via the admin interfacte./p pHowever, we've seen situatuons where the admin interface becomes unavailable, often via a white screen of death./p pIn this tutorial, I'm going to show you a manual way to force your Drupal 7 site in maintenance mode./p
Categories: Drupal Feeds

Savas Labs: It's nearly 2016, your site is running on Drupal 6, now what? (Part 1)

Mon, 11/23/2015 - 6:00pm
pa href=http://savaslabs.com/2015/11/24/drupal-6-upgrade.htmlContinue reading…/a/p
Categories: Drupal Feeds

Greater Los Angeles Drupal (GLAD): GLADCamp 2016 is at SCALE 14x on January 21, 2016!

Mon, 11/23/2015 - 4:43pm
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://www.drupal.la/sites/default/files/glad-logo-250x280_0.png width=125 height=140 alt=Greater Los Angeles Drupal hspace=10 vspace=5 border=0 align=right / Greater Los Angeles Drupal Camp (GLADCamp) is a full day of Drupal on January 21st, 2016, at the Pasadena Convention Center in Pasadena, California./p pWe've partnered with a href=https://www.socallinuxexpo.org/scale/14xSCALE 14x/a, the 14th annual Southern California Linux Expo, and are planning an all-day event that's packed with activities, including presentations and sessions. /p pGLADCamp has a focus on strongDrupal for good and civic engagement/strong. We're still looking for a partner venue where we can feature either a non-profit summit or a Coder's with a Cause barn raising to benefit a local 501c3 non-profit, but for now we're ready to announce GLADCamp on January 21st, 2016./p pAre you looking forward to warmer weather? Join us at GLADCamp, the strongsunniest DrupalCamp of the season/strong!/p pWe'll be announcing our call for presentations in the next couple of days./p pStay tuned to this event announcement, the a href=http://www.gladcamp.orgGLADCamp.org/a website and @a href=https://twitter.com/gladcampGLADCamp/a on Twitter for upcoming news and announcements./p h3Register for GLADCamp 2016/h3 pTo register for GLADCamp 2016, you must register for SCALE. See the SCALE website for more information or register now at a href=https://reg.socallinuxexpo.org/reg6/https://reg.socallinuxexpo.org/reg6//a  /p h3Who should attend GLADCamp?/h3 ulliAnyone wanting to know more about how Drupal can help you solve your problems./li liAnyone wanting to network with others using Drupal in your area, either geographically or in your industry./li liAnyone wanting to grow their Drupal team, or be hired for Drupal work./li liAnyone wanting to give back to the Drupal community. The power of Drupal is in the community so contributing back helps us all./li liAnyone wanting to learn more about Drupal, past, present and the future./li liNon-profits wanting to learn how to use Open Source and Drupal to amplify your efforts./li /ulh3GLADCamp needs you!/h3 pWe can't do it without your help. We need volunteers to help with the following activities:/p ulliJoin the session selection committee! We need a team that accurately reflects our community and expected attendees; /liliHelp with info/registration desk (2 hour shifts); answer questions, sign attendees in; /liliBe a timekeeper at sessions in order to keep our presentations on schedule; /liliJoin our video team and help record sessions and assist presenters with screen recording software; /liliDesign and print signs, posters and badges for GLADCamp; we can provide logo and brand guidelines; /liliWrangling volunteers for day-of tasks; /liliOrganize evening reception, including help finding a location near the Pasadena Convention Center; /liliPrint designers: design and print common area signs, posters, badges; /liliGLADCamp set-up and breakdown! /li/ul/div/div/divdiv class=field field-name-field-tags field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/tags/planet-drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Planet Drupal/a/div/div/div
Categories: Drupal Feeds

DrupalCon News: The Druplicon Tours India

Mon, 11/23/2015 - 2:26pm
div class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenpWe couldn't be more excited to bring DrupalCon to India: it's a unique and colorful nation with many amazing cultures. Though the Con itself will be held in Mumbai, we strongly recommend that anyone traveling to India for DrupalCon take the time to tour some of the many fascinating regions of India./p pHow much does India have to offer? Our friends at Niswey illustrated the Druplicon on a tour of the country, experiencing four unique cultures that India has to offer. Here's the comic, and you can see more information on each frame below./p/div/div/div
Categories: Drupal Feeds

Web Wash: Build a Blog in Drupal 8: Create and Manage Menus

Mon, 11/23/2015 - 2:22pm
div class=field field-name-field-ww-summary field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item evenpA website's navigation plays an important part in how easy a site is to use. It's essential that you spend time fleshing out the overall IA (a href=https://en.wikipedia.org/wiki/Information_architectureInformation architecture/a) or you'll end up with a site that's hard to use and difficult to navigate through./p pPrevious versions of Drupal have always offered a simple interface for managing menus, and Drupal 8 is no exception./p pIn this tutorial, we'll continue building our site by adding in some menus. We'll create a custom menu which'll be used to display links to popular categories, then create an About us page and add a menu link to the footer./p /div/div/div
Categories: Drupal Feeds

Axelerant Blog: How To Set Up Drupal RESTful Caching

Mon, 11/23/2015 - 1:00pm
br /br /pThe Drupal RESTful module has a multitude of caching options and sorting through them on your own for the first time can be slow. This article will help you get started with Drupal RESTful caching./p pstrongNOTE:/strong RESTful 2.x module was recently released. This article focuses on the 1.x RESTful module version and the techniques mentioned below may not work if you are using any other release./p pYour caching options can be controlled at various levels in code. Knowing which layer your application needs is just as important as knowing how to execute, but we’ll start off with emhow/em, we#8217;ll move on to emwhy/em later./p !--HubSpot Call-to-Action Code -- span class=hs-cta-wrapper id=hs-cta-wrapper-5ad743d7-d16e-4b64-bc0a-078bc790dea1 span class=hs-cta-node hs-cta-5ad743d7-d16e-4b64-bc0a-078bc790dea1 id=hs-cta-5ad743d7-d16e-4b64-bc0a-078bc790dea1 !--[if lte IE 8]div id=hs-cta-ie-element/div![endif]-- a href=http://cta-redirect.hubspot.com/cta/redirect/557351/5ad743d7-d16e-4b64-bc0a-078bc790dea1 img class=hs-cta-img id=hs-cta-img-5ad743d7-d16e-4b64-bc0a-078bc790dea1 style=border-width:0px; src=https://no-cache.hubspot.com/cta/default/557351/5ad743d7-d16e-4b64-bc0a-078bc790dea1.png alt=Need to Grow Your Team? Learn How//a /span script charset=utf-8 src=https://js.hscta.net/cta/current.js/script script type=text/javascript hbspt.cta.load(557351, '5ad743d7-d16e-4b64-bc0a-078bc790dea1'); /script /span !-- end HubSpot Call-to-Action Code -- h2Start with Drupal RESTful Caching/h2 pTo start caching your endpoint, the initial configuration is setting coderender/code to codeTRUE/code in the plugin file under coderender_cache/code key./p pRESTful skips caching your endpoint if this setting is codeFALSE/code, which is the default value. In addition to this, Drupal RESTful also ships with support for the codeentitycache/code module for entity based endpoints./p pHere#8217;s how a typical flow looks like for an endpoint:/p pre class=brush: php; title: ; notranslate function viewEntity($id) { $cached_data = $this-gt;getRenderedCache($context); if(!empty($cached_data-gt;data)) { return $cached_data-gt;data; } // perform expensive stuff and construct payload $values = construct_payload(); $this-gt;setRenderedCache($values, $context); return $values; } /pre pcode$context/code is the entity context, like the bundle name, entity ID and any other metadata you might find to be relevant to constructing your cache key. In most cases, just the bundle name, entity type and ID would suffice. RESTful fills in other contextual data like endpoint name, GET parameters, etc. RESTful builds your cache keys in a crafty way so that it is easy to do CRUD operations in bulk. For instance, clearing all caches for the #8220;articles#8221; endpoint would be something like codeclear(articles::*)/code./p pWithin the a href=https://drupal.org/project/restfulRESTful project/a, a href=https://github.com/RESTful-Drupal/restful/blob/7.x-1.x/plugins/restful/RestfulBase.phpRestfulBase.php/a houses all the caching primitives, like a href=https://github.com/RESTful-Drupal/restful/blob/7.x-1.x/plugins/restful/RestfulBase.php#L1276getRenderedCache/a, a href=https://github.com/RESTful-Drupal/restful/blob/7.x-1.x/plugins/restful/RestfulBase.php#L1300setRenderedCache/a, a href=https://github.com/RESTful-Drupal/restful/blob/7.x-1.x/plugins/restful/RestfulBase.php#L1318clearRenderedCache/a and a href=https://github.com/RESTful-Drupal/restful/blob/7.x-1.x/plugins/restful/RestfulBase.php#L1349generateCacheId/a. The last function, codegenerateCacheId/code, constructs the cache key based on the code$context/code supplied to that endpoint./p h2a name=h.iljok3ng84bt/aPreventing Cache-Busting/h2 pIt is also worth noting that Drupal RESTful caching allows you to override the key generation logic on a per-endpoint basis. This is especially useful when you want to build a custom cache key./p pa href=https://axelerant.com/axelerant-launches-legacy-headless-drupal/While working on Legacy.com/a, we had to build a cache key which is agnostic of specific GET parameters. By default, the codegenerateCacheId/code builds a different key for the following endpoints:/p ul liarticles/23?foo=123456/li liarticles/23?foo=567898/li liarticles/23?foo=986543/li /ul pThough a different key for each of these calls makes sense in most cases, it is redundant in some cases. E.g. we return the same payload for all the above 3. To change this behavior, we ended up overriding codegenerateCacheId/code./p pThe codesetRenderedCache/code, codegetRenderedCache/code, and codeclearRenderedCache/code operate upon the default cache controller, which can be specified in the plugin using the codeclass/code key inside coderender_cache/code. This value defaults to codeDrupalDatabaseCache/code./p pThis default value can also be explicitly set to your favorite caching backend. In our case, we use the codememcache/code module and set this value to codeMemCacheDrupal/code. Again, Drupal RESTful allows you to configure caching backends on a per-endpoint basis./p h2a name=h.cpu7g2hqq6b2/aManaging Caching Bins/h2 pCache backends have this concept of bins, which is an abstraction for similar data which can be grouped together. Examples from the Drupal core are codecache_filter/code and codecache_variable/code./p pThere is a codebin/code setting for every endpoint in the plugin file, which is codecache_restful/code unless we explicitly specify otherwise. It is advisable to store high traffic endpoints in exclusive bins./p pThere is an codeexpire/code setting for each endpoint, which dictates the cache expiration for that endpoint. This defaults to codeCACHE_PERMANENT/code, which means that the entry will never be wiped off until it is explicitly selected for clearing./p pThe alternative is codeCACHE_TEMPORARY/code which indicates that it will removed in the next round of cache clearing./p pThese are the very same constants used in Drupal cache interface’s codecache_*/code calls. There is a middle ground too, which isn#8217;t documented. The codeexpire/code value can be set in seconds. This is a deviation from Drupal’s convention of mentioning it as a timestamp./p h2a name=h.y26bok381vcz/aVarying Caching by Role or User/h2 pSome endpoints need to be cached for each role, and some for each user. This granularity can be controlled by the codegranularity/code setting, which takes either codeDRUPAL_CACHE_PER_USER/code or codeDRUPAL_CACHE_PER_ROLE/code. This depends to some extent on your authentication mechanism too./p pWe wrote our own authentication mechanism and had a user created exclusively for the API and serving the endpoints. We gave this user an exclusive role and configured per-role caching for all the endpoints./p pHere#8217;s how the plugin configuration looks for one of our endpoints:/p pre class=brush: php; title: ; notranslate $plugin = array( 'label' =gt; t(Recommended Videos'), 'resource' =gt; recommended_videos', 'name' =gt; recommended_videos__1_1', 'entity_type' =gt; 'node', 'bundle' =gt; video', 'description' =gt; t('Get all recommended videos for a given article.'), 'class' =gt; RecommendedVideosResource__1_1', 'authentication_types' =gt; array( 'my_custom_token', ), 'minor_version' =gt; 1, 'render_cache' =gt; array( 'render' =gt; TRUE, 'expire' =gt; CACHE_TEMPORARY, 'granularity' =gt; DRUPAL_CACHE_PER_ROLE, ), // custom settings 'video_sources' =gt; array(youtube', 'vimeo'), ); /pre h2a name=h.8nzgu5vmsnna/aThe anatomy of a Cache key/h2 pA cache key using the default key generation logic looks like this:/p pre class=brush: plain; title: ; notranslatev1.0::recommended_videos::uu1::paet:node::ei:105486::fo:123::ba:abcd/pre pThe corresponding endpoint URL looks like this:/p pre class=brush: plain; title: ; notranslate/api/v1.0/recommended_videos/105486?foo=123amp;amp;bar=abcd/pre pThe first part is the API version, followed by the resource name, which is #8220;recommended_videos#8221;. The next part is either a #8220;uu#8221; or #8220;ur#8221; depending on whether it is user level or role level granularity. Next is the entity type (e.g. node) with a prefix #8220;pa#8221;. This is followed by the entity ID part, which is #8220;ei:105486#8221; in this case./p pThe last part is the truncated key-value list of GET params foo and bar. Each logical section is separated by a #8220;::#8221; so that it is easy to do a selective purge, as in wiping out all endpoints for v1.0 of the API would be a call to codeclear(v1.0::*)/code./p pNote that a GET for a collection of resources like latest comments results in a codeviewEntity/code for each item in the collection and as many cache entries. If you want a single cache entry for the whole collection, you have to custom build your payload and call codesetRenderedCache/code as shown in the initial endpoint workflow code snippet./p h2a name=h.ex49anhpjw70/aOther Considerations/h2 h3a name=h.26wdejw1qj4l/aBe Diligent, Validate Cache Strategies Early/h3 pRESTful is designed as being very modular from the ground up and has a provision for controlling caching settings for every endpoint. Such a high level of control is both good and bad. Digging through an issue for hours because some settings for an endpoint are misconfigured isn’t fun for anyone. Unless the settings are clear and explicit, it makes issues hard to debug and sort out./p pemBe diligent and validate your caching strategy from the beginning./em/p h3a name=h.egivwnh86y13/aMemcache Stampeding/h3 pAnother thing to look out for is memcache stampeding. Memcache stampeding occurs when a missing key results in simultaneous fetches from the database server, resulting in a high load. a href=https://www.drupal.org/project/memcacheMemcache/a is designed to prevent too many requests from piling up./p pa href=https://axelerant.com/axelerant-launches-legacy-headless-drupal/With our work with Legacy.com/a, we could mitigate the need for passing these requests to Memcache by properly managing our Varnish layer.  We will detail on how we fixed the stampeding issue and constructed a Drupal RESTful Caching strategy in a later post. a href=#mc4wp_widget-2Stay tuned!/a/p div class=custom-cta div class=container tab-container span Need help with Drupal RESTful Caching on your team? /span a href=https://axelerant.com/services/drupal-talent-augmentation/ data-color-override=false class=nectar-button regular-button accent-color style=visibility: visible;Learn More/a /div /div h2a name=h.der6jfzgi8o2/aDrupal RESTful Caching Resources/h2 ul lia href=https://www.youtube.com/playlist?list=PLZOQ_ZMpYrZv8_c7jd_CkO_93-DnyVFY5 A video tutorial series/a on RESTful by one of its authors./li lia href=https://github.com/Gizra/todo_restfulThe proverbial TODOMVC implemented/a with Drupal RESTful backend and Angular in the frontend./li lia href=https://www.drupal.org/project/restful_panelsProvides a RESTful endpoint to the panels layout and configuration/a. One of the modules contributed back to community from the Legacy project./li /ul pThe post a rel=nofollow href=https://axelerant.com/how-to-set-up-drupal-restful-caching/How To Set Up Drupal RESTful Caching/a first appeared on a rel=nofollow href=https://axelerant.comAxelerant/a./p
Categories: Drupal Feeds

Acquia Developer Center Blog: Integrating Drupal with a Proprietary Analytics Platform: How Parse.ly Did it.

Mon, 11/23/2015 - 11:07am
div class=field field-name-field-author field-type-entityreference field-label-hiddendiv class=field-itemsdiv class=field-item evenStefan Deeran/div/div/divdiv class=field field-name-field-blog-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg typeof=foaf:Image src=https://dev.acquia.com/sites/default/files/styles/blog__190_x110_/public/blog/parsely_logo_big.png?itok=-XCE5jrc width=140 height=85 alt= //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 great things about Drupal is its flexible system of nodes and taxonomies. This allows for bespoke categorization of many types of content./p pAt a href=http://parse.ly/Parse.ly/a, we wanted to take advantage of that. Parse.ly, which has an alliance with Acquia to bring joint tech solutions to the worlds biggest media companies, works with hundreds of digital publishers to provide audience insights through an intuitive analytics platform. /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
Categories: Drupal Feeds

Cryptic.Zone: Where is hook_page_alter in Drupal 8?

Mon, 11/23/2015 - 9:11am
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpIn Drupal 7, hook_page_alter was a convenient way to go when we needed to modify page elements that were added by other modules. Drupal 8 does away with this hook - hopefully for the better. To fill the void created by hook_page_alter’s dismissal, the following hooks have been introduced./p /div/div/div
Categories: Drupal Feeds

Drupal Easy: Drupal Career Online Graduates Five With Updated Curriculum

Mon, 11/23/2015 - 7:31am
pimg src=http://drupaleasy.com/sites/drupaleasy.com/files/class_pilgrims.jpg alt=DCO Fall 2015 students //p !-- rdf:RDF xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns# xmlns:dc=http://purl.org/dc/elements/1.1/ xmlns:trackback=http://madskills.com/public/xml/rss/module/trackback/ rdf:Description rdf:about=http://drupaleasy.com/blogs/ultimike/2015/11/drupal-career-online-graduates-five-updated-curriculum dc:identifier=http://drupaleasy.com/blogs/ultimike/2015/11/drupal-career-online-graduates-five-updated-curriculum dc:title=Drupal Career Online Graduates Five With Updated Curriculum trackback:ping=http://drupaleasy.com/trackback/737 / /rdf:RDF -- pa href=http://drupaleasy.com/blogs/ultimike/2015/11/drupal-career-online-graduates-five-updated-curriculum target=_blankread more/a/pdiv class=feedflare a href=http://feeds.feedburner.com/~ff/DrupalEasy?a=pDh2gmCcetQ:TEvBsDWLw0U:yIl2AUoC8zAimg src=http://feeds.feedburner.com/~ff/DrupalEasy?d=yIl2AUoC8zA border=0/img/a a href=http://feeds.feedburner.com/~ff/DrupalEasy?a=pDh2gmCcetQ:TEvBsDWLw0U:qj6IDK7rITsimg src=http://feeds.feedburner.com/~ff/DrupalEasy?d=qj6IDK7rITs border=0/img/a /divimg src=http://feeds.feedburner.com/~r/DrupalEasy/~4/pDh2gmCcetQ height=1 width=1 alt=/
Categories: Drupal Feeds

ERPAL: Automation is the key to support SLAs

Mon, 11/23/2015 - 7:15am
div class=field field-name-field-blog-intro-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg src=http://www.erpal.info/de/sites/default/files/styles/blog_detail_image_700x180_/public/updates.png?itok=4Y2KDa26 width=700 height=180 alt= //div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpIf you want to grow recurring revenue by providing SLAs for your Drupal projects, automation is THE key to offering a reliable response time. Of course, you could build a dedicated 24/7 support team - but the cost will be exorbitant!/p pThere are many tools out there for digitizing your support and automating some of the processes. A well-defined support concept is the key to success. In this blog you'll get an introduction in four foundations of automated support systems. a href=http://drop-guard.net/automation-is-key-to-support-sla.htmlRead more/a/p /div/div/div
Categories: Drupal Feeds

Red Crackle: Express checkout to increase conversion

Mon, 11/23/2015 - 5:40am
In this post, you will learn how to enable express checkout to increase conversions on your site. It's a fairly simple procedure that allows the shopper to proceed directly to the checkout without visiting the Cart. This saves time and ensures that you are able to win the shopper's business quicker.
Categories: Drupal Feeds

ThinkShout: Up and Theming with Drupal 8

Mon, 11/23/2015 - 5:00am
pDrupal 8 is a href=https://www.drupal.org/8finally here/a! We’ve been digging into the code and learning how to install D8 in a way that allow us to sync sites and use it for production work. A lot of things have changed, which we covered in our previous article, a href=http://thinkshout.com/blog/2015/11/up-and-running-with-drupal-8/Up and Running with Drupal 8/a. The next step is to see what’s changed in the theming layer, installing a basic theme, and working with the new Twig templating system. There’s a good deal to cover, so let’s a href=http://twig.sensiolabs.org/jump in/a!/p h2Creating a Theme/h2 pThe steps for setting up a basic site theme are fairly simple: create a codecustom/THEMENAME/code directory in codeweb/themes/code, and then add a codeTHEMENAME.info.yml/code file with the following:/p div class=highlightprecode class=language-yaml data-lang=yamlspan class=l-Scalar-Plainname/spanspan class=p-Indicator:/span span class=l-Scalar-PlainTHEMENAME Theme/span span class=l-Scalar-Plaindescription/spanspan class=p-Indicator:/span span class=s#39;D8/spanspan class=nv /spanspan class=stheme/spanspan class=nv /spanspan class=sfor/spanspan class=nv /spanspan class=sTHEMENAME/spanspan class=nv /spanspan class=ssite.#39;/span span class=l-Scalar-Plainpackage/spanspan class=p-Indicator:/span span class=l-Scalar-PlainCustom/span span class=c1# base theme: classy/span span class=l-Scalar-Plaintype/spanspan class=p-Indicator:/span span class=l-Scalar-Plaintheme/span span class=l-Scalar-Plainversion/spanspan class=p-Indicator:/span span class=l-Scalar-Plain1.0/span span class=l-Scalar-Plaincore/spanspan class=p-Indicator:/span span class=l-Scalar-Plain8.x/span span class=l-Scalar-Plainregions/spanspan class=p-Indicator:/span span class=l-Scalar-Plainheader/spanspan class=p-Indicator:/span span class=l-Scalar-PlainHeader/span span class=l-Scalar-Plaincontent/spanspan class=p-Indicator:/span span class=l-Scalar-PlainContent/span span class=c1# required!/span span class=l-Scalar-Plainsidebar_first/spanspan class=p-Indicator:/span span class=s#39;Sidebar/spanspan class=nv /spanspan class=sfirst#39;/span span class=l-Scalar-Plainfooter/spanspan class=p-Indicator:/span span class=l-Scalar-PlainFooter/span /code/pre/div pThen you can enable your theme (codeadminister » themes/code) in the interface. Note that uncommenting codebase theme: classy/code will cause you to set Classy as a parent theme. We feel that Classy is great if you want a lot of useful examples, but really clutters up the markup, so use at your own discretion. a href=https://www.drupal.org/node/2575421After rc1/a, the default theme will be ‘stable,’ and you may want to pull all of the core templates into your theme to ensure you’re working from the latest updated template code./p pAlso, the theme name must not contain hyphens. So code/theme-name//code is invalid (it won’t even show up!), but code/theme_name//code is fine. /p pNow we’ll want to start customizing our theme. Let us say we have a content type called ‘blog’ (machine name: codeblog/code), with a field type called ‘Publish Date’ (machine name: codefield_publish_date/code). /p pDespite setting the label of codefield_publish_date/code to ‘inline,’ it’s wrapping to a new line due to the fact that it’s a simple, unstyled codelt;divgt;/code. /p pWorse, it has no classes to specifically style it. Let’s set ourselves some goals:/p ol liAdd the inline styling class(s)./li liChange the markup for this field, so that we have a class for the label./li liAdd CSS to style the label, but ONLY for the ‘Blog’ content type./li /ol pThe documentation for this seemingly simple task is obfuscated and evolving right now, but we were able to get it working correctly using the following steps:/p pstrongStep 1/strong: Turn on a href=https://www.drupal.org/node/1906392twig debug mode/a. We also found it helpful at this point to make a copy of codeweb/sites/example.settings.local.php/code in codeweb/sites/default//code and uncomment the following in codesettings.php/code:/p div class=highlightprecode class=language-php data-lang=phpspan class=xif (file_exists(__DIR__ . #39;/settings.local.php#39;)) {/span span class=x include __DIR__ . #39;/settings.local.php#39;;/span span class=x}/span /code/pre/div pThis will allow you to a href=https://www.drupal.org/node/2598914disable caching/a during development, which is no longer a simple checkbox in the performance section. Note that disabling caching can be tricky; the codedrush cr/code (cache rebuild) command is the most reliable way to ensure the cache is really cleared. You’ll also have to rebuild the cache at least once after turning caching off, so the new cache settings are applied./p pstrongStep 2/strong: Make a custom field template. /p pIn this case, the suggested debug fields are: /p div class=highlightprecode class=language-html data-lang=htmlspan class=clt;!-- FILE NAME SUGGESTIONS:/span span class=c * field--node--field-publish-date--blog.html.twig/span span class=c * field--node--field-publish-date.html.twig/span span class=c * field--node--blog.html.twig/span span class=c * field--field-publish-date.html.twig/span span class=c * field--datetime.html.twig/span span class=c x field.html.twig/span span class=c--gt;/span span class=clt;!-- BEGIN OUTPUT from #39;core/modules/system/templates/field.html.twig#39; --gt;/span /code/pre/div pThe highlighted line above shows the template currently being used, suggestions for increased specificity, and the file location (codecore/modules/system/templates//code)./p pWe want to update codefield_publish_date/code globally, so we’ll create a template called codefield--field-publish-date.html.twig/code/p pTo do this, we copy codefield.html.twig/code from the core theme (see the ‘BEGIN OUTPUT’ line above for the path), and rename it in our theme’s folder to codefield--field-publish-date.html.twig/code. Now when we reload, we see the following (if your cache is disabled, of course, otherwise drush cr will clear the cache): /p div class=highlightprecode class=language-html data-lang=htmlspan class=clt;!-- FILE NAME SUGGESTIONS:/span span class=c * field--node--field-publish-date--blog.html.twig/span span class=c * field--node--field-publish-date.html.twig/span span class=c * field--node--blog.html.twig/span span class=c x field--field-publish-date.html.twig/span span class=c * field--datetime.html.twig/span span class=c * field.html.twig/span span class=c--gt;/span span class=clt;!-- BEGIN OUTPUT from #39;themes/custom/THEMENAME/templates/field--field-publish-date.html.twig#39; --gt;/span /code/pre/div pNow we can begin to update the markup. The relevant code is:/p p codehtml {% if label_hidden %} ... (we don’t care about the label_hidden stuff) {% else %} lt;div{{ attributes }}gt; lt;div{{ title_attributes }}gt;{{ label }}lt;/divgt; ... {% endif %} /code /p pTo add the inline styling class, we add the following to the top of the template (below the comments):/p p codehtml {% set classes = [ #39;field--label-#39; ~ label_display, ] %} /code /p pAnd then update the label’s parent div attributes:/p pbefore: codelt;divgt;/code after: codelt;divgt;/code/p pNow the correct class is in place, but we see no change yet - because the codelt;divgt;/code isn’t populating any classes. To fix that, we add the following, again at the top of the template:/p p codehtml {% set title_classes = [ #39;field__label#39;, #39;field__publish-date-label#39;, label_display == #39;visually_hidden#39; ? #39;visually-hidden#39;, ] %} /code /p pAnd update the div:/p pbefore: codelt;divgt;lt;/divgt;/code after: codelt;div gt;lt;/divgt;/code/p pRebuild the cache (drush cr) and… success! well sort of - we still have to add CSS. Note that we also added a custom class of #39;field__publish-date-label#39; in case we want to style it directly. /p pstrongStep 3/strong: Add a codeTHEMENAME.libraries.yml/code file to hold attachment library definitions. /p pThis is pretty simple; it’s a file with the following:/p div class=highlightprecode class=language-yaml data-lang=yamlspan class=l-Scalar-Plainblog/spanspan class=p-Indicator:/span span class=l-Scalar-Plainversion/spanspan class=p-Indicator:/span span class=l-Scalar-Plain1.x/span span class=l-Scalar-Plaincss/spanspan class=p-Indicator:/span span class=l-Scalar-Plaintheme/spanspan class=p-Indicator:/span span class=l-Scalar-Plaincss/blog.css/spanspan class=p-Indicator:/span span class=p-Indicator{}/span span class=l-Scalar-Plainjs/spanspan class=p-Indicator:/span span class=l-Scalar-Plainjs/blog.js/spanspan class=p-Indicator:/span span class=p-Indicator{}/span span class=l-Scalar-Plaindependencies/spanspan class=p-Indicator:/span span class=p-Indicator-/span span class=l-Scalar-Plaincore/jquery/span /code/pre/div pWe then add the directories (code/css/code and code/js/code) and files (codeblog.css/js/code). We’ve also added a jQuery dependency, just so you can see how that’s done. If we had something simple that could be done with a href=http://vanilla-js.com/Vanilla JS/a we could leave it off. Note that this won’t actually do anything until we follow step 4 below./p pstrongStep 4/strong: Add a codeTHEMENAME.theme/code file to hold theme hooks (this is actually a PHP file, so start it with codelt;?php/code). /p pThis is the code that appends the library based on the content type. The trickiest part of this is figuring out the correct format of codehook_preprocess_HOOK()/code:/p div class=highlightprecode class=language-php data-lang=phpspan class=xfunction THEMENAME_preprocess_node__blog(amp;$variables) {/span span class=x $variables[#39;#attached#39;][#39;library#39;][] = #39;THEMENAME/blog#39;;/span span class=x]/span /code/pre/div pThe theme hook format for content types is to use codenode__MACHINENAME/code format - two underscores. /p pAfter that, rebuild your cache (codedrush cr/code), and your CSS and JS files should be loading on every instance of that content type, regardless of the page. (full or teaser)/p pAnd that’s it! Note that we could have changed the markup in any number of ways to suit our designs, or even make the template specific to the content type as well as the field./p h3Disclaimer/h3 pThe post was written at the end of 2015 while Drupal 8 was still in a Release Candidate stage. While some effort will be made to keep the post up-to-date, if it’s after 2016, you should probably add the current year to your Google search, or better yet, check the docs on a href=http://drupal.orgDrupal.org/a. /p
Categories: Drupal Feeds