Drupal is an older, highly flexible open-source content management system stewarded by the nonprofit Drupal Association and its global contributor community. It ranks around #28 among web frameworks/CMS platforms at roughly 2.2% usage share. It's favored for large, complex sites โ government agencies, universities, media organizations โ that need fine-grained content modeling, permissions, and access control beyond what WordPress offers out of the box.
Drupal modules extend the CMS by implementing "hooks" โ functions with a specific naming convention that Drupal calls automatically at defined points, such as when a node (piece of content) is saved.
/**
* Implements hook_node_presave().
*/
function mymodule_node_presave(\Drupal\node\NodeInterface $node) {
if ($node->bundle() === 'article') {
$node->set('field_word_count', str_word_count(
$node->get('body')->value
));
}
}
Use Composer, Drupal's supported dependency manager, to scaffold a new project and pull in Drupal core.
# create a new Drupal project via Composer
composer create-project drupal/recommended-project my_site
# enter the project and start a local dev server
cd my_site
php web/core/scripts/drupal quick-start