Installer Drupal :
composer create-project drupal/recommended-project drupal-website
cd drupal-website```
Installer Drupal dans un Sous-répertoire :
composer create-project drupal/recommended-project drupal-website
mv drupal-website public_html```
Initialisation du Site :
drush site:install standard --db-url=mysql://utilisateur:password@localhost/databasename --site-name="Drupal Website"
Commandes Drush Courantes :
drush cr # Vider le cache
drush uli # Obtenir l'URL de connexion
drush status # Statut du site Drupal
drush pm:enable # Activer un module
drush pm:uninstall # Désinstaller un module
drush config:export -y # Exporter la configuration
drush config:import -y # Importer la configuration`
Installer un Module via Composer :
composer require drupal/devel
drush pm:enable devel
Installer un Module Personnalisé :
modules/custom/nom_du_module
..info.yml
, les implémentations de hook, et autres composants.Installer un Thème Personnalisé :
themes/custom/nom_du_theme
..info.yml
, les templates, et les ressources.Exporter la Configuration :
drush config:export
Importer la Configuration :
drush config:import
Réinitialiser la Configuration par Défaut :
drush config:delete monmodule.settings
Executer un code php via Drush :
drush php-eval "dump(\Drupal::Config('system.site')->get('name'));"
Requête avec EntityQuery :
$query = \Drupal::entityQuery('node')
->condition('type', 'article')
->accessCheck(TRUE)
->condition('status', 1);
$nids = $query->execute();
Charger une Entité :
$node = \Drupal::entityTypeManager()
->getStorage('node')
->load($node_id);
Charger plusieurs Entités :
$entity_manager = \Drupal::entityTypeManager()
->getStorage('node');
$nids = $entity_manager->getQuery()
->condition('type', 'article')
->condition('status', 1)
->accessCheck(TRUE)
->execute();
$nodes = $entity_manager
->loadMultiple($nids);
Créer une Entité :
$node = \Drupal\node\Entity\Node::create([
'type' => 'article',
'title' => 'Mon Nouvel Article',
]);
$node->save();
Implémenter un Hook :
function monmodule_node_view(array &$build, \Drupal\node\NodeInterface $node) {
// Modifier l'affichage du node ici.
}
Définir un Service :
Ajouter à monmodule.services.yml
:
services:
monmodule.mon_service:
class: Drupal\monmodule\MonService
arguments: []
src/MonService.php
avec la classe définie.Définir une Route :
Dans monmodule.routing.yml
:
monmodule.custom_route:
path: '/custom-route'
defaults:
_controller: '\Drupal\monmodule\Controller\CustomController::content'
requirements:
_permission: 'access content'
Créer un Contrôleur :
Dans src/Controller/CustomController.php
:
namespace Drupal\monmodule\Controller;
use Drupal\Core\Controller\ControllerBase;
class CustomController extends ControllerBase {
public function content() {
return [
'#markup' => 'Bonjour, Drupal!',
];
}
}
Vérification des permissions de l'Utilisateur :
$current_user = \Drupal::currentUser();
if ($current_user->hasPermission('administer site configuration')) {
// L'utilisateur a la permission d'administrer le site.
}
Créer un Utilisateur :
// Création d'un nouvel utilisateur
$user = \Drupal\user\Entity\User::create([
'name' => 'nom_utilisateur',
'mail' => 'utilisateur@exemple.com',
]);
$user->save();
Outils de Debug :
dump($foo)
pour le débogage du code et pensez à ajouter die()
après le dump pour que php arrête la compliation du code.drush ws
pour surveiller les journaux et les erreurs.Pour des meilleures Performances :
Drupal\Core\Database\Connection
au lieu d'écrire des requêtes en SQL.Bonnes Pratiques de Sécurité :