drupalCreateNode oder anderes um PHP Code auf der Node auszugeben.
am 08.07.2013 - 09:46 Uhr in
Guten Tag zusammen,
wollte mal ein eigenes Modul erstellen. In erster Linie wollte ich ein größeres Formular für diverse Rechenoperatoren erstellen. Angefangen hatte ich es über den form Hook zu realisieren. Hat auch ganz gut geklappt, leider bin ich so recht zügig an die Grenzen gestoßen. Nun habe ich das Formular in PHP erstellt und wollte es jetzt in mein Modul einbetten. Meine Frage wäre jetzt nur, wie kann ich meinen PHP Code auf die Node laden bzw. auf dieser ausführen lassen ohne auf das PHP Modul von Drupal zurückzugreifen??
Hatte die Funktion
return $this->drupalCreateNode(array('body' => array(LANGUAGE_NONE => array(array('value' => '<?php print "Test"; ?>')))));
}
gefunden.
Leider klappt es nicht und die Seite funktioniert danach nicht mehr. Eine einfach ausgabe bringt das Formular nur komplett über den Content und nicht an die richtige Stelle. Den Pfad, Access usw. habe ich über hook_menu geregelt.
Viele Grüße
Julsen
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn Du vernünftig mit
am 08.07.2013 - 11:03 Uhr
Wenn Du vernünftig mit eigenen Modulen in Drupal arbeiten willst, mußt Du Dich mit der Drupal API vertraut machen. Das geht nicht in einem Tag, sondern ist ein etwas längerer Prozess mit einigem an Try and Error. Besorge Dir das Buch "Pro Drupal 7 Development", dann hast Du schon mal einen guten Startpunkt.
Hook_form ist nicht so schwierig, aber lies Dir auf drupal.org die Form-API genau durch. es gibt auch das Example Projekt, in dem Du für viele Anwendungen Beispiel-Module findest. Die kannst Du als Ausgangspunkt für eigene Entwicklung nehmen.
Insgesamt kann ich nur sagen: "Nicht aufgeben, schließlich wurde Rom auch nicht in einem Tag erbaut."
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Besten Dank! Hatte mir jetzt
am 08.07.2013 - 11:25 Uhr
Besten Dank!
Hatte mir jetzt zusätzlich noch page_example angeschaut und versuche es hiermit. Mein Formular hat 50+ Felder, wovon auch teilweise unterschiedlich viele Felder nebeneinander angezeigt werden, keine Ahnung wie ich das hätte anders realisieren können. Das Buch sollte ich mir mal bei Gelegenheit besorgen, sind nur leider nicht gerade günstig für Studenten.
Viele Grüße
Julsen
Ich schaue bei solchen
am 08.07.2013 - 11:54 Uhr
Ich schaue bei solchen Büchern immer bei Amazon und dann in der Rubrik andere Angebote. Da wird das Buch schon deutlich günstiger angeboten (z.Zt. für € 28,01 bei Lieferung aus England + € 3.- Versand).
Evtl. ist es für dich einfacher einen neuen Datentyp anzulegen mit den entsprechenden Feldern. Dann hast Du Dein Formular auch schon definiert. Die Anordnung der Felder im Eingabeformular kannst Du gut mit der Display Suite und dort dem Modul Display Suite Forms erzielen. Du definierst dabei unter Felder verwalten erst ein Layout, sicherst es und kannst Dann die Felder in dem Layout anordnen. Für die Feinarbeit braucht es aber immer CSS, auch bei einem eigenen Modul, das das Formular erstellt.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hier
am 08.07.2013 - 13:42 Uhr
Hier http://www.amazon.com/dp/1430228385 gibt es das Buch schon für ca. 20 €.
Viele Grüße
Julsen
//Update:
Habe es jetzt mit menu hook, permission hook und nem callback mit return array('#markup' => t($output)); gelöst, wobei sich alle Daten in der $output Variable befinden :)
Die Benutzung der t-Funktion
am 08.07.2013 - 13:50 Uhr
Die Benutzung der t-Funktion für Variablen, wie von Dir gezeigt, ist nicht korrekt! Die t-Funktion bekommt nur englische Strings und wenn da Zahlen drin sein sollen, die sich ändern können, gibt es dafür einen entsprechenden Array, in dem die Werte übergeben werden und Placeholder im String. Steht in der API Dokumentation zu t-Funktion. Wenn schon Programmieren, dann auch entsprechend der Coding-Vorgaben von Drupal.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hmm, laut Dokumentation kann
am 08.07.2013 - 15:20 Uhr
Hmm, laut Dokumentation kann ich t nutzen, muss aber bei userinput darauf achten, dass ich keine Sicherheitslücke schaffe. Ich übergebe ja quasi nur Text, welcher sich in der Variable $output befindet an die t Funktion.
Viele Grüße
Julsen