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. AI translate update extractor

    Sven Decabooter

    This change might need a warning that it depends on ai 1.2.x, and including it into custom_field might need to be timed together with the first (stable?) release in that branch... I don't suppose it would be possible to both support 1.1.x-style FieldTextExtractor plugins, as well as 1.2.x-style...

  2. Add text extractor plugins for image, file, text_with_summary and link field types

    Sven Decabooter

    @apmsooner:

    Yeah I reckoned the module would need to be updated. Was just checking if there might be ways for backwards compatibility that I didn't think about. If this refactor goes into 1.2.x branch, I guess modules that extend this functionality, would need to create a separate branch for AI 1.2.x compatibility. There is also https://www.drupal.org/project/ai_translate_paragraph_asymetric that provides a similar plugin.

    The custom FieldTextExtractor plugins for the assymetric modules could probably also be included into the ai_translate module, rather than a separate module, but then the FieldTextExtractor plugin might need some extra logic to decide whether the plugin needs to kick in or not. E.g.: - for asymmetric LB translation --> check if layout_builder_at module is enabled - for asymmetric Paragraphs translation --> check if paragraphs_asymmetric_translation_widgets module is enabled Or could that logic go into shouldExtract()? Guess not, since that's more about logic on field level, than general condition checking... Now this logic is enforced by those separate ai_translate_* modules having the dependencies set in their info.yml file. If they got included in ai_translate itself, they might be activated where they shouldn't (i.e. if translation logic is symmetric instead)

  3. Add a cleanup function

    Sven Decabooter

    @eelkeblok: I have merged issue #3519842: Support OOP hooks, so this functionality could be implemented with OOP hooks in mind. Haven't reviewed the code yet, but described functionality looks promising :)

  4. Support OOP hooks

    Sven Decabooter

    Remaining issues have been resolved, and this has been added to 1.0.x branch. @eelkeblok would be good if you could rebase your MR branch on 1.0.x and also add support for OOP hooks. Sorry for the extra work.

  5. Add Role Delegation to Drupal CMS

    Sven Decabooter

    FYI: At this point in time I would suggest to include the https://www.drupal.org/project/role_delegation into Drupal CMS, rather than https://www.drupal.org/project/roleassign, given that the former is more actively maintained, and has a wider install base.

    This only if there is a need to include anything at all, as per phenaproxima's comment above.

  6. Add text extractor plugins for image, file, text_with_summary and link field types

    Sven Decabooter

    Tried testing the MR, but the changes to the modules/ai_translate/src/FieldTextExtractorInterface.php break contrib FieldTextExtractor plugin implementations, such as in "ai_translate_lb_asymmetric" or "custom_field" module that I'm using. There is no way we can make this work without breaking backwards compatibility?

  7. Admin toolbar height is not 100% since upgrading to Drupal 11.2

    Fons

    I think it depends on how you see the sidebar vs the topbar.

    Since the sidebar holds the logo I personally feel it should always be 100% height and the header shouldn't overlap it or push it down because the logo wouldn't be in the lefthand top corner in this case which feels visually weird.

  8. Implement the current environment as a service and utilize plugins

    Sven Decabooter

    I think a plugin system for detecting the current environment would be really helpful. While a lot of people would opt to use URL matching to discover the current environment, I can see other methods being used: - a config override in settings.php - a setting in \Drupal::state() - a system environment variable (retrieved via getenv()) - e.g. set by a CI script targetting a specific environment - ...

  9. Problems when uninstalling the module

    Randal

    Hi @a8w4,

    I'm afraid I'm still not able to reproduce this ☹️ I followed these steps: - `composer create-project drupal/recommended-project:10.4.6 sandbox-10` - `ddev config && ddev start` - `ddev composer require drush/drush drupal/msqrole && ddev drush pm:enable msqrole` - `ddev drush pmu msqrole`

    I also tried installing and uninstalling via the UI, it seems to always have worked.

    Could it be possible there was just some corrupt caching or config in your project at the time? If there's any more clues as to how this could be recreated, I'm happy to look further!

  10. Support Drupal core DefaultContent API

    Sven Decabooter

    Together with the patch to default_content mentioned above, this MR allows custom_field data to be exported by default_content, and imported by default_content import OR core's DefaultContent API, used by recipes.

  11. Support Drupal core DefaultContent API

    Sven Decabooter

    A patch has been added to default_content module, to make sure the Default Content exported YML files use the UUID identifiers of referenced entities within a custom_field field, rather than their (numeric) entity ID. The patch can be found at #3532596: Add support for custom_field module

  12. Add support for custom_field module

    Sven Decabooter

    On the import side of things, there is a patch for custom_field that makes this work: #3528586: Support Drupal core DefaultContent API.

  13. Add support for custom_field module

    Sven Decabooter

    Created an MR that updates custom_field data in the Default Content export for referenced entities.

    Original output without this MR:

    field_my_custom_field:
        -
          label: 'Exported label'
          image: 21 # Some random file ID
          image__width: 1024
          image__height: 1024
          image__alt: Sunset
          image__title: ''
          file: 22 # Some random file ID
          term: 4 # Some random taxonomy term ID
    

    After applying this MR. this becomes:

      field_my_custom_field:
        -
          label: 'Exported label'
          image: aa6340f0-0006-4f31-9f2d-5595f5cce028
          image__width: 1024
          image__height: 1024
          image__alt: Sunset
          image__title: ''
          file: c36ea199-cd17-4fe5-bec7-beef1ffb51b4
          term: 78ae1ee7-f2d4-4fc0-871e-1af92730df3b
    

    The referenced UUIDs also get added as a dependency to the "_meta" definition.

  14. Add support for custom_field module

    Sven Decabooter

    Problem/Motivation

    Add support for the custom_field module, so entities using that field can be exported and imported using Default Content (or Drupal core recipe importer).

    Export functionality for most custom_field data types are working out of the box, but the ones referencing entities will export the entity target IDs, rather than UUIDs used by the importer.

    Steps to reproduce

    - Install Default Content & custom_field - Set up a custom_field field, containing (amongst others) an image field or entity reference field. - Try export / import functionality.

    Proposed resolution

    - Add support for custom_field entity references in the Normalizer class.

  15. sourceEditing plugin no longer gets enabled automatically in 1.1.x - followup

    Sven Decabooter

    Problem/Motivation

    This is a followup to #3527899: sourceEditing plugin no longer gets enabled automatically in 1.1.x. Not sure if I missed this previously, or the code has changed in the meantime, but the sourceEditing CKEditor plugin gets enabled for the "Completion" AI CKEditor plugin, but is still throwing errors for other plugins, e.g. Spellfix.

    Steps to reproduce

    - Same as in #3527899: sourceEditing plugin no longer gets enabled automatically in 1.1.x, but use Spellfix instead of Completion

    Proposed resolution

    - Fix this by enabling the sourceEditing CKEditor for the "response_text" form element in the AiCKEditorPluginBase class.

  16. Problems when uninstalling the module

    Randal

    Hi @a8w4,

    Thanks for your report! I'm unable to reproduce this issue though, would it be possible to share the exact steps / paths where this issue occurs? As well as let me know if it's reproduceable on a clean D11?

    Thanks in advance!

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.