Modul Entwicklung
am 27.07.2007 - 15:47 Uhr in
Hallo,
ich versuche mich seit kurzem mit Drupal anzufreunden. Was bis jetzt auch ganz erfolgreich war.
Vielen Dank an die Drupal Community!
Habe nun folgendes Problem. Ich möchte gerne eine Anwendung das in PHP geschrieben ist in Drupal als Modul integrieren.
Da ich mit dem Modul erstellen bis jetzt nicht klar gekommen bin, habe ich folgedes gemacht:
1)Habe einfach in Drupal eine "page" (Create Content - page) erstellt.
2) Mit 'access control' habe ich bestimmt das nur user mit bestimmten Rollen zugriff auf den Inhalt dieser "page" haben.
3)Im Body dieser "page" habe ich dann per include meine PHP scripte eingebunden.
4)Habe ein extra Menü/Block erstellt.
5)Die page habe ich dann diesem Menü untergeordnet.
6)Die Anwendung läuft nun innerhalb von drupal.
Und genau so sollte es auch aussehen. Nur würde ich das ganze gerne als richtiges Drupal Modul implementieren.
So das man einfach nur noch das Modul aktivieren muss.
Ich hoffe das ich hier einige Tipps bekomme. Habe schon die Create Modul Tutorials versucht. Aber so 100% steig ich da nicht ein. Hoffe ich bekomme hier hilfe.
Welche Hook Funktionen muss ich denn alles implementieren?
Hoffe ihr könnt mir zu den einzelnen Punkten Tipps geben.
Grüße
ayti
- Anmelden oder Registrieren um Kommentare zu schreiben
Modulentwicklung
am 27.07.2007 - 17:22 Uhr
Nach dem, was Du schreibst, benötigtst Du bisher zwei Dateien, eine MODULNAME.info [1] und eine MODULNAME.module.
Du benötigst hook_menu() [2] um einen Menueintrag und eine Seite anbieten zu können und hook_access() [3] um eine Zugriffsbeschränkung auf Rolenbasis zu realisieren.
Das war's schon, viel Erfolg.
vg
[1] http://drupal.org/node/101009
[2] http://api.drupal.org/api/5/function/hook_menu
[3] http://api.drupal.org/api/5/function/hook_access
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Modulentwicklung
am 29.07.2007 - 13:07 Uhr
Danke für die schnelle Antwort. Bin inzwischen weitergekommen.
Folgendes Problem ist nun aufgetaucht:
Habe das hook_menu implementiert. Der callback ruft dann die Funktion auf welche meine Scripte dann included.
Das Problem ist das ich beim Aufruf dann nur noch die Ausgabe meiner Scripte zu sehen ist. Ich hätte ee gerne so das das Layout drumherum mit Block und Meüpunkten erhalten bleibt.
Hoffe das ich hier noch ein paar Tipps bekomme wie ich das richtig bewerkstellige.
Hier mein Code dazu:
function railwebinterface_menu($may_cache) {
$items = array();
if($may_cache) {
$items[] = array('path' => 'railwebinterface', 'title' => t('Rail Web Interface'),
'callback' => 'railwebinterface_foo',
'access' => user_access('access railwebinterface'));
}
return $items;
}
function railwebinterface_foo() {
include("traingetinfo.php");
include("trainindex.php");
}
Du solltest in Deinen
am 29.07.2007 - 13:11 Uhr
Du solltest in Deinen Scripten auf jegliche direkte Ausgabe via echo oder print verzichten.
Stattdessen sammle die Ausgabe in einer Variablen wie
$output
und gib sie am Ende zurück:function railwebinterface_foo() {
include("traingetinfo.php");
include("trainindex.php");
return $output;
}
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Super vielen Dank für die
am 29.07.2007 - 22:51 Uhr
Super vielen Dank für die Antworten!
Modulentwicklung Frage zum hook_menu?
am 29.07.2007 - 23:41 Uhr
Hallo habe nochmal ne Frage zum hook_menu:
Wie bekomme ich es hin das ich mein eigenes Menü mit einzelnen Menu Items habe?
Bis jetzt wird mein Menu Item immmer unter Navigation aufgelistet.
Hätte es gerne so das ich ein extra Menü erstelle. Mein Menu Item dann hier aufgelistet wird.
Und das ganze dann als Block aktiviern kann.
Also sozusagen wie wenn ich unter admin/verwalten/menu dann auf "add menu" ein neues Menü erstellen kann. Welches ja dann unter Block aktiviert werden kann.
Hoffe dass mir da jemand weiterghelfen kann.
Grüße ayti!
Menuerstellung
am 30.07.2007 - 07:34 Uhr
Um mehrere untergeordnete Menupunkte zu erstellen, musst Du lediglich den path entsprechend setzen.
function hook_menu($may_cache) {
$items = array();
/* Hauptmenupunkt */
if ($may_cache) {
$items[] = array(
'path' => 'menu',
'title' => t('Mein menu'),
'access' => TRUE,
);
/* Submenupunkt */
$items[] = array(
'path' => 'menu/sub',
'title' => t('Mein Submenu'),
'access' => TRUE,
);
return $items;
}
Ein eigenes Menu kannst Du nach Modulaktivierung von Hand daraus machen, indem Du in der Menuverwaltung ein neues Menu erstellst und die Menupunkte dorthin verschiebst.
vg
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Danke Sanduhrs. Vielen Dank
am 30.07.2007 - 10:18 Uhr
Danke Sanduhrs. Vielen Dank für deine Hilfe.
Gerne. -- sanduhrs -
am 30.07.2007 - 10:41 Uhr
Gerne.
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Moduleentwicklung Variablen Übergabe
am 30.07.2007 - 15:01 Uhr
Hallo bin wieder auf ein Problem gestoßen.
Wie bekomme ich es hin Variablen mit get und post zu übergeben?
Grüße ayti
Du kannst Variablen per URL
am 30.07.2007 - 15:07 Uhr
Du kannst Variablen per URL [1] oder per Formular [2] übergeben.
vg
[1] http://api.drupal.org/api/5/function/url
[2] http://api.drupal.org/api/5/file/forms_api.html
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Variablen per URL
am 30.07.2007 - 15:58 Uhr
Also ich verstehe nicht ganz wie ich die URL Funktion verwenden kann. Bin wahrscheinlich heute auch schon zu lange dran.
Also ich rufe nun folgenden Link auf: "?q=railwebinterface/setspeed?speed=4.0"
Wie greife ich nun auf speed=4.0 zu?
wenn du es so machst
am 30.07.2007 - 16:01 Uhr
wenn du es so machst "?q=railwebinterface/setspeed/4.0" könntest du per arg(2) darauf zugreifen
gruß pebosi
gruß pebosi
--
https://pebosi.net
ayti wrote:Also ich rufe
am 30.07.2007 - 16:16 Uhr
Also ich rufe nun folgenden Link auf: "?q=railwebinterface/setspeed?speed=4.0"
Wenn, dann so: ?q=railwebinterface/setspeed&speed=4.0
//edit: In Drupal-PHP wäre das dann
<?php
l(t('Set speed'), 'railwebinterface/setspeed', array(), 'speed=4.0');
?>
Wie greife ich nun auf speed=4.0 zu?
<?php
$_GET['speed']
?>
und bei Post
<?php
$_POST['speed']
?>
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Variablen Übergabe
am 30.07.2007 - 20:48 Uhr
Hallo nochmal ne frage zu variablen Übergabe. Komm wieder irgendwie nicht weiter.
Wie sieht denn das ganze nun aus wenn ich folgendes in drupal machen will?
<form action ="set_speed.php" method="post">
enter it here <input name="Speed" type="text" size="5" maxlength="5" value="">
<input type="submit" value=" Set ">
</form>
Sozusagen bräuchte ich etwas in dieser Art:
<form action ="?q=railwebinterface/setspeed/" method="post">
<input name="Speed" type="text" size="5" maxlength="5" value="">
<input type="submit" value=" Set ">
</form>
Wie greife ich dann nun auf den input Wert zu?
Und wie sieht das ganze aus ich wenn method="get" verwende?
Hoffe das ich dazu auch noch ein Tipp bekomme?
Grüße ayti
ayti wrote: Wie greife ich
am 30.07.2007 - 22:06 Uhr
Wie greife ich dann nun auf den input Wert zu?
Und wie sieht das ganze aus ich wenn method="get" verwende?
Hoffe das ich dazu auch noch ein Tipp bekomme?
genau das hat sanduhrs doch in seinem letzten Post mit drin.
gruß pebosi
gruß pebosi
--
https://pebosi.net
Unter [1] findest Du die
am 30.07.2007 - 22:10 Uhr
Unter [1] findest Du die Schnelleinführung zum Thema FormsAPI, unter [2] die Referenz.
Nutze die FormsAPI, das System ist super!
vg
[1] http://api.drupal.org/api/5/file/developer/topics/forms_api.html
[2] http://api.drupal.org/api/5/file/developer/topics/forms_api_reference.html
--
sanduhrs - drupalcenter
--------------------------------
Stefan Auditor
http://erdfisch.de
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Oh man hatte ein Fehler in
am 31.07.2007 - 10:13 Uhr
Oh man hatte ein Fehler in der Namensgebung. Das mit der Übergabe klappt jetzt zumindest so:
<form action ="?q=railwebinterface/setspeed" method="post">
<input name="Speed" type="text" size="5" maxlength="5" value="">
<input type="submit" value=" Set ">
</form>
Zugriff auf Speed:
<?php
$_POST['speed']
?>
Das mit der FormsApi muss ich mir noch genauer anschauen. Werde noch nicht so schlau daraus wie ich genau das oben dargetellte mit der Api hinkriegen soll.
Vielen Dank für eure Antworten.
ayti
Bin zwar nicht der
am 31.07.2007 - 11:14 Uhr
Bin zwar nicht der Programmierkenner aber um XHTML konform zuseien müsste man noch bei den Input Tag am ende vor > ein Leerzeichen und / einfügen! Also
<input name="Speed" type="text" size="5" maxlength="5" value="" />
!Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.