Drupal Feeds

AWS Cloudsearch

Latest Drupal Modules - Fri, 2017-12-15 12:03

AWS Cloudsearch works like Solr and other search Engine.

Categories: Straight From Drupal

Agiledrop.com Blog: AGILEDROP: What makes Drupal SEO friendly

Planet Drupal - Fri, 2017-12-15 11:51
To achieve the highest ranking in the search engine, the website has to be SEO friendly. Google SERP (Search Engine Results Page) has one of the most important roles growing businesses with the help of a website. Drupal is a very powerful system that ensures search website optimization with its modules. It gives us the ability to control all the elements of the web pages with the help of already installed automation tools for SEO, which places it at the very top of SEO friendly CMSs. Let's look at some examples.   SEO-friendly URLs Because search engines search for keywords in URLs, they… READ MORE

Agiledrop.com Blog: AGILEDROP: What makes Drupal SEO friendly

Feeds from Drupal.org - Fri, 2017-12-15 11:51
To achieve the highest ranking in the search engine, the website has to be SEO friendly. Google SERP (Search Engine Results Page) has one of the most important roles growing businesses with the help of a website. Drupal is a very powerful system that ensures search website optimization with its modules. It gives us the ability to control all the elements of the web pages with the help of already installed automation tools for SEO, which places it at the very top of SEO friendly CMSs. Let's look at some examples.   SEO-friendly URLs Because search engines search for keywords in URLs, they… READ MORE
Categories: Straight From Drupal

Amazee Labs: Estimations - Amazee Agile Agency Survey Results - Part 7

Planet Drupal - Fri, 2017-12-15 10:46
Estimations - Amazee Agile Agency Survey Results - Part 7

This is part 7 of our series processing the results of the Amazee Agile Agency Survey. Previously I wrote about defining work, this time let’s focus on estimations. How do you estimate and who does estimations in your teams?

Josef Dabernig Fri, 12/15/2017 - 11:46 Estimations

First, we asked about how teams estimate. 43.3% of the contestants answered “Estimation is done in days/hours”, 20% say “Estimation is done in story points based on complexity” and 16.7% mentioned, “Estimations in done in story points based on effort”. The remaining answers of 3% each varied in different degrees of combined estimations, i.e. teams would estimate on a higher level using story points and compare then against hour based task estimations. Also one of the 30 contestants answered that they don’t do estimates at all. For some background information, you can refer to this article on story points.

Agile How do you estimate

At Amazee we do two different kinds of estimations. We estimate in days for the offers that we create and put a general price tag below the contract. This is intended to fix a budget but not to guarantee an exact feature set to be delivered. When we go to the implementation phase, teams estimate Jira tickets using story points. The story points are based both on complexity and effort, based on our velocity we can related story points to a price tag and compare against the initial offer and how much budget is left.

Agile Who does the Estimations

We also asked about who is involved in estimation. 50% say that “the entire team does all estimations”, 36.7% mentioned that “a tech lead does high-level estimates, the team estimates on a lower level”. 6.7% say that “a tech lead does all estimates”.

For us, at Amazee we tend towards having a tech lead doing high-level estimates and having the team estimate on individual stories and tasks which get prepared for a sprint to work. The tech lead role can be fulfilled by any developer of a Scrum team and may change however the team and the team lead decide it would work best. More complex offers get challenged by multiple developers, more straightforward suggestions will be estimated by only one developer together with the PO. All proposals get reviewed by management. When the team does estimations, we do them along with the entire Scrum team. In some instances, we will limit the number of people in estimation meetings to find a balance between shared knowledge and how much time can be spent discussing as a group of people.

How do you estimate? Please leave us a comment below. If you are interested in Agile Scrum training, don’t hesitate to contact us.

Stay tuned for the next post where we’ll look at client interactions.

Amazee Labs: Estimations - Amazee Agile Agency Survey Results - Part 7

Feeds from Drupal.org - Fri, 2017-12-15 10:46
Estimations - Amazee Agile Agency Survey Results - Part 7

This is part 7 of our series processing the results of the Amazee Agile Agency Survey. Previously I wrote about defining work, this time let’s focus on estimations. How do you estimate and who does estimations in your teams?

Josef Dabernig Fri, 12/15/2017 - 11:46 Estimations

First, we asked about how teams estimate. 43.3% of the contestants answered “Estimation is done in days/hours”, 20% say “Estimation is done in story points based on complexity” and 16.7% mentioned, “Estimations in done in story points based on effort”. The remaining answers of 3% each varied in different degrees of combined estimations, i.e. teams would estimate on a higher level using story points and compare then against hour based task estimations. Also one of the 30 contestants answered that they don’t do estimates at all. For some background information, you can refer to this article on story points.

Agile How do you estimate

At Amazee we do two different kinds of estimations. We estimate in days for the offers that we create and put a general price tag below the contract. This is intended to fix a budget but not to guarantee an exact feature set to be delivered. When we go to the implementation phase, teams estimate Jira tickets using story points. The story points are based both on complexity and effort, based on our velocity we can related story points to a price tag and compare against the initial offer and how much budget is left.

Agile Who does the Estimations

We also asked about who is involved in estimation. 50% say that “the entire team does all estimations”, 36.7% mentioned that “a tech lead does high-level estimates, the team estimates on a lower level”. 6.7% say that “a tech lead does all estimates”.

For us, at Amazee we tend towards having a tech lead doing high-level estimates and having the team estimate on individual stories and tasks which get prepared for a sprint to work. The tech lead role can be fulfilled by any developer of a Scrum team and may change however the team and the team lead decide it would work best. More complex offers get challenged by multiple developers, more straightforward suggestions will be estimated by only one developer together with the PO. All proposals get reviewed by management. When the team does estimations, we do them along with the entire Scrum team. In some instances, we will limit the number of people in estimation meetings to find a balance between shared knowledge and how much time can be spent discussing as a group of people.

How do you estimate? Please leave us a comment below. If you are interested in Agile Scrum training, don’t hesitate to contact us.

Stay tuned for the next post where we’ll look at client interactions.

Categories: Straight From Drupal

CultureFeed My Program

Latest Drupal Modules - Fri, 2017-12-15 09:03

This Drupal module extends the CultureFeed Drupal module suite.

It adds the functionality to create a personal list of events a person would
like to attend.

Note: Items are automatically removed once they are passed via a cron hook.

Categories: Straight From Drupal

Feeds iCal

Latest Drupal Modules - Fri, 2017-12-15 02:02

This module provides a Feeds Parser and Feeds Item to allow for the import of content from iCal sources.

The module relies heavily on the johngrogg/ics-parser package which it includes.

Common extensions for iCalendar files are .ical, .ics, .ifb, and .icalendar

This module does not as of yet deal with RRULE occurrences, though the underlying library does, so it would be a matter of adding that functionality to the Feeds Parser.

Categories: Straight From Drupal

DrupalBASE: The information itself is useless

Planet Drupal - Thu, 2017-12-14 18:58

The information itself is useless.

Quite original start for a web-published text, isn't it? Still the confirmation is true. Solutions don't demand information, solutions demand clearly organized data. No matter what is the domain – in every situation people tend to organize data in a readable well-understandable formats.

Multiple mechanisms of collecting and storing the data are developed, and technologies continue to progress. But the key question of data presentation often remains ignored.

DrupalBASE: The information itself is useless

Feeds from Drupal.org - Thu, 2017-12-14 18:58

The information itself is useless.

Quite original start for a web-published text, isn't it? Still the confirmation is true. Solutions don't demand information, solutions demand clearly organized data. No matter what is the domain – in every situation people tend to organize data in a readable well-understandable formats.

Multiple mechanisms of collecting and storing the data are developed, and technologies continue to progress. But the key question of data presentation often remains ignored.

Categories: Straight From Drupal

WeKnow: How we approached building the new weKnow site

Feeds from Drupal.org - Thu, 2017-12-14 18:39
How we approached building the new weKnow site

It’s been a little over a year since weKnow came to life as a rebranding for Anexus, which allowed me to join the company as a new business partner. My main goal within the company is directing our efforts to explore new fields and technologies (that’s right, we are not just a Drupal shop anymore!)

As a web solution provider, having a website that accurately reflects what we do is a challenging task, because usually our plate is full with client work, and it’s not uncommon to put your own website at the end of the queue. This is why last year we decided to put together a basic landing page while setting aside some time to work on the company image as part of the rebranding.

jmolivas Thu, 12/14/2017 - 18:39
Categories: Straight From Drupal

WeKnow: How we approached building the new weKnow site

Planet Drupal - Thu, 2017-12-14 18:39
How we approached building the new weKnow site

It’s been a little over a year since weKnow came to life as a rebranding for Anexus, which allowed me to join the company as a new business partner. My main goal within the company is directing our efforts to explore new fields and technologies (that’s right, we are not just a Drupal shop anymore!)

As a web solution provider, having a website that accurately reflects what we do is a challenging task, because usually our plate is full with client work, and it’s not uncommon to put your own website at the end of the queue. This is why last year we decided to put together a basic landing page while setting aside some time to work on the company image as part of the rebranding.

jmolivas Thu, 12/14/2017 - 18:39

Banana Dashboard

Latest Drupal Modules - Thu, 2017-12-14 13:55

Expose a simple dashboard for users with links to various sections of the site. A unique feature of this module is that the configuration file is a yaml file. The module has no admin ui and is supposed to be used by developers by declaring hook_banana_dashboard_yaml_file_path_alter and providing the custom configuration file.

Sample configuration file

Categories: Straight From Drupal

Electric Citizen: Twig for Drupal 8 Development: Twig Templating Part 2 of 2

Planet Drupal - Thu, 2017-12-14 13:12

In the recent post Twig for Drupal 8 Development: Twig Templating Part 1, we covered some Drupal Twig templating basics like debugging, custom templates, inheritance, variables, filters, attributes, and macros. This post will cover more advanced topics. You will learn about preprocessing variables, expanding the available templates with theme suggestion, Drupal 8 Views and Twig, and the Twig Tweak module.

Electric Citizen: Twig for Drupal 8 Development: Twig Templating Part 2 of 2

Feeds from Drupal.org - Thu, 2017-12-14 13:12

In the recent post Twig for Drupal 8 Development: Twig Templating Part 1, we covered some Drupal Twig templating basics like debugging, custom templates, inheritance, variables, filters, attributes, and macros. This post will cover more advanced topics. You will learn about preprocessing variables, expanding the available templates with theme suggestion, Drupal 8 Views and Twig, and the Twig Tweak module.

Categories: Straight From Drupal

Tim Millwood: Drupal Service ID Collectors

Planet Drupal - Thu, 2017-12-14 09:29
Drupal Service ID Collectors

Since Drupal 8 we've had services. This also brought the concept of a service collector or tagged services. This allows services to be tagged with a specific tag, then a service collector can collect all services with the a given tag and use whichever service "applies".

As you could imagine loaded all of these tagged services when loading the service collector service can be a performance nightmare, which is why Drupal 8.4.0 brought us service ID collector functionality.

Tagging a service with the service_id_collector tag will pass all services with a given tag as the last parameter in the constructor. This will be an array of service IDs ordered by the priority. You will then need to use the ClassResolver service to lazily instantiate the collected service IDs.

my_module.services.yml
my_module.negotiator:
  class: \Drupal\my_module\MyModuleNegotiator
  arguments: {'@class.resolver'}
  tags:
    - { name: service_id_collector, tag: my_module_negotiator }
my_module.negotiator.foo:
  class:\Drupal\my_module\FooNegotiator
  arguments: {'@entity_type.manager'}
  tags:
    - { name: my_module_negotiator, priority: 100 }
my_module.negotiator.bar:
  class:\Drupal\my_module\BarNegotiator
  arguments: {'@entity_type.manager'}
  tags:
    - { name: my_module_negotiator, priority: -100 }
my_module.negotiator.baz:
  class:\Drupal\my_module\BazNegotiator
  arguments: {'@entity_type.manager'}
  tags:
    - { name: my_module_negotiator, priority: 0 }

MyModuleNegotiator.php
/**
 * The negotiator for my module.
 */
class MyModuleNegotiator {

  /**
   * The class resolver service.
   *
   * @var \Drupal\Core\DependencyInjection\ClassResolver
   */
  protected $classResolver;

  /**
   * The negotiator service IDs.
   *
   * @var array
   */
  protected $negotiatorServiceIds;
 

  /**
   * Constructs the negotiator.
   *
   * @param \Drupal\Core\DependencyInjection\ClassResolver $class_resolver
   *   The class resolver service.
   * @param array $negotiator_service_ids
   *   The negotiator service IDs.
   */
  public function __construct(ClassResolverInterface $class_resolver, array $negotiator_service_ids) {
    $this->classResolver = $class_resolver;
    $this->negotiatorServiceIds = $negotiator_service_ids;
  }
 

  /**
   * Run the negotiators.
   */
  public function runNegotiators() {
    foreach ($this->negotiatorServiceIds as $negotiator_service_id) {
      $negotiator = $this->classResolver->getInstanceFromDefinition($negotiator_service_id);
      if ($negotiator->applies()) {
        $negotiator->run();
      }
    }
  }
}

timmillwood Thu, 14/12/2017 - 09:29 Tags drupal planet drupal-planet drupal8 Add new comment

Tim Millwood: Drupal Service ID Collectors

Feeds from Drupal.org - Thu, 2017-12-14 09:29
Drupal Service ID Collectors

Since Drupal 8 we've had services. This also brought the concept of a service collector or tagged services. This allows services to be tagged with a specific tag, then a service collector can collect all services with the a given tag and use whichever service "applies".

As you could imagine loaded all of these tagged services when loading the service collector service can be a performance nightmare, which is why Drupal 8.4.0 brought us service ID collector functionality.

Tagging a service with the service_id_collector tag will pass all services with a given tag as the last parameter in the constructor. This will be an array of service IDs ordered by the priority. You will then need to use the ClassResolver service to lazily instantiate the collected service IDs.

my_module.services.yml
my_module.negotiator:
  class: \Drupal\my_module\MyModuleNegotiator
  arguments: {'@class.resolver'}
  tags:
    - { name: service_id_collector, tag: my_module_negotiator }
my_module.negotiator.foo:
  class:\Drupal\my_module\FooNegotiator
  arguments: {'@entity_type.manager'}
  tags:
    - { name: my_module_negotiator, priority: 100 }
my_module.negotiator.bar:
  class:\Drupal\my_module\BarNegotiator
  arguments: {'@entity_type.manager'}
  tags:
    - { name: my_module_negotiator, priority: -100 }
my_module.negotiator.baz:
  class:\Drupal\my_module\BazNegotiator
  arguments: {'@entity_type.manager'}
  tags:
    - { name: my_module_negotiator, priority: 0 }

MyModuleNegotiator.php
/**
 * The negotiator for my module.
 */
class MyModuleNegotiator {

  /**
   * The class resolver service.
   *
   * @var \Drupal\Core\DependencyInjection\ClassResolver
   */
  protected $classResolver;

  /**
   * The negotiator service IDs.
   *
   * @var array
   */
  protected $negotiatorServiceIds;
 

  /**
   * Constructs the negotiator.
   *
   * @param \Drupal\Core\DependencyInjection\ClassResolver $class_resolver
   *   The class resolver service.
   * @param array $negotiator_service_ids
   *   The negotiator service IDs.
   */
  public function __construct(ClassResolverInterface $class_resolver, array $negotiator_service_ids) {
    $this->classResolver = $class_resolver;
    $this->negotiatorServiceIds = $negotiator_service_ids;
  }
 

  /**
   * Run the negotiators.
   */
  public function runNegotiators() {
    foreach ($this->negotiatorServiceIds as $negotiator_service_id) {
      $negotiator = $this->classResolver->getInstanceFromDefinition($negotiator_service_id);
      if ($negotiator->applies()) {
        $negotiator->run();
      }
    }
  }
}

timmillwood Thu, 14/12/2017 - 09:29 Tags drupal planet drupal-planet drupal8 Add new comment
Categories: Straight From Drupal

General Data Protection Regulation Compliance

Latest Drupal Modules - Thu, 2017-12-14 08:47

Basic GDPR Compliance use cases (drupal 8.x only):

  • Form checkboxes
  • Pop-up alert
  • Policy Page
Policy Page

* If the Policy Page does not suit you - create your own, replace the link & clear cache.
* Policy Page based on:

Categories: Straight From Drupal

myDropWizard.com: CiviCRM secrets for Drupalers: Email Campaigns

Planet Drupal - Thu, 2017-12-14 02:14

We're Drupalers who only recently started digging deep into CiviCRM and we're finding some really cool things! This series of videos is meant to share those secrets with other Drupalers, in case they come across a project that could use them. :-)

Most Drupalers at one time have had to deal with either sending e-mail newsletters directly from Drupal, or integrating with a 3rd party tool like Mailchimp or Constant Contact.

CiviCRM has built in e-mail newsletter functionality, and if you add to it the WYSIWYG e-mail builder Mosaico you can build really rich, responsive e-mail campaigns!

Watch the video here:

Video of CiviCRM secrets for Drupalers #1: E-mail Campaigns

Some highlights from the video:

  • A sneak peek at Round Earth: our project that bundles Drupal 8 + CiviCRM
  • Drupal 8 + CiviCRM vs. "only" Drupal
  • A quick walk-through on how to quickly and easily create an email campaign
  • Plus, we mention a couple of current "gotchas" that could save you frustration!

Please leave a comment below!

Pages

Subscribe to My Drupal aggregator