Create Node bearbeiten
Eingetragen von das-schaf (8)
am 24.01.2008 - 14:59 Uhr in
am 24.01.2008 - 14:59 Uhr in
Hallo,
ich habe folgende Frage, ich habe mit cck einen Node-Type erstellt. Wenn ich jetzt auf "Create My Node" gehe und einen neuen node meines Typs erstellen will soll im ersten Textfeld das ich angelegt habe bereits ein Wert stehn, dieser wert ist aber jedes mal anders, ist quasi eine fortlaufende nummer die ich aus der datenbank hole.
Nun meine Frage, wo, d.h. in welcher Datei muss ich php-code reinschreiben damit das geht?
tobi
- Anmelden oder Registrieren um Kommentare zu schreiben
Du kannst diesen Feld (wenn
am 24.01.2008 - 15:41 Uhr
Du kannst diesen Feld (wenn mit CCK angelegt) einen Standardwert geben, dieser kann auch per PHP irgendwo her geholt werden.
gruß pebosi
gruß pebosi
--
https://pebosi.net
Re: Create Node bearbeiten
am 24.01.2008 - 16:02 Uhr
Du kannst diesen Feld (wenn mit CCK angelegt) einen Standardwert geben, dieser kann auch per PHP irgendwo her geholt werden.
Ich versuche, möglichst wenig Funktionalität in der Datenbank zu halten. Quelltext hat ein höheres Wiederverwendungspotential als Datenbankeinträge.
Außerdem kann man sich mit dem Eingabeformat "PHP" ganz schnell die Seite zerschießen und man muß manuell in die Datenbank eingreifen um die Seite wieder zum Laufen zu bekommen.
Unter Anderem deshalb ist dieses Eingabeformat in Drupal 6 in ein eigenes Modul ausgelagert worden, das standardmäßig nicht aktiviert ist.
Nun meine Frage, wo, d.h. in welcher Datei muss ich php-code reinschreiben damit das geht?
Du kannst also schon PHP. Das ist gut, dann ist der Rest auch nicht schwer. Schreibe ein Modul:
sites/default/modules
(falls dasmodules
Vezeichnis nicht existiert, dann musst du es natürlich ebenfalls anlegen). Das Verzeichnis sollte nach deinem Modul benannt sein, ich nehmefoo
als Beispiel. Alle Dateien die zu deinem Modul gehören, kommen in dieses Verzeichnis.foo.info
. Dort schreibst du rein was im Artikel Writing .info files (Drupal 5.x) steht.foo.module
foo.module
definierst du eine Funktion<?php
/**
* Implementation of hook_form_alter().
*/
function foo_form_alter($form_id, &$form) {
if ($form_id != 'node-form') {
return;
}
$node = $form['#node'];
drupal_set_message("Node type is " . $node->type);
}
?>
bar
.drupal_set_message
durch<?php
if ($node->type != 'bar') {
return;
}
drupal_set_message(
'<pre>'
. highlight_string('<?php '.var_export($form,true), true) .
'</pre>'
);
?>
baz
drupal_set_message
durch<?php
if (! empty($form['baz']['#default_value'])) {
return;
}
// TODO: hole den Wert aus der Datenbank und speichere ihn in der Variablen $value
$form['baz']['#default_value'] = $value;
?>
--
Cool, danke, ...
am 24.01.2008 - 16:26 Uhr
Vielen Dank erstmal, hab mir schon sowas ähnliches gedacht, Module hab ich ja auch schon geschrieben. Ich verstehe eben noch nicht so ganz die zusammenhänge in Drupal. Ich hätte ja auch eine Extra Modul schreiben können in dem ich ein form erzeuge und das dann alles in die datenbank speichern. Aber ich möchte eben gerne die Drupalfunktionalität nutzt, d.h. z.b. cck, was eigentlich ein cooles Modul ist.
Aber du kannst mir dann ja auch bestimmt beantworten wie ich aus meinem Node-type das "Titel" und "Body"-Feld rausbekomme? Brauch ich nicht, ich brauch nur meine eigenen Felder, ...
mfg
tobi
Re: Cool, danke, ...
am 24.01.2008 - 17:08 Uhr
Ich verstehe eben noch nicht so ganz die zusammenhänge in Drupal.
Tja, es dauert halt manchmal lange, den kürzesten Weg zu finden; und noch länger, den schönsten Weg zu finden.
... wie ich aus meinem Node-type das "Titel" ... -Feld rausbekomme?
Überhaupt nicht, da hängt zu viel Drupal-Internes dran. Ich würde den Titel in
hook_form_alter
in ein value-Feld ändern und mit "New Node" vorbelegen und inhook_nodeapi($op='save')
auf "Node$nid
" ändern.... wie ich aus meinem Node-type das ... "Body"-Feld rausbekomme?
admin/content/types/<typ>
im Abschnitt "Beitragsformular".--
Dnake, hat alles geklappt, ...
am 25.01.2008 - 01:44 Uhr
Also erstmal Danke, hat gleich funktioniert, aber jetzt hab ich wieder das nächste Problem, oder besser gesagt, eine Frage: Ich hab das date Modul installiert und ein Datefield angelegt. SO, ich will das Datum in folgendem Format anzeigen lassen: 02/2008 also Monat/Jahr. Wenn man einen neuen node anlegt soll dann das aktuelle datum schon drin stehn. Weisst du vielleicht ne Lösung?