Heim >Backend-Entwicklung >PHP-Tutorial >PHP Master | Erstellen eines neuen Drupal -Knotentyps
name = productcustomtype description = A new content type of Product package = Product Custom node Type core = 7.x files[] = productcustomtype.install files[] = productcustomtype.moduleDas obige definiert einfach einige Parameter für unser Modul, sodass Drupal es verwenden und die Informationen zu unserem Modul anzeigen kann. Sobald dies erledigt ist, sollten wir unser Modul in der Modulliste wie unten gezeigt sehen. Aber aktivieren Sie es noch nicht - wir werden das nach dem nächsten Schritt tun.
name = productcustomtype description = A new content type of Product package = Product Custom node Type core = 7.x files[] = productcustomtype.install files[] = productcustomtype.moduleDie Implementierung gibt ein Array zurück, das ein neues Produkt des Knotentyps zusammen mit einigen seiner Eigenschaften definiert, z. B. seinen Namen, die Beschreibung, wenn es einen Titel hat, und der Basis (die in verschiedenen Hooks für diesen Inhaltstyp verwendet wird). Da wir definiert haben, dass dieser Knotentyp einen Titel hat, müssen wir das Feld Title -Text anzeigen, wenn das Formular für diesen Knoten angezeigt wird, um Inhalte hinzuzufügen. Dazu müssen wir die Hook_form implementieren. Der Hook_Form -Hook wird verwendet, um das Formular zum Erstellen/Bearbeiten von Knoten anzuzeigen. Der Haken ist in productCustomType.module wie folgt implementiert:
<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>Wir verwenden einfach die Drupal -API, die eine Implementierung von Hook_form verleiht und fügt ein Titelfeld hinzu, das vorgesehen ist, dass die Knotendefinition das Attributsatz von Has_title hat (das wir in unserem Fall festgelegt haben). Sobald wir dies erledigt haben, müssen wir den Hook_install -Hook implementieren, um das Körperfeld dem neuen Knotentyp hinzuzufügen. Fügen Sie die Implementierung zu ProductCustomType.install wie folgt hinzu:
<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>Wir speichern zunächst alle neuen Knotentypen, die von verschiedenen Modulen (einschließlich unserer) erstellt wurden, indem wir die Funktion Drupal API node_types_rebuild () aufrufen. Dann erhalten wir alle Knotentypen und rufen auf unserem Typ node_add_body_field () auf, um das Körperfeld hinzuzufügen. Sobald wir dies getan haben, können wir unser Modul aktivieren, das unseren neuen Knotentyp installiert. Dann sollten wir in der Lage sein, unseren neuen Typ zu sehen, wenn wir auf wie folgt auf Inhalt hinzufügen:
name = productcustomtype description = A new content type of Product package = Product Custom node Type core = 7.x files[] = productcustomtype.install files[] = productcustomtype.moduleWir finden zunächst alle Knoten -IDs, die Knoten unseres installierten Inhaltstyps sind. Sobald wir die IDs gesammelt haben, verwenden wir die API -Funktion node_delete_multiple (), um mehrere Knoten zu löschen. Dann verwenden wir die Funktion node_type_delete (), um unseren Knotentyp zu löschen. Wenn wir jetzt unser Modul deinstallieren, sollten alle Knoten unseres Typs und unser Typ selbst gelöscht werden.
<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>Wir erstellen dann eine Funktion add_custom_fields () in productCustomtype.install, in der das Array von den Feldern und Instanzen gelesen wird.
<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>Jetzt können wir einfach die Funktion add_custom_fields () in productCustomType_install () aufrufen, damit die Felder und Feldinstanzen installiert werden, wenn das Modul installiert ist.
<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>Wir müssen auch unsere Funktion productCustomType_uninstall () aktualisieren, um die Felder und Feldinstanzen zu entfernen.
<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>Installieren Sie das Modul erneut und klicken Sie auf Produkt, um ein neues Produkt hinzuzufügen. Wir sollten die beiden Felder wie unten gezeigt sehen:
Wie kann ich einen neuen Knotentyp in Drupal erstellen?
Kann ich die Felder in meinem Drupal -Knoten -Typ anpassen? 🎜> Ja, Sie können die Felder in Ihrem Drupal -Knoten -Typ anpassen. Nachdem Sie einen neuen Knotentyp erstellt haben, können Sie nach Bedarf Felder hinzufügen, bearbeiten oder löschen. Auf diese Weise können Sie den Knotentyp an Ihre spezifischen Inhaltsanforderungen anpassen. Sie können beispielsweise ein Textfeld für eine Artikelzusammenfassung, ein Bildfeld für ein vorgezogenes Bild oder ein Datumsfeld für ein Veröffentlichungsdatum hinzufügen.
Wie kann ich den Zugriff auf meine Drupalknoten steuern? Sie können Berechtigungen basierend auf Benutzerrollen festlegen, sodass Sie steuern können, wer an jedem Typ ansehen, erstellen, bearbeiten und löschen kann. Sie können auch Drupals Knoten -Zugriffs -API verwenden, um komplexere Zugriffsregeln zu erstellen. . Sie können benutzerdefinierte Ansichten erstellen, die Knoten basierend auf verschiedenen Kriterien anzeigen, z. B. Knotentyp, Veröffentlichungsstatus oder Autor. Sie können auch das Anzeigeformat, das Sortieren und die Paginierung Ihrer Ansichten anpassen. Gefühl Ihrer Knoten. Sie können benutzerdefinierte Vorlagen für jeden Knotentyp erstellen und Drupals Themen -API verwenden, um Ihren Knoten benutzerdefinierte CSS und JavaScript hinzuzufügen.
Das obige ist der detaillierte Inhalt vonPHP Master | Erstellen eines neuen Drupal -Knotentyps. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!