Maison >développement back-end >tutoriel php >PHP Master | Création d'un nouveau type de nœud Drupal

PHP Master | Création d'un nouveau type de nœud Drupal

William Shakespeare
William Shakespeareoriginal
2025-02-24 08:34:10316parcourir

PHP Master | Création d'un nouveau type de nœud Drupal

Drupal est un système de gestion de contenu très flexible pour la création de sites Web. Il offre de nombreuses fonctionnalités de la boîte qui nous permettent de créer des sites complets sans écrire de code PHP. Il fournit également des fonctionnalités pour ajouter plus de fonctionnalités grâce à l'utilisation de modules. Par défaut, les types de nœuds Drupal sont un article et une page. Cela peut être bon pour les sites de base, mais si nous prévoyons d'avoir un site Web plus complexe, nous voulons ajouter différents types de nœuds. Nous pouvons même les définir en écrivant un module! Dans cet article, vous verrez comment rédiger un module Drupal personnalisé qui installera de nouveaux types de nœuds à l'aide des crochets et de l'API Drupal.

Les plats clés

  • Drupal est un système de gestion de contenu flexible qui permet la création de nouveaux types de nœuds en écrivant un module personnalisé; Ceci est bénéfique pour la création de sites Web plus complexes au-delà des types de nœuds par défaut et de nœuds.
  • La création d'un nouveau type de nœud implique la création d'un module avec trois fichiers: .info (contient des informations sur le module), .install (détails sur ce que le module va installer ou désinstaller) et .module (contient le code pour implémenter le Crochets drupal utilisés par le module).
  • Le nouveau type de nœud est installé à l'aide des crochets et des API Drupal, et des champs tels que le titre, la description, etc., sont définis. Le module doit également inclure du code pour nettoyer les données ou les types ajoutés lorsqu'il n'est pas entièrement.
  • Des champs supplémentaires peuvent être ajoutés au nouveau type de nœud en créant les champs et les instances de champ dans le fichier .install du module. Cela permet un contenu plus personnalisé, tel que le prix du produit et la quantité dans un type de nœud de produit.

Création de votre module

Commençons par créer la structure de base d'un module dans lequel nous allons créer notre nouveau type de contenu. Pour créer un module, dans le répertoire des sites / all / modules de votre installation Drupal, créez un nouveau répertoire nommé ProductCustomType. Dans ce dossier, créez ensuite trois fichiers:
  • ProductCustomType.info - contiendra les informations sur le module afin que Drupal le reconnaisse et le montre dans la liste.
  • ProductCustomType.install - aura des détails sur les choses que vous allez installer ou désinstaller pour le module.
  • ProductCustomType.module - contiendra du code pour implémenter les crochets Drupal utilisés par le module.
Une fois que vous avez réalisé le répertoire, ouvrez ProductCustomType.info et ajoutez-y le code suivant:
name = productcustomtype
description = A new content type of Product
package = Product Custom node Type
core = 7.x
files[] = productcustomtype.install
files[] = productcustomtype.module
Ce qui précède définit simplement certains paramètres pour notre module afin que Drupal puisse les utiliser et afficher les informations sur notre module. Une fois cela fait, nous devons voir notre module dans la liste des modules comme indiqué ci-dessous. Mais ne le permettez pas encore - nous le ferons après la prochaine étape.

PHP Master | Création d'un nouveau type de nœud Drupal

Installation et désinstallant le nœud

Une fois que nous avons en place les fichiers de base du module, nous pouvons commencer à écrire du code pour installer le type de nœud personnalisé. Le premier crochet que nous devons implémenter est Hook_node_info. En utilisant ce crochet, un module peut définir un ou plusieurs types de nœuds dans Drupal. L'implémentation Hook renvoie un tableau définissant le nouveau type de nœud que le module va ajouter. Pour implémenter ce crochet, ajoutez le code suivant à ProductCustomType.module:
name = productcustomtype
description = A new content type of Product
package = Product Custom node Type
core = 7.x
files[] = productcustomtype.install
files[] = productcustomtype.module
L'implémentation renvoie un tableau définissant un nouveau produit de type de nœud ainsi que certaines de ses propriétés, telles que son nom, la description, si elle a un titre et une base (qui est utilisée dans différents crochets pour ce type de contenu). Comme nous avons défini que ce type de nœud a un titre, nous devons afficher le champ de texte de titre lorsque le formulaire de ce nœud est affiché pour ajouter du contenu. Pour ce faire, nous devrons implémenter le Hook Hook_form. Le crochet hook_form est utilisé pour afficher le formulaire utilisé pour créer / modifier les nœuds. Le crochet est implémenté dans ProductCustomType.module comme suit:
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implements hook_node_info()
</span></span><span><span> */
</span></span><span><span>function productcustomtype_node_info() {
</span></span><span>    <span>return array(
</span></span><span>        <span>'product' => array(
</span></span><span>            <span>'name' => t('Product'),
</span></span><span>            <span>'base' => 'product',
</span></span><span>            <span>'description' => t('You can define new Products here'),
</span></span><span>            <span>'has_title' => TRUE,
</span></span><span>            <span>'title_label' => t('Product title')
</span></span><span>         <span>)
</span></span><span>    <span>);
</span></span><span><span>}</span></span>
Nous utilisons simplement l'API Drupal qui donne une implémentation de Hook_Form et ajoute un champ de titre à condition que la définition du nœud ait le jeu d'attribut Has_Title (que nous avons défini dans notre cas). Une fois que nous l'avons fait, nous devons implémenter le crochet hook_install pour ajouter le champ du corps au nouveau type de nœud. Ajoutez l'implémentation à ProductCustomType.install comme suit:
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implement hook_form()
</span></span><span><span> */
</span></span><span><span>function product_form($node, $form_state) {
</span></span><span>    <span>return node_content_form($node, $form_state);
</span></span><span><span>}</span></span>
Nous enregistrons d'abord tous les nouveaux types de nœuds créés par différents modules (y compris le nôtre) en appelant la fonction Drupal API Node_types_rebuild (). Ensuite, nous obtenons tous les types de nœuds et appelons node_add_body_field () sur notre type pour ajouter le champ du corps. Une fois que nous l'avons fait, nous pouvons activer notre module qui installera notre nouveau type de nœud. Ensuite, nous devrions pouvoir voir notre nouveau type lorsque nous cliquons sur Ajouter du contenu comme suit:

PHP Master | Création d'un nouveau type de nœud Drupal

Si nous ajoutons un nouveau produit, il sera également vu sur la page d'accueil de Drupal.

PHP Master | Création d'un nouveau type de nœud Drupal

Tous les modules de Drupal doivent nettoyer toutes les données qu'ils créent dans la base de données ou les types qu'ils ont ajoutés lorsqu'ils sont désinstallés par l'utilisateur. Pour soutenir cela, nous devons implémenter le Hook_uninstall dans notre fichier ProductCustomType.install comme suit:
name = productcustomtype
description = A new content type of Product
package = Product Custom node Type
core = 7.x
files[] = productcustomtype.install
files[] = productcustomtype.module
Nous découvrons d'abord tous les ID de nœud qui sont des nœuds de notre type de contenu installé. Une fois que nous avons collecté les ID, nous utilisons la fonction API Node_Delete_Multiple () pour supprimer plusieurs nœuds. Ensuite, nous utilisons la fonction node_type_delete () pour supprimer notre type de nœud. Maintenant, si nous désinstallons notre module, tous les nœuds de notre type et de notre type lui-même doivent être supprimés.

Création de champs supplémentaires

Une fois que nous avons ajouté le nouveau type de nœud, nous avons des fonctionnalités similaires à celles d'un nœud. Mais que se passe-t-il si nous voulons ajouter plus de champs en fonction du type de nœud? Par exemple, s'il s'agit d'un type de produit, nous voulons peut-être ajouter deux autres champs comme le prix et la quantité. Pour cela, nous devons d'abord créer les champs, puis créer des instances de champ sur notre type de nœud. Nous écrivons deux nouvelles fonctions dans le fichier ProductCustomType.install pour définir les champs et les instances de champ.
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implements hook_node_info()
</span></span><span><span> */
</span></span><span><span>function productcustomtype_node_info() {
</span></span><span>    <span>return array(
</span></span><span>        <span>'product' => array(
</span></span><span>            <span>'name' => t('Product'),
</span></span><span>            <span>'base' => 'product',
</span></span><span>            <span>'description' => t('You can define new Products here'),
</span></span><span>            <span>'has_title' => TRUE,
</span></span><span>            <span>'title_label' => t('Product title')
</span></span><span>         <span>)
</span></span><span>    <span>);
</span></span><span><span>}</span></span>
Nous créons ensuite une fonction add_custom_fields () dans ProductCustomType.install qui lira le tableau et créera les champs et les instances.
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implement hook_form()
</span></span><span><span> */
</span></span><span><span>function product_form($node, $form_state) {
</span></span><span>    <span>return node_content_form($node, $form_state);
</span></span><span><span>}</span></span>
Maintenant, nous pouvons simplement appeler la fonction add_custom_fields () dans ProductCustomType_install () afin que les champs et les instances de champs soient installés lorsque le module est installé.
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implements hook_install().
</span></span><span><span> */
</span></span><span><span>function productcustomtype_install() {
</span></span><span>    <span>node_types_rebuild();
</span></span><span>    <span>$types = node_type_get_types();|
</span></span><span>      <span>node_add_body_field($types['product']); 
</span></span><span><span>}</span></span>
Nous devons également mettre à jour notre fonction ProductCustomType_uninstall () pour supprimer les champs et les instances de champ.
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implements hook_uninstall().
</span></span><span><span> */
</span></span><span><span>function productcustomtype_uninstall() {
</span></span><span>    <span>$ournewtype = 'product';
</span></span><span>    <span>$sql = 'SELECT nid FROM {node} n WHERE n.type = :type';
</span></span><span>    <span>$result = db_query($sql, array(':type' => $ournewtype));
</span></span><span>    <span>$nodeids = array();
</span></span><span>    <span>foreach ($result as $row) {
</span></span><span>        <span>$nodeids[] = $row->nid;
</span></span><span>    <span>}
</span></span><span>    <span>node_delete_multiple($nodeids);
</span></span><span>    <span>node_type_delete($ournewtype);
</span></span><span><span>}</span></span>
Installez à nouveau le module et cliquez sur le produit pour ajouter un nouveau produit et nous devrions voir les deux champs comme indiqué ci-dessous:

PHP Master | Création d'un nouveau type de nœud Drupal

Après avoir enregistré le nœud et le voir dans l'aperçu, nous verrons les champs comme suit:

PHP Master | Création d'un nouveau type de nœud Drupal

Conclusion

Le Drupal CMS fournit de nombreux crochets utiles et une API puissante qui nous permet d'effectuer diverses personnalisations. Dans cet article, nous avons pu créer un type de nœud complètement nouveau qui apparaîtra dans la section de contenu de Drupal. Et en utilisant l'API de Drupal, nous avons également attaché des champs à ce nouveau type de nœud afin que n'importe qui puisse facilement ajouter du contenu à l'aide du nouveau type de nœud. Amusez-vous donc à créer votre prochain nouveau type de nœud pour votre site Drupal. Image via Fotolia

Des questions fréquemment posées sur la création d'un nouveau type de nœud drupal

Qu'est-ce qu'un type de nœud drupal et pourquoi est-il important?

Un type de nœud drupal, également appelé type de contenu, est une collection prédéfinie de types de données (champs) qui se rapportent les uns aux autres par un contexte d'information. Cela pourrait être un simple article de blog, un article, une nouvelle, un sujet de forum ou un tutoriel, entre autres. Les types de nœuds sont importants car ils fournissent un moyen structuré de saisir, d'afficher et de gérer le contenu dans Drupal. Ils permettent la personnalisation des paramètres d'entrée, de validation et d'affichage des données, ce qui peut améliorer considérablement l'expérience utilisateur et la fonctionnalité globale d'un site Drupal.

Comment puis-je créer un nouveau type de nœud dans Drupal?

La création d'un nouveau type de nœud dans Drupal est un processus simple. Tout d'abord, accédez au menu «Structure» dans votre tableau de bord Drupal Admin, puis sélectionnez «Types de contenu». Cliquez sur le bouton «Ajouter le type de contenu». Vous serez invité à remplir le nom, la description et les paramètres de votre nouveau type de nœud. Une fois que vous avez rempli les informations nécessaires, cliquez sur le bouton «Enregistrer et gérer les champs» pour ajouter des champs à votre nouveau type de nœud.

Puis-je personnaliser les champs dans mon type de nœud Drupal?

Oui, vous pouvez personnaliser les champs de votre type de nœud Drupal. Après avoir créé un nouveau type de nœud, vous pouvez ajouter, modifier ou supprimer les champs selon les besoins. Cela vous permet d'adapter le type de nœud à vos besoins de contenu spécifiques. Par exemple, vous pouvez ajouter un champ de texte pour un résumé d'article, un champ d'image pour une image en vedette ou un champ de date pour une date de publication.

Comment puis-je gérer les paramètres d'affichage pour mon type de nœud Drupal?

Drupal fournit un onglet «Gérer l'affichage» pour chaque type de nœud. Cela vous permet de contrôler la façon dont chaque champ est affiché lorsque le nœud est affiché. Vous pouvez ajuster l'étiquette, le format et l'ordre de chaque champ. Vous pouvez également regrouper les champs dans des modes d'affichage personnalisés, tels qu'une vue de teaser ou une vue complète de contenu.

Puis-je utiliser l'API du nœud de Drupal pour créer par programme des nœuds?

Oui, Drupal's Node API fourni Un moyen puissant de créer, mettre à jour et supprimer des nœuds par programmation. Cela peut être utile pour des tâches telles que l'importation de contenu à partir d'un autre système, la génération de données de test ou la création de workflows personnalisés. L'API du nœud fait partie du système de base de Drupal, il est donc disponible dans toutes les installations de Drupal.

Quels sont les types de nœuds de base dans Drupal?

Drupal est livré avec plusieurs types de nœuds de base, y compris l'article, la page de base, l'entrée de blog, le sujet du forum et le sondage. Ceux-ci fournissent un point de départ pour gérer le contenu dans Drupal. Cependant, vous pouvez également créer vos propres types de nœuds personnalisés pour répondre à vos besoins spécifiques.

Comment puis-je contrôler l'accès à mes nœuds Drupal?

DRUPAL Fournit un système robuste pour contrôler l'accès aux nœuds. Vous pouvez définir des autorisations en fonction des rôles utilisateur, vous permettant de contrôler qui peut afficher, créer, modifier et supprimer les nœuds de chaque type. Vous pouvez également utiliser l'API d'accès au nœud de Drupal pour créer des règles d'accès plus complexes.

Puis-je utiliser le module de vues de Drupal pour afficher mes nœuds?

Oui, le module Views de Drupal est un outil puissant pour afficher les nœuds . Vous pouvez créer des vues personnalisées qui affichent des nœuds en fonction de divers critères, tels que le type de nœud, le statut de publication ou l'auteur. Vous pouvez également personnaliser le format d'affichage, le tri et la pagination de vos vues.

Comment puis-je thème mes nœuds Drupal?

Drupal fournit un système de thème flexible qui vous permet de contrôler l'apparence et sensation de vos nœuds. Vous pouvez créer des modèles personnalisés pour chaque type de nœud, et vous pouvez utiliser l'API de thème de Drupal pour ajouter CSS et JavaScript personnalisés à vos nœuds.

Puis-je étendre la fonctionnalité de mes nœuds Drupal avec des modules?

Oui, l'architecture modulaire de Drupal vous permet d'étendre la fonctionnalité de vos nœuds avec des modules. Il existe des milliers de modules contribués disponibles qui peuvent ajouter des fonctionnalités telles que des galeries d'images, des commentaires, des notes et une intégration des médias sociaux à vos nœuds. Vous pouvez également créer vos propres modules personnalisés si vous avez des besoins spécifiques qui ne sont pas satisfaits par les modules disponibles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn