Unlimited Wordpress themes, plugins, graphics & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Web Design
  2. Processwire

Erweitern des ProcessWire-Administrators mithilfe benutzerdefinierter Module

by
Difficulty:IntermediateLength:MediumLanguages:

German (Deutsch) translation by Nikol Angelowa (you can also view the original English article)

In diesem Tutorial werden wir uns mit der Erweiterung des ProcessWire-Administrators mithilfe benutzerdefinierter Module befassen. Mit drei Beispielmodulen gebe ich Ihnen einen kleinen Einblick in die Leistungsfähigkeit von ProcessWire-Modulen, um dem Administrator neue Funktionen hinzuzufügen.

Erstellen Sie benutzerdefinierte Administrationsseiten

Das Erstellen von Seiten für Ihre Website in ProcessWire (PW) könnte nicht einfacher sein, aber wie sieht es mit dem Erstellen benutzerdefinierter Seiten im CMS aus? Angenommen, Sie möchten eine benutzerdefinierte Einstellungsseite, häufig gestellte Fragen (FAQs) oder eine Videoseite erstellen?

Lesen Sie weiter, wir haben Ihren Rücken.

Das Modul ProcessSimpleAdminPage zeigt einfach, wie Sie ein Modul erstellen, das die Process-Klasse erweitert, um einen neuen Admin-Prozess hinzuzufügen, und anschließend eine Seite für den neuen Prozess erstellen. Process ist die Basisklasse für den Administrator des PW. Mit dieser Methode können wir eine Seite erstellen, auf der unser Inhalt angezeigt wird.

Tipp: Ihr neues Prozesserweiterungsmodul kann auch Formulare und andere Funktionen anzeigen sowie Inhalte zurückgeben.

Wir werden einen neuen Prozess erstellen, der einige Inhalte zurückgibt, und dann eine neue Seite in der Administratornavigation erstellen, um diesen Inhalt zu erreichen (in diesem Beispiel habe ich die Seite "CMS-FAQ" genannt). Um unser Modul zu erstellen, erstellen wir zunächst eine Datei mit dem Namen "ProcessSimpleAdminPage.module" und speichern unsere Moduldetails darin.

Wenn wir zu diesem Zeitpunkt unser Modul installieren würden, hätten wir alles, was wir brauchen, um unsere neue Process ProcessSimpleAdminPage zu erstellen und den Inhalt zurückzugeben. Derzeit gibt es jedoch keine Seite, auf der unser Code ausgeführt werden kann. Wir haben verschiedene Möglichkeiten, dies zu tun:

  1. Erstellen Sie manuell eine neue Seite im PW-Seitenbaum unter Admin, geben Sie ihr den Vorlagen admin und im Feld Prozess: ProcessSimpleAdminPage. Wenn Sie beispielsweise die neue Seite in der Seitenbaumliste unter Einstellungen verschieben, wird die Seite angezeigt, die der oberen Navigation unter Einstellungen hinzugefügt wurde.
  2. Fügen Sie dem getModuleInfo()-Array des Moduls ein page attribut hinzu. Wenn das Modul Process erweitert (was bei uns der Fall ist), wird beim Hinzufügen eines page attribut-Arrays mit mindestens einem name und einem parent Element bei der Installation automatisch eine neue Administrationsseite unter Ihrem angegebenen parent Element mit dem Modul als Prozess erstellt. Hier ist ein Beispiel aus dem hello module.
  3. Erstellen Sie die Funktionen install() und uninstall() und fügen Sie die neue Seite hinzu. Dies wird unten detailliert beschrieben, um Ihnen zu zeigen, wie Sie eine Seite hinzufügen können:

Gehen Sie weiter und erstellen Sie Administrationsseiten für Ihre Website!

Benutzerdefinierten Textformatierer hinzufügen

Mit Textformatierern können Sie die Eingabe von Textfeldern mit dem PW-Administrator bearbeiten. Angenommen, Sie möchten Codefragmente erstellen, die hinzugefügt werden, anstatt dass jemand seine eigenen Snippets eingibt. Dies ist durchaus möglich (ähnlich wie beim hana code plugin for Wordpress).

Dieses Mal habe ich ein Modul erstellt, das eine weitere Basisklasse Textformatter erweitert, um unser neues Modul TextformatterFindReplace zu erstellen, und eine separate Konfigurationsdatei erstellt:

Jetzt kann ich in den Moduleinstellungen eine übereinstimmende Zeichenfolge und eine zu ersetzende Zeichenfolge angeben (in unserem obigen Beispiel lautet die Standardeinstellung find: ---- und durch <b>REPLACED TEXT</b> ersetzen).

Alles, was ich dann tun muss, ist, unseren neuen TextFormatter zu einem Textfeld auf der Registerkarte "Details" des Felds hinzuzufügen. Jetzt bekomme ich jedes Mal, wenn ich ---- eingebe, die ersetzte Textzeichenfolge.

Hinzufügen neuer Funktionen zu Admin-Seiten

Da der PW-Administrator selbst mithilfe der API-ähnlichen Bibliothek von PW erstellt wird, können PW-Module praktisch überall darauf zugreifen.

Für mein letztes Beispiel zur Erweiterung des PW-Administrators habe ich ein Modul erstellt, das Schaltflächen zur Bearbeitungsseite und zum Seitenbaum hinzufügt, zwei neue Felder erstellt und diese global zu jeder Seite hinzufügt. Für den Betrieb ist ein anderes Modul erforderlich, LazyCron.

Das Modul PageDeferredPublish setzt LazyCron beim Klicken auf eine der Schaltflächen Später veröffentlichen so, dass der Countdown dieser Seite jede Minute überprüft wird, und veröffentlicht die Seite, wenn der Countdown 0 erreicht. Dies bedeutet, dass ich eine Seite ungefähr 24 Stunden im Voraus veröffentlichen kann (natürlich das Überprüfungsintervall und Die Verzögerungszeit kann an Ihre Anforderungen angepasst werden.

Ich habe das gemacht durch:

  • Erstellen von zwei Feldern in meiner install()-Funktion: Ein Kontrollkästchen, das auf true gesetzt wird, wenn eine Schaltfläche aktiviert ist, um anzuzeigen, dass die Seite herunterzählen soll, und ein Countdown-Feld, in dem die Anzahl für diese bestimmte Seite in Sekunden gespeichert wird.
  • Hinzufügen von Hooks zu ProcessPageEdit::buildForm und ProcessPageListActions::getExtraActions, mit denen ich die beiden Schaltflächen hinzufügen kann.
  • Überprüfen Sie, ob mit der Funktion ready() auf eine der Schaltflächen geklickt wurde, und setzen Sie das Kontrollkästchen der entsprechenden Seite auf true.
  • Verwenden einer LazyCron-Hook-Funktion, um alle nicht veröffentlichten Seiten auf echte Kontrollkästchen zu überprüfen und dann das Sekundenfeld zu vergleichen, um festzustellen, ob die Seite veröffentlicht werden muss. Wenn nicht, ziehen Sie die verstrichene Zeit in Sekunden ab.

Das Ergebnis ist ein Modul mit Einstellungen (dem Zeitintervall, das zu einem späteren Zeitpunkt überprüft und veröffentlicht werden soll), das sich über Schaltflächen und Felder in den Administrator einbindet und die Verwendung anderer in PW installierter Module (d. H. LazyCron) ermöglicht.

Einpacken

Oft wurde bereits ein Modul erstellt, das Sie benötigen, und kann von der Modulseite von PW heruntergeladen werden. Wenn Sie sich jedoch in Not befinden, ist es schön zu wissen, dass es relativ einfach ist, sich darauf einzulassen, eine Kernklasse zu erweitern und neue Funktionen zu erstellen, die Ihr Problem lösen oder die Standardlösung von PW ändern.

Ich hoffe, Sie fanden diesen kleinen Vorgeschmack auf die Möglichkeiten der PW-Erweiterung hilfreich. Weitere Tipps und Tricks finden Sie in den anderen ProcessWire-Tutorials zu Envato Tuts+.

Nützliche Ressourcen

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.