Drupal CMS

Drupal is een open-source content management systeem (CMS) dat wordt gebruikt voor het bouwen en beheren van websites en webapplicaties. Het is gebaseerd op PHP en biedt een scala aan functies en tools voor het maken van aangepaste websites en webapplicaties.

Het is dan ook één van de grootste spelers in CMS-land en dient voor meer dan duizenden bedrijven als platform voor websites. Al overtuigd van deze CMS-krachtpatser? Wij alvast wel.

Wat is Drupal?

Drupal is een open-source content management system (CMS) met Belgische roots. Het is een zeer veilig, flexibel en betrouwbaar platform en wordt ondersteund door een wereldwijde community van ontwikkelaars. Drupal is erg geliefd doordat ze eenvoudig aan te passen is en daarom uitmuntend geschikt is voor maatwerk. Denk maar aan het koppelen van je eigen CRM of software.

Omdat Drupal open-source is, wordt het actief onderhouden en ontwikkeld door een grote gemeenschap van ontwikkelaars en gebruikers, waardoor het voortdurend wordt verbeterd en geüpdatet met nieuwe functies en mogelijkheden.

Is Drupal de beste keuze voor jou?

Deze Belgische trots is een geweldig CMS voor uiteenlopende type projecten. Ben je niet zeker of Drupal wel de beste keuze voor jouw einddoel is? Geen nood. Nadat we bij onze verkennende gesprekken jouw business en klanten volledig uit de doeken hebben gedaan, bekijken we samen met jou welke technologie het beste bij jouw wensen en noden past.

make it fly - Drupal

Drupal als CMS

Drupal is een CMS dat al enkele jaren aan een steile opmars bezig is. Dagelijks werken er wereldwijd duizenden developers aan de uitbreiding van dit platform waardoor er ondertussen meer dan 15.000 (!) extra modules beschikbaar zijn. Drupal is een veelgebruikt CMS voor web en web app development.

Bij Duo zijn we overtuigd van de kracht die in het Drupal content management systeem schuilt en daarom gebruiken we dit vaak als basis voor onze web development. Hierop bouwen onze Drupal developers dan verder en programmeren modules op maat waarmee unieke, interactieve en gebruiksvriendelijke websites en webshops worden gecreëerd.

Enkele reden waarom je zou kiezen voor Drupal, op een rijtje:

  • je geniet van technologie dat met je meegroeit

  • garandeer de meest gebruiksvriendelijke ervaring

  • integreer eenvoudig interne systemen en externe tools

  • beheer centraal je inhoud en verspreidt via diverse kanalen (omnichannel)

  • profiteer van de flexibiliteit, vrijheid en mobielvriendelijkheid van je Drupal website

make it fly - Drupal

De voordelen van Drupal CMS

Deze krachtpatser brengt natuurlijk tal van voordelen met zich mee:

Gebruiksvriendelijk

Drupal zorgt ervoor dat je als eindgebruiker, die misschien niet over alle technische kennis beschikt, zelf gemakkelijk inhoud kunt wijzigen of toevoegen met behulp van een overzichtelijk en gebruiksvriendelijke gebruikersinterface.

Flexibel

Drupal is een zeer flexibel content management systeem, omdat het in staat is de inhoud van de website op basis van tags te organiseren in vooraf bepaalde categorieën. Elke node of content type kan bestaan uit uiteenlopende types inhoud: tekst, afbeeldingen, video, formulieren… Drupal - in tegenstelling tot vele andere content management systemen - kunnen we inzetten voor:

Een eenvoudige website die je huisstijl omarmt en je identiteit uitstraalt? Dan is een Drupal website iets voor jou. Overzichtelijk en makkelijk vindbaar.

Drupal biedt een krachtige en uitgebreide set functies voor e-commerce websites, zoals geavanceerde zoekfunctionaliteit, productcatalogi, winkelwagentjes, betaalgateways, en integratie met externe systemen zoals ERP en CRM.

  • Campagnewebsites of miniwebsites

Je merk echt in de kijker zetten doe je met je identiteit, positionering én een brand of campagne website. Alles wat je nodig hebt om je consumenten te informeren en met hen te communiceren heb je in handen. Daarbovenop geeft het je merk online een unieke look.

Uitbreidbaar

Drupal CMS heeft een modulair ontwerp. Door modules toe te voegen of op maat te schrijven kunnen onze developers handige functies aan je website toevoegen Deze modules kunnen eenvoudig geïmplementeerd worden en maken je website uniek.

Mobielvriendelijk

Het is natuurlijk belangrijk dat je website zich ook op mobiele toestellen perfect aanpast. Dit gaat het best als je website zich aan de grootte van het scherm aanpast, in het zogenaamde responsive webdesign. Drupal zorgt dat we op een vlotte manier een responsive design kunnen integreren. Op deze manier kunnen we je website op alle toestellen (smartphones, tablets en desktops) perfect weergeven.

Externe integratiemogelijkheden

Moeten bepaalde acties op je website ook met een bestaand systeem, zoals een ERP- of CRM-pakket, gekoppeld worden? Met Drupal is het perfect mogelijk om die koppeling te maken. Onze ervaring met diverse systemen zorgt ervoor dat de integratie met externe tools of applicaties, web services of backend-systemen steeds feilloos in je website geïntegreerd wordt.

Zoekmachinevriendelijk (of SEO-vriendelijk)

Een parel van een website moet kunnen gevonden worden door zoekmachines om organisch verkeer naar de website te brengen. Drupal behaalt telkens opnieuw zeer mooie resultaten bij zoekmachines door de uiteenlopende SEO-modules en optimalisatiemogelijkheden.

  1. [5.0.0-alpha3] Add documentation on how to add new theme/skins to the starterkit

    Sven Decabooter

    I was trying to add my own custom theme, and followed the following process:

    - Create a new theme based on the starterkit - as per `starterkits/ui_suite_daisyui_starterkit/README.md` - Run the `npm install` and `npm run build` commands - Add new theme file in `mytheme/css/themes/fancy.pcss.css` with contents like this:

    @plugin "daisyui/theme" {
      name: "fancy";
      default: true;
      prefersdark: false;
      color-scheme: "light";
      --color-base-100: #FAF7F2;
      ...
    }
    

    - Add file `mytheme/mytheme.ui_skins.themes.yml` with contents like this:

    # No value because same as plugin ID.
    fancy:
      label: "Fancy"
      label_context: "color"
      key: "data-theme"
      target: html
    

    - Run the `npm install` and `npm run build` commands again - Go to `/admin/appearance/settings/mytheme` and select the "Fancy" theme from the "Theme" dropdown

    The CSS file for fancy theme is included in the HTML output, and my tag contains `data-theme="fancy". I can't see any of the colors though...

    Is this because I use hex color codes, instead of oklch()? Or anything else in the process I missed?

  2. Conflict with core system/base hidden.module.css

    Sven Decabooter

    Problem/Motivation

    I have an element that needs to be hidden on smaller screens, and shown on larger ones. So I have set it up with the following classes: <div class="hidden lg:block">Show this only on large screens.</div>

    The file `css/components/hidden.module.css` in Drupal core's system/base library also contains a definition for .hidden classes, and seems to take precedence over the DaisyUI / Tailwind logic.

    The result is: my block is not shown on larger screens, even though that is desired.

    Proposed resolution

    Override the hidden.module.css logic, to avoid this behaviour for .hidden classes. Other functionalities provided by this CSS file should remain intact.

  3. Variation cache error when enabling the "domain"-module.

    Randal

    Problem/Motivation

    When enabling the core "Navigation" module and contributed "Domain" module, I seem to run into this error:

    The complete set of cache contexts for a variation cache item must contain all of the initial cache contexts, missing: user.site
    

    I saw in the cache contexts that the exact ones listed in the default value of the container parameter `render.config:required_cache_contexts` were used, but when looking at the NavigationRenderer, they're hardcoded into it. If I replace the hardcoded contexts list on line 133 in the NavigationRenderer:

    $build[$delta]['#cache']['contexts'] = ['user.permissions', 'theme', 'languages:language_interface'];
    

    With this code:

    $renderer_config = \Drupal::getContainer()->getParameter('renderer.config');
    $build[$delta]['#cache']['contexts'] = $renderer_config['required_cache_contexts']
      ?? ['user.permissions', 'theme', 'languages:language_interface'];
    

    Then it seems to work (since I've added `user.list` as a required context in my services file).

    Steps to reproduce

    - Start on an empty Drupal 11 website - Enable the Navigation and Domain modules

    Proposed resolution

    I think, using the container parameter renderer.config:required_cache_contexts instead of the hardcoded list: - user.permissions - theme - languages:language_interface

    Should be fine? Unless I completely misunderstand this functionality.

  4. Render logs and overview as templates rather than inline render arrays/html

    Randal

    Problem/Motivation

    Currently, in the FilesLogController, the overview of logs and canonical log pages are built completely in the controller with inline render arrays and inline templates. Ideally this should just follow the Drupal way of using templates.

    Proposed resolution

    Rework the controller to render only templates that can be overridden elsewhere.

  5. Allow selection of which features to activate

    Sven Decabooter

    I created a MR to add this functionality. For the selectable prefill attributes for form elements I didn't add an option, as this needs to be configured per field widget manually anyway, AFAIK.

    Attached is also a patch version of the MR changes, for Composer based workflows.

  6. Allow selection of which features to activate

    Sven Decabooter

    Problem/Motivation

    To improve flexibility for people using this module, it would be good to allow the option to disable some of the features this module provides (although probably not recommended).

    For example, one could choose to disable the HTML5 validation that is added to all forms, and selectively decide which forms can have HTML5 validation (e.g. Webform module already provides a toggle for this - which is overridden by this module).

    Proposed resolution

    Provide a configuration schema and settings page to select which features to enable (defaults to everything enabled).

    Remaining tasks

    Create a MR with this functionality

    User interface changes

    An extra settings page would be added. No other UI changes needed.

    API changes

    /

    Data model changes

    /

  7. Translation of config actions

    Sven Decabooter

    That looks like a great approach to add translation options to recipes.

    I don't have strong feelings regarding the exact syntax, but personally prefer the options where the parameters are named explicitly (so 2nd or 3rd).

    I'm assuming the 3rd could also be written as

       form:
          '#type': email    
          '#title': !translate { 
            string: 'Feedback form email address', 
            context: 'Third context' 
          }
    

    As it would avoid having everything on 1 line, especially with larger strings you would need to do some horizontal scrolling in your IDE. Come to think of it, then I probably prefer the 2nd version, as it avoids the extra brackets as well..

  8. Similar module - co-maintaining and merging?

    Sven Decabooter

    Thanks for the notice. Since this module has more usage and already has some releases, I think it would make sense to deprecate your module, and provide its extra functionalities in this module. I'd be happy to review merge requests to get extra functionality in.

  9. Usability: let admin choose which email to send

    Sven Decabooter

    Sorry for the delay. Had a bit of time to review this now.

    This does allow the user to select the type of message to send, but only when the action plugin is triggered. When editing a user and clicking the button shown on the form, the old behaviour is still used. So that introduces 2 different behaviours, according to the path you take to trigger it.

    Also, would it be an option to reuse the functionality that now decides in code which mail to send, to provide a default value to the user? Some editorial users might not know which email is the most appropriate, so guiding them in the right direction would be good.

Fons Vandamme

Gebruik Drupal als CMS voor een veilige en betrouwbare website die altijd up-to-date is.

Fons Vandamme
Drupal Architect & Sales manager

Met doordachte positionering scheppen we met Drupal een optimale visuele hiërarchie, cohesie en gebruiksvriendelijkheid.