Drupal ist ein sehr flexibles Content -Management -System zum Erstellen von Websites. Es bietet viele großartige Funktionen außerhalb der Box, mit denen wir umfassende Websites erstellen können, ohne einen PHP -Code zu schreiben. Es bietet auch Funktionen, um durch die Verwendung von Modulen mehr Funktionen hinzuzufügen.
Standardmäßig sind die Drupal -Knoten -Typen ein Artikel und eine Seite. Dies ist möglicherweise gut für grundlegende Websites, aber wenn wir vorhaben, eine komplexere Website zu haben, möchten wir verschiedene Knotentypen hinzufügen. Wir können diese sogar definieren, indem wir ein Modul schreiben!
In diesem Artikel sehen Sie, wie Sie ein benutzerdefiniertes Drupal -Modul schreiben, mit dem neue Knotentypen mithilfe der Drupal -Hooks und der API installiert werden.
Key Takeaways
- Drupal ist ein flexibles Content -Management -System, das die Erstellung neuer Knotentypen durch das Schreiben eines benutzerdefinierten Moduls ermöglicht. Dies ist von Vorteil, um komplexere Websites über die Standardartikel- und Seitenknoten -Typen hinaus zu erstellen.
- Erstellen eines neuen Knotentyps beinhaltet das Erstellen eines Moduls mit drei Dateien: .Info (enthält Informationen zum Modul), .Install (Details zu dem, was das Modul installiert oder deinstalliert) und .module (enthält den Code zum Implementieren des Moduls Drupal -Haken, die vom Modul verwendet werden).
- Der neue Knotentyp wird mit den Drupal -Hooks und der API installiert, und Felder wie Titel, Beschreibung usw. werden definiert. Das Modul sollte auch Code zum Reinigen von Daten oder Typen enthalten, die hinzugefügt werden, wenn es deinstalliert wird.
- Zusätzliche Felder können dem neuen Knotentyp hinzugefügt werden, indem die Felder und Feldinstanzen in der .Install -Datei des Moduls erstellt werden. Dies ermöglicht maßgefertigtere Inhalte, z. B. den Produktpreis und die Menge in einem Produktknotentyp.
Erstellen Ihres Moduls
Beginnen wir zunächst die Grundstruktur eines Moduls, in dem wir unseren neuen Inhaltstyp erstellen.
So erstellen Sie ein Modul, erstellen Sie im Verzeichnis von Sites/All/Modules Ihrer Drupal -Installation ein neues Verzeichnis mit dem Namen productCustomType. Erstellen Sie in diesem Ordner drei Dateien:
- productCustomType.info - enthält die Informationen zum Modul, damit Drupal es erkennt und in der Liste angezeigt wird.
- productCustomType.install - enthält Details zu Dingen, die Sie für das Modul installieren oder deinstallieren werden.
- productCustomType.module - enthält Code, um die vom Modul verwendeten Drupal -Hooks zu implementieren.
Sobald Sie das Verzeichnis erstellt haben, öffnen Sie ProductCustomType.info und fügen Sie den folgenden Code hinzu:
name = productcustomtype
description = A new content type of Product
package = Product Custom node Type
core = 7.x
files[] = productcustomtype.install
files[] = productcustomtype.module
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Das 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.
Installieren und Deinstallieren des Knotens
Sobald wir die grundlegenden Dateien für das Modul vorhanden haben, können wir mit dem Schreiben von Code für die Installation des benutzerdefinierten Knotentyps beginnen. Der erste Haken, den wir implementieren müssen, ist Hook_node_info. Mit diesem Haken kann ein Modul einen oder mehrere Knotentypen in Drupal definieren. Die Hook -Implementierung gibt ein Array zurück, das den neuen Knotentyp definiert, zu dem das Modul hinzugefügt wird.
Um diesen Haken zu implementieren, fügen Sie den folgenden Code zu ProductCustomType.module hinzu:
name = productcustomtype
description = A new content type of Product
package = Product Custom node Type
core = 7.x
files[] = productcustomtype.install
files[] = productcustomtype.module
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Die 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>
Nach dem Login kopieren
Nach dem Login kopieren
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>
Nach dem Login kopieren
Nach dem Login kopieren
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:
Wenn wir ein neues Produkt hinzufügen, wird es auch auf der Drupal -Homepage zu sehen.
Alle Module in Drupal sollten alle in der Datenbank erstellten Daten oder alle Typen, die sie hinzugefügt haben, bei der Deinstallation vom Benutzer hinzugefügt haben. Um dies zu unterstützen, müssen wir die Hook_uninstall in unserer productCustomType.install -Datei wie folgt implementieren:
name = productcustomtype
description = A new content type of Product
package = Product Custom node Type
core = 7.x
files[] = productcustomtype.install
files[] = productcustomtype.module
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Wir 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.
Erstellen zusätzlicher Felder
Sobald wir den neuen Knotentyp hinzugefügt haben, haben wir eine Funktionalität, die dem eines Knotens ähnelt. Aber was ist, wenn wir je nach Knotentyp mehr Felder hinzufügen möchten? Wenn es sich beispielsweise um einen Produkttyp handelt, möchten wir möglicherweise zwei weitere Felder wie Preis und Menge hinzufügen.
Dafür müssen wir zuerst die Felder erstellen und dann Feldinstanzen auf unserem Knotentyp erstellen. Wir schreiben zwei neue Funktionen in die productCustomType.install -Datei, um die Felder und die Feldinstanzen zu definieren.
<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>
Nach dem Login kopieren
Nach dem Login kopieren
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>
Nach dem Login kopieren
Nach dem Login kopieren
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>
Nach dem Login kopieren
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>
Nach dem Login kopieren
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:
Nachdem wir den Knoten gespeichert und in der Vorschau sehen, werden wir die Felder wie folgt sehen:
Schlussfolgerung
Das Drupal CMS bietet viele nützliche Haken und eine leistungsstarke API, mit der wir verschiedene Anpassungen durchführen können. In diesem Artikel konnten wir einen völlig neuen Knotentyp erstellen, der im Inhaltsabschnitt von Drupal angezeigt wird. Mithilfe der API von Drupal haben wir auch Felder an diesem neuen Knotentyp angehängt, damit jeder mit dem neuen Knotentyp einfach Inhalte hinzufügen kann. Viel Spaß beim Erstellen Ihres nächsten neuen Knotentyps für Ihre Drupal -Site.
Bild über Fotolien
häufig gestellte Fragen zum Erstellen eines neuen Drupal -Knoten -Typs
Was ist ein Drupal-Knoten-Typ und warum ist es wichtig? durch einen Informationskontext. Dies könnte ein einfacher Blog -Beitrag, ein Artikel, eine Nachrichtengeschichte, ein Forumthema oder ein Tutorial sein. Knotentypen sind wichtig, da sie eine strukturierte Methode zur Eingabe, Anzeige und Verwaltung von Inhalten in Drupal bieten. Sie ermöglichen die Anpassung der Einstellungen für Dateneingaben, Validierung und Anzeige, die die Benutzererfahrung und die Gesamtfunktionalität einer Drupal -Site erheblich verbessern können.
Wie kann ich einen neuen Knotentyp in Drupal erstellen?
Erstellen eines neuen Knotentyps in Drupal ist ein einfacher Prozess. Navigieren Sie zuerst zum Menü "Struktur" in Ihrem Drupal Admin -Dashboard und wählen Sie dann "Inhaltstypen". Klicken Sie auf die Schaltfläche "Inhaltstyp hinzufügen". Sie werden aufgefordert, den Namen, die Beschreibung und die Einstellungen für Ihren neuen Knotentyp auszufüllen. Wenn Sie die erforderlichen Informationen ausgefüllt haben, klicken Sie auf die Schaltfläche „Felder speichern und verwalten“, um Feldern zu Ihrem neuen Knotentyp hinzuzufügen.
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.
Drupal bietet für jeden Knotenentyp eine Registerkarte "Anzeige verwalten". Auf diese Weise können Sie steuern, wie jedes Feld angezeigt wird, wenn der Knoten angezeigt wird. Sie können das Etikett, das Format und die Reihenfolge jedes Feldes einstellen. Sie können auch Felder in benutzerdefinierte Anzeigemodi wie eine Teaseransicht oder eine vollständige Inhaltsansicht gruppieren. Eine leistungsstarke Möglichkeit, Knoten programmgesteuert zu erstellen, zu aktualisieren und zu löschen. Dies kann für Aufgaben wie das Importieren von Inhalten aus einem anderen System, das Generieren von Testdaten oder das Erstellen von benutzerdefinierten Workflows nützlich sein. Die Knoten -API ist Teil des Kernsystems von Drupal, daher ist sie in allen Drupal -Installationen erhältlich.
Was sind die Kernknotentypen in Drupal? Diese bieten einen Ausgangspunkt für die Verwaltung von Inhalten in Drupal. Sie können jedoch auch Ihre eigenen benutzerdefinierten Knotentypen erstellen, die Ihren spezifischen Anforderungen entsprechen.
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.
Kann ich die Funktionalität meiner Drupalknoten mit Modulen erweitern? > Ja, die modulare Architektur von Drupal ermöglicht es Ihnen, die Funktionalität Ihrer Knoten mit Modulen zu erweitern. Es gibt Tausende von zustimmenden Modulen, mit denen Funktionen wie Bildgalerien, Kommentare, Bewertungen und Social -Media -Integration zu Ihren Knoten hinzugefügt werden können. Sie können auch Ihre eigenen benutzerdefinierten Module erstellen, wenn Sie spezifische Anforderungen haben, die nicht von den verfügbaren Modulen erfüllt werden.
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!