Drupal News

Chapter Three: Site Migration and Refresh: Improving Access to the Research Resources of SIREN at UCSF

Main Drupal Feed - Mon, 05/03/2021 - 19:17

The Siren Network at UCSF’s mission is to “improve health and health equity by advancing high quality research on health care sector strategies to improve social conditions.” This research initiative, supported by Kaiser Permanente and the Robert Wood Johnson Foundation, is a leader in the creation, curation and dissemination of research that explores the intersection between health and social determinants that often play a critical role in the health outcomes of individuals and communities. 

Lullabot: Write Better Code with Typed Entity

Main Drupal Feed - Mon, 05/03/2021 - 13:47

Drupal projects can be challen

Tag1 Consulting: Laravel - from the evolution of monolithic applications to the revolution of fully decoupled systems - Pt. 1

Main Drupal Feed - Mon, 05/03/2021 - 13:10

Websites, like everything else, vary based on the needs of your organization. Website development tactics range from completely monolithic, where your application is single tier with all of your code running on as a single program on one platform, to fully decoupled, where your front and back ends are managed by different systems. In the first part of this three part series, Senior Software Engineer Laslo Horvath joins Managing Director Michael Meyers for an overview of Laravel. Laravel is a PHP framework designed to meet the needs of new web developers with monolithic applications, to experienced developers who may need a fully or progressively decoupled website to meet all of their clients’ needs. They also discuss some of the similarities and differences between Laravel and Symfony (the framework Drupal is built on), the community around Laravel, and how their ecosystem works. ### Related content and links - Laravel - Laracasts - Our Tag1 Team Talk series on the history and future of decoupled software. --- For a transcript of this video, see Transcript: Laravel with Laslo - Part 1. --- Photo by Dan Meyers on Unsplash

Read more lynette@tag1co… Mon, 05/03/2021 - 06:10

#! code: Drupal 9: Get List Of Content Types

Main Drupal Feed - Mon, 05/03/2021 - 13:07

Getting a list of content types out of a Drupal 9 site is useful in a few situations. Mostly, I find that when creating a service of some kind that I will also create an administration form for that service to allow it to be restricted to certain content types. This list can be saved to configuration so that when the service is run it only effects certain content types, based on the saved configuration.

To get a an array containing a list of the content types on a Drupal site you can use the following code.

Read more.

Ramsalt Lab: Save time with the new CSS framework TailwindCSS

Main Drupal Feed - Mon, 05/03/2021 - 12:51

By Hansa Pandit

CSS frameworks are very popular these days. They give us a head start without having to write a lot of CSS. There is this new shiny thing that's gaining a lot of attention these days, TailwindCSS. Recently, I got a chance to try my hands on it and I am going to share a high-level overview about TailwindCSS that may help you to get started with it quickly.

What is TailwindCSS?

TailwindCSS is a utility-first CSS framework, which provides you with low-level utility classes to build your custom websites.

I will try to explain how to get into using TailwindCSS based on my personal experience. If you want to use TailwindCSS on your next project, this will be a quick guide for you, which I wish I had when I started working with TailwindCSS, it could have saved me a lot of internet-digging time.

Why use TailwindCSS and not the good old framework, which you are already familiar with?

Every website is unique and it should have its unique styles.

What I like the most about the TailwindCSS, is that it does not give me multiple CSS properties under one class name , so I can use its classes without having to override the other stuff, which most of the other frameworks fail to do, they give you pre-styled components that force you to override the styles.

TailwindCSS comes with a lot of low-level utility classes that you just have to add into your HTML element, to style your website. By low-level, I mean that TailwindCSS goes to the very basics and provides the classes that will not affect any other CSS property.

For instance, TailwindCSS has a class called “container”, the basic use of this class should only be to control the width of the block on various breakpoints, regardless of any other property. and YES, that's exactly what this class does in the TailwindCSS. So that way you do not have to override anything.

Let's see how the most basic example of HTML and CSS with the TailwindCSS classes will look like.

< form class = "w-full" >; < fieldset class = "p-8 w-full mx-auto" >   </ fieldset > < /form > < button class = "bg-black inline-block p-8 font-semibold text-white uppercase" > < /button >

Below is how the above CSS will be rendered in DOM

.uppercase { text-transform: uppercase ; } .text-white { color: #fff ; } .p-8 { padding: 2rem ; } .font-semibold { font-weight: 600 ; } .inline-block { display: inline block ; } .bg-black { background-color: #000 ; } .w-full { width: 100% ; } .mx-auto { margin-left: auto ; margin-right: auto ; }

The class names that you see in the above examples are the utility classes that come with the TailwindCSS, all you have to do is add the classes inside your HTML element and you are DONE! 

This could look very tempting and appealing at first but then you start to realize there could be some problems with this approach, few of them are:

  • The DOM looks very crowded, this is the first thing that bothered me when I started with the TailwindCSS.
  • This lacks the semantic approach.
  • For every similar element, you have to add the same bunch of classes, which is not something you would really want to do.

Apart from the above, I personally would not like the user to have a look at all the styling in the DOM itself. 

But as I mentioned, that was the most basic example and we do have tricks to fix the above problems.

Inherit the TailwindCSS way!

TailwindCSS provides us with a very cool feature to inherit its own classes using the @apply directive.

@apply is the magic word here, you can create any class name of your own choice, and within that class name, you can inherit the TailwindCSS classes. I will show you, how you can achieve that.

Below is an HTML element with the class names of my own choice.

< button class = "button button - primary" > < /button >

And this is how your CSS will look for the above HTML.

.button { @apply inline-block p-8 font-semibold uppercase ; // These are the classes that come with the TailwindCSS. } .button - primary { @apply bg-black text-white ; }

This is how the above CSS will render

.button { display: inline block ; padding: 2rem ; font-weight: 600 ; text-transform: uppercase ; } .button - primary { background-color: # 000 ; color: #fff ; }

So you see, now all the button elements will have the same CSS properties, without making the DOM look too busy.

Looks better, right?

Likewise, if you want all your section titles to be the same, you can simply inherit the TailwindCSS classes, like below

 

.section-title { @apply text-title font-semibold uppercase font-semibold text-2xl text-brand-black mb-5 leading-tight ; }

 

In the above code examples, I have used a naming convention that makes much more sense and still it inherits all the CSS classes that come with the TailwindCSS. So practically, I did not have to add any new CSS property or override any existing CSS. Also, if you take a closer look, you'll find that TailwindCSS has a class for almost everything.

That's very cool, right?

So now, there is one very obvious question, what if you do not want the values ​​or colors that come with the TailwindCSS. Will you have to override the CSS? Or will you have to write your own CSS?

Answers to these questions take me to the part which happens to be one of my favorites about the TailwindCSS.

 

One file to rule them all - tailwind.config.js

This is the file where you can customize your entire theme, be it the theme colors or the font-family or the breakpoints, or anything that you want. 

Sounds interesting, right?

For instance, what if you do not want the width or the max-width values ​​to be in rem unit (that comes with TailwindCSS), rather you want them to be in percentage.

Any thoughts?

All you have to do is go to your tailwind.config.js file and just customize it. 

How?

Let's take a ride.

// File tailwind.config.js module.exports = { theme: { extend: { colors: { 'brand-black': '# 1b1b1b', 'light-gray': '# e4e4e8', 'gray': '# A6A6A6', 'text-gray': '# CCC', 'navy': '# 060B2B', 'theme-blue': '# 4553ad' }, maxWidth: { '1/4': '25% ', '2/5': '40% ', '1/2': '50% ', '3/4': '75% ', '4/5': '80% ', '9/10': '90% ', }, fontFamily: { 'display': 'roc-grotesque, sans-serif', }, fontSize: { 'title': '1.75rem', '4.5xl': '2.5rem', '5.7xl': '3.75rem', }, boxShadow: { 'form': '0px 1px 7px rgba (23, 25, 40, 0.13549)', 'dropdown': '0px 4px 5px # 1b1b1b' }, screens: { 'mobile': {'max': '767px'}, 'tablet': {'min': '768px'}, 'desktopScreens': {'min': '1024px'}, 'wide': {'min': '1280px'}, 'belowRetina': {'max': '1920px'}, 'retina': {'min': '1921px'}, } } } }

 

In the above code, I have customized my theme colors, max-width property, font-family, font-sizes, box-shadow, and breakpoints.

Now, let's take a look at how these values ​​can be used in CSS.

.banner-title { @apply max-w-9/10 ; // This will apply max-width: 90% as we defined in tailwind.config.js }

In the above CSS, max-w is the TailwindCSS class for max-width and 9/10 is my customized value for 90%.

In the DOM, it will render as:

 

.banner-title { max-width: 90% ; }

Similarly, let's see one more example, this time for color.

.button - primary { @apply bg-brand-black text-white ; // brand-black is the color that I customized in my tailwind.config.js }

and the next code example is how it will be rendered

 

.button - primary { background: # 1b1b1b ; color: #fff ; }

This color that you defined in tailwind.config.js can be used with any property where you can apply colors. So if you want the text color to be brand-black then you will simply write:

.button - primary { @apply bg-light-gray text-brand-black; // light-gray is another color that we defined. }

Which in the DOM, will render as

.button - primary { background: # e4e4e8 ; color: # 1b1b1b ; }

That was quick and easy, right?

I really enjoyed using TailwindCSS, it's simple, light, highly customizable, and so easy. I hope this post could give you all that you needed to know for building your project using the TailwindCSS.

For installation and checking out the more utility classes, you can follow the official documentation .

Good luck! :)

 

Written by Hansa Pandit
Frontend Engineer at Ramsalt Lab

 

 

DataSmith: Week 1 with Asana

Main Drupal Feed - Sun, 05/02/2021 - 14:09
Week 1 with Asana Barrett Sun, 05/02/2021 - 14:09

imalabya.co: Drupal 9 Multisite setup in Lando

Main Drupal Feed - Sat, 05/01/2021 - 15:00
Drupal 9 Multisite setup in Lando

The multisite feature in Drupal allows to effectively create and manage a fleet of websites where all the sites will share the same codebase while having separated databases, configurations, and assets. In this post, we will see how to setup a Drupal multisite setup locally using Lando with an assumption that you already have a master site setup using drupal9 recipe. 

Setup sites for multisite

The first thing we need to do is to configure the sites that we need. In this case, let's call the master site as the main site and the other 2 sites which we will create are mojave and yosemite

Step 1: Create the folders for the sites in web/sites/* directory
web/sites/mojave
web/sites/yosemite

Step 2: Copy the default.settings.php from web/sites/default to the multisite directories as settings.php

Step 3: Copy the default.sites.php to sites.php and add entries for each of the multisite to make the main site aware of the sites.

// @codingStandardsIgnoreFile $sites['mojave.lndo.site'] = "mojave"; $sites['yosemite.lndo.site'] = "yosemite"; Add db services to Lando file

Now that our files are setup, we will need databases for each of the sites. This will be handled via Lando by update the .lando.yml file to add each database as new services.  

Note: We don't need to add the database service for the main site since it will use the default database service.

services:   # The database service used for the `main` site.   database:     type: mariadb:10.4     portforward: true     creds:       user: drupal       password: drupal       database: main   # The database service used for the `mojave` site.   mojave:     type:  mariadb:10.4     portforward: true     creds:       user: drupal       password: drupal       database: mojave   # The database service used for the `yosemite` site.   yosemite:     type:  mariadb:10.4     portforward: true     creds:       user: drupal       password: drupal       database: yosemite Add proxy for site domain

Lando uses Traefix as a reverse proxy to make the routing and have clean URLs to  point various ports inside of various services. So, by default if the app name is set to drupal, we will get a nice URL like http://drupal.lndo.site. 

Now, to add the URLs for the other two sites we need update the .lando.yml file to make an proxy entry for each sites. Alternatively, you can update the default URL for the main site as well.

Note: The proxy URL must match the domain entered in the sites.php file.

proxy:   appserver:     - main.lndo.site     - mojave.lndo.site     - yosemite.lndo.site Install the sites via UI

Now that the multisites are configured, we can start installing Drupal on each of the site. Below is the table to map the domain and database credentials for each site.

Site URL DB Username DB Password DB Name Main http://main.lndo.site drupal drupal main Mojave http://mojave.lndo.site drupal drupal mojave Yosemite http://yosemite.lndo.site drupal drupal yosemite

If, the files directory is not created automatically then you will need to create one for each site and give the appropiate permissions for the directory.

Install the sites via Drush Aliases

Although, the sites are accesible via UI and browser, Drush access and setup is also important for development and deployment purposes. For this, we will need to setup the Drush aliases for each site so that we can access the sites right from the terminal.

Setup Drush aliases

To setup the Drush aliases, create a *.sites.yml file in the PROJECTROOT/drush/sites/ directoryIn our case, we will create a file called drupal.sites.yml with the following content.

# The uri key should map to the proxy domain names # being setup in the .lando.yml file. main:  root: /app  uri: http://drupal.lndo.site mojave:  root: /app  uri: http://mojave.lndo.site yosemite:  root: /app  uri: http://yosemite.lndo.site

Once, this is is setup you can access the sites using Drush aliases. To check the aliases list run lando drush sa whcih should give

'@drupal.main': root: /app uri: 'http://drupal.lndo.site' '@drupal.mojave': root: /app uri: 'http://mojave.lndo.site' '@drupal.yosemite': root: /app uri: 'http://yosemite.lndo.site'

So, to access the "mojave"  site you can run lando drush @drupal.mojave status

Site Installation

Now, that the Drush aliases are setup we can install the sites using the Drush site-install command and passing the sites directory name as the option.

# To install the main site drush @drupal.main si --sites-subdir=default -y # To install the mojave site drush @drupal.mojave si --sites-subdir=mojave -y # To install the yosemite site drush @drupal.yosemite si --sites-subdir=yosemite -y Verify site settings & configuration

Once, the sites are installed & setup we can verify if the configurations and data is isolated for each site. To check enable different themes for each site, enable different modules and/or create few dummy contents for each site. You will notice that each of the sites configurations are not isolated. However, we would also like to use Drupal Configuration management for each site but that can be a separate post by itself.

Tl;dr

To add a new multisite

  1. Create a new directory under web/sites by the name of the site
  2. Copy the default.settings.php from web/sites/default to the multisite directories as settings.php
  3. Update sites.php to make an entry for the new site.
  4. Add a new service to Lando file for the new site database
  5. Add a new proxy for the new site in the Lando file
  6. Run lando rebuild to create a the new database and update proxy
  7. Add new entry in the *.sites.yml for Drush alias
  8. Install the site either by UI or using Drush alias.
malabya Sat, 05/01/2021 - 20:30 Drupal development

Drupixels: 6 Drupal blog posts you must read from April 2021

Main Drupal Feed - Sat, 05/01/2021 - 08:54

This month of April is celebrated as DrupalFest on Drupal completing its 20 years. With all the virtual events happening in the last month we have seen great blog posts from the Drupal community.

Here are 6 Drupal blog posts from April 2021 which you must read.

 

hussainweb.me: The month of DrupalFest

Main Drupal Feed - Fri, 04/30/2021 - 22:53
I began writing this series of posts on April 1st, 2021 to celebrate DrupalFest, Drupal's 20th year. When I started, I was not sure I would be able to write something every day. For one thing, April would not have been the best time for me considering my personal challenges. I didn't even think of doing anything until the very last minute (I am used to that). Second, I didn't know what I would write about for 30 days!

Drupal Association blog: Call For Interest: Authentication & SSO for Drupal.org

Main Drupal Feed - Fri, 04/30/2021 - 18:53

Drupal.org is the home of the Drupal community, and in its 20 year history Drupal.org has managed to coordinate and centralize the efforts of our contributors. As we look to recruit the next generation of contributors who will become project leaders in the next decade, we want to reduce the barriers to joining the community, and extend the reach of a user's Drupal identity.

As such, the Drupal Association is undertaking a new project to both allow account creation and authentication to Drupal.org using common existing accounts that new contributors may already have, and allow federation of the Drupal.org identity, so third party community services like DrupalCamp sites or chat services can allow users to log in with their Drupal identity.

Successful completion of this project will allow new contributors to Drupal to join the community in a single click(or as close as possible with Terms acceptance, etc), and will allow existing Drupal.org users to join community-built services with their existing Drupal.org identity. 

Scope

Project scope should include Discovery, Project Management, Development, Security Review, and Quality Assurance for the following key features:

  1. Migration of existing Drupal.org user identity management and federation between Drupal subsites with an industry standard identity solution, e.g: SAML + OAuth
  2. Replacement or update of the 'Bakery' module for managing login state and synchronizing user profile data across sub-sites of Drupal.org.
  3. Allow Drupal.org account creation and/or login using an existing identity provider, with all appropriate disclaimers about data sharing to comply with global regulation: 
    1. Required identity providers:
      1. GitHub.com
      2. GitLab.com
    2. Optional identity providers

      1. Atlassian ID
      2. Google ID
  4. Integrate solution for Spam account mitigation based on either existing Drupal.org account protection, or other method developed in collaboration with DA engineering staff.

  5. Enforce an additional terms of service acceptance during account creation with a third-party identity. 

    1. Enforce an admin-triggered re-acceptance in case of changed terms of service.
  6. Allow a method for a 3rd party site or service to offer 'Create account/login with your Drupal.org identity' 

    1. Enforce a requirement for only approved sites/services to be allowed to use this identity.
    2. Enforce a requirement that data shared is disclosed to users before account creation is confirmed. 
Technical constraints and additional requirements

The chosen solution must meet the following additional technical constraints and requirements: 

  • Strong preference for a self-hosted identity store, rather than a Saas/third party solution - if a Saas solution is proposed, privacy policy must be stronger-than industry standard, fully compliant with international regulation like GDPR, and data must be fully portable. 
  • After discovery interviews with the Drupal Association engineering team, we must decide which system is the source of truth for user account data: Drupal.org, a SAML database, or other.
  • Must support SSO from www.drupal.org to all sub-sites, and assistance with any necessary data migration.
  • Must support SSO for Drupal 7 and Drupal 9 - as Drupal.org sites will be migrated from version 7 to 9 one at a time. 
  • Must support SSO from www.drupal.org to our self-hosted GitLab instance, including assistance with any necessary migration of existing account data.
Vendor requirements

The Drupal Association will consider contracts from both individual developers and agencies.

An individual must: 

  • Be a member of the Drupal Association
  • Provide a portfolio of examples of prior identity and authentication projects

An agency must: 

  • Active Supporting Partner of the Drupal Association that qualifies for any level of the new Drupal Certified Partner Program
  • Provide a portfolio of examples of prior identity and authentication projects
  • Provide a statement or link that reflects your organization's commitment to Diversity, Equity, and Inclusion.
Other Considerations:

Please indicate if you’re willing to accept in-kind benefits if your bid comes in higher than our allocated budget. The cash portion of the budget should not exceed $28,000 USD.

The point person for this project at the Drupal Association is generally available between 4:00 PM - 11:00 PM UTC. We welcome global responses but we’d prefer meeting times to be within our standard business hours. We will make every effort to accommodate times outside of standard Pacific Time business hours.

Timeline

We would like the authentication and identity solution to be implemented no later than October 1st, 2021.

Individuals or Agencies who intend to participate should provide their bids and samples of portfolio work to the Drupal Association via email (tim@association.drupal.org) no later than Friday, May 14th at 5pm U.S. Pacific. Respondents will be notified of the decision no later than June 15th.

Drupal Association blog: Call For Interest: Project Messaging in Core

Main Drupal Feed - Fri, 04/30/2021 - 18:51

There are more than 1 million Drupal sites actively in use across the globe. At least one in 40 websites that a typical internet user visits is likely to be built on Drupal - however, the Drupal project leads and the Drupal Association do not necessarily have a direct line of communication to each of these Drupal site owners.

While the Association can reach Drupal users and site owners who visit Drupal.org, attend DrupalCon, or follow one of our social channels, there are many more users who do not engage with the Drupal community outside of their own Drupal instance control panel.

This initiative seeks to change that by adding a channel for important project and association messaging directly in Drupal Core's admin interface. 

Scope

The feature proposal has already completed the core idea queue process, and the initial prototype of the Project Messaging in Core feature has already been built as a contributed module. This existing work currently needs to be transferred into a true core feature request issue with added test coverage and any additional changes requested by the core team.

The work then needs to be backported to Drupal 7, and possibly to Drupal 8 after discussion with core maintainers.

  1. Full technical and security review of the existing prototype project.
  2. Remediation of any identified issues.
  3. Completion of test coverage. 
  4. Shepherding through the process of getting feedback from the appropriate core maintainers. 
  5. Implementing required feedback. 
  6. Once committed - move on to backports:
    1. Backport to Drupal 7
    2. Shepherd through the approval process with Drupal 7 maintainers. 
  7. Optionally - pending a discussion with core maintainers, consider porting to Drupal 8. 
Technical constraints and additional requirements

The chosen solution must meet the following additional technical constraints and requirements: 

  • The solution must be built to appropriately aggregate the feed of messages from Drupal.org, in collaboration with the Drupal Association engineering team.
  • The solution must be built according to core contribution standards. 
Vendor requirements

The Drupal Association will consider contracts from both individual developers and agencies.

An individual must: 

  • Be a member of the Drupal Association
  • Provide examples of their contributions to Drupal core, especially feature additions, rather than bug fixes.

An agency must: 

  • Active Supporting Partner of the Drupal Association that qualifies for any level of the new Drupal Certified Partner Program
  • Provide examples of their contributions to Drupal core, especially feature additions, rather than bug fixes.
  • Provide a statement or link that reflects your organization's commitment to Diversity, Equity, and Inclusion.
Other Considerations:

Please indicate if you’re willing to accept in-kind benefits if your bid comes in higher than our allocated budget. The cash portion of the budget should not exceed $30,000 USD.

The point person for this project at the Drupal Association is generally available between 4:00 PM - 11:00 PM UTC. We welcome global responses but we’d prefer meeting times to be within our standard business hours. We will make every effort to accommodate times outside of standard Pacific Time business hours.

Timeline

The project messaging feature has a hard deadline of October 1st, 2021 in order to be included in the last release of Drupal 9, and for a backported release to Drupal 7. Preference will be given to proposals that complete the work on a much shorter timeline in order to allow plenty of time for the core acceptance process.

Individuals or Agencies who intend to participate should provide their bids and samples of portfolio work to the Drupal Association via email (tim@association.drupal.org) no later than Friday, May 14th at 5pm U.S. Pacific. Respondents will be notified of the decision no later than June 15th.

hussainweb.me: What I want to see in Drupal’s Future

Main Drupal Feed - Fri, 04/30/2021 - 03:59
This DrupalFest series of posts is about to end and I thought that a fitting end would be to talk about the future of Drupal. I have already written a bit about this in my previous post: what I want to see in Drupal 10. However, this post is more aspirational and even dream-like. Some of these may sound really far-fetched and it may not even be clear how to get there. For the purposes of this post, that's fine. I will not only worry about the how; just the what.

Ben's SEO Blog: The Redirect Module

Main Drupal Feed - Thu, 04/29/2021 - 21:22
The Redirect Module The Redirect module redirects visitors from old URLs to new URLs. When you move a piece of content to another section of your site or change the URL, this module helps avoid the dreaded 404 error. Tracy Cooper Thu, 04/29/2021 - 16:22

mark.ie: Proof of Concept: New Grid System for LocalGov Drupal

Main Drupal Feed - Thu, 04/29/2021 - 16:06

Currently LocalGov Drupal relies on Bootstrap for its grid system. I think we can achieve a really nice grid system with about 30 lines of CSS. Let's see!

mark.ie: Refactoring Code: LocalGov Drupal Alert Banner

Main Drupal Feed - Thu, 04/29/2021 - 10:13

I've been doing a lot of contribution to LocalGov Drupal. Here's my thought process when refactoring some code for the alert banner module.

Matt Glaman: Formatting time elements to match the current user's locale

Main Drupal Feed - Thu, 04/29/2021 - 05:12

I recently created a Live page to promote my upcoming live coding streams and ways to find my previous ones. I have the times listed. However, times are hard. I first shipped them without specifying the CDT timezone – sorry folks. But still, this is a pain and unfriendly to anyone in a different timezone.

Heck, I even have a hard time translating 24h time format from EDT to CDT, let alone UTC. So I wrote some vanilla JavaScript to transform the times into the current user's locale – no dependencies! 

Drupal outputs its datetime fields in a time element with the datetime attribute, which contains the datetime string. Here's an example:

hussainweb.me: Understanding overridden configuration in Drupal

Main Drupal Feed - Thu, 04/29/2021 - 03:59
The configuration API is one of the major areas of progress made in Drupal 8. It addresses many challenges of managing a site across environments for Drupal 7 and before. It's not perfect. After all, it's just version 1 and there is work going on in CMI 2 to fix the problems in the current version. That is not the subject of this blog post, however. In this post, I want to talk about one of the lesser understood features of configuration management: overriding.

The Russian Lullaby: Condition Plugins for Visibility in Drupal 8-9

Main Drupal Feed - Thu, 04/29/2021 - 00:00

Hello there! In this new post I want to focus on a very interesting topic of Drupal, which pertains to its extension capabilities through its Plugins system. It is not a very extensive topic, but it is also true that there is not much documentation about it. This is a very common case when you’re building some kinds of Drupal Blocks in order to render specific data and you need that its visualization and its behaviour responds to special conditions.

Picture from Unsplash, user Benjamin Child, @@bchild311

Table of Contents

1- Introduction
2- What are Condition Plugins
3- Existing …

mark.ie: No title

Main Drupal Feed - Wed, 04/28/2021 - 20:05

Ok, maybe the title is a bit ambitious, but here's a little proof-of-concept video of any idea for sub-theming I have been working on.

Pages