[Gelöst] Inhalt erstellen ohne node/add oder node/edit Formular?
Eingetragen von Makku01 (58)
am 17.03.2011 - 11:57 Uhr in
am 17.03.2011 - 11:57 Uhr in
Hallo Freunde,
folgendes Szenario:
Ich möchte einen Node ohne das Add-Formular zu sehen. Also quasi Link klicken zum Erstellen -> Node wird erstellt, automatisch gespeichert und angezeigt -> die enthaltenen Felder kann man dann mit editable Fields bearbeiten.
Ist das machbar? wie würdet Ihr da rangehen?
- Anmelden oder Registrieren um Kommentare zu schreiben
Irgendwie verstehe ich nicht...
am 18.03.2011 - 12:28 Uhr
Irgendwie verstehe ich nicht was du damit erreichen willst, bzw kann ich keinen Sinn in der Sache entdecken.
Sag doch mal was du genau machen willst.
Ich meine auf einen Link klicken um einen Node zu erzeugen ist sicher machbar, aber was soll in dem Node dann drinnstehen?
als titel 'die ist ein dummy titel' und im Textkörper ' dies ist ein dummy Textkörper' ? Irgendwo müssen die Daten die später angezeigt werden sollen ja herkommen.
Und was meinst du mit 'editable Fields' .. das dit doch genau das was node/edit anbietet, oder nicht.
Daher, beschreib doch bitte mal genauer was du erreichen möchtest, vll kann dir ja geholfen werden
Gruß
Hallo Methos, es geht hier um
am 21.03.2011 - 09:54 Uhr
Hallo Methos, es geht hier um ein kleines CRM. Ich möchte den User nicht auf das node/edit bzw node/add Formular lassen, weil man hier immer einen Button zum Speichern klicken muss. Das muss ich vermeiden. Bei Editable-Fields speichert er die Eingabe, sobald man das Feld in dem man was eingetragen hat, verlässt.
Die Ausgabe des Nodes erfolgt über eine angepasste tpl.php. Der User soll sich immer in der gleichen Maske bewegen.
Ist das verständlich?
Kann mir geholfen werrden?
Mal sehen ob ich das nun alles richtig verstanden habe..
am 21.03.2011 - 14:28 Uhr
Also du meinst dieses Modul : editablefields?
Damit ist es - wenn ich die Beschreibung des Modul richtig verstehe - möglich Felder auch in der Node-Ansicht als editierbar darzustellen und
- das könnte für dich ggf relevanter sein - eine View zu erstellen die die Daten editierbar darzustellen. Dabei ist es dann ja auch kein Problem eine View anzulegen, die einen einzelnen Node anzeigt (der dann bearbeitet werden kann).
Das einzige wo ich so 'aus dem stand' noch keine Idee habe ist, wie man einen Node erzeugen könnte, der dann in der View direkt bearbeitet werden kann. ggf müßte man da für ein kleines Modul schreiben, das die Noderzeugung erledigt und dann auf die zugehörige View (des dann ja schon existierenden) Nodes 'weiterleitet'
Soviel meine Ideen dazu erstmal.
Hat das weitergeholfen? Wenn nicht, wo 'hängts' noch?
(Ich find das Problem gerade recht interessant, daher bleib ich da gerne mal ein bischen am Ball)
Gruß
Man könnte auch mit Rules
am 21.03.2011 - 14:39 Uhr
Man könnte auch mit Rules automatisch einen neuen Node anlegen lassen, wenn man einen passenden Auslöser findet. Oder man erstellt sich eben ein eigenes Modul dafür.
Danke schon Mal für Eure
am 21.03.2011 - 15:59 Uhr
Danke schon Mal für Eure Antworten. Über Views ist es so nicht einfach möglich. In der Node-Ansicht sind schon über die tpl.php etliche Views mit den verschiedensten Feldern eingebunden. Also möchte ich gerne weiter über das Template gehen.
Ich habe auch an Rules gedacht - nur weiss ich noch nicht genau wie. Beim Modul schreiben - wie müsste ich da vorgehen?
Zitat:Beim Modul schreiben -
am 21.03.2011 - 17:14 Uhr
Beim Modul schreiben - wie müsste ich da vorgehen?
Eigentlich gar nichts großes. Du könntest z.B. über hook_menu einen Pfad festlegen. Wenn man den aufruft, wird ein neuer Node angelegt. Das kann man dann natürlich noch entsprechend anpassen, wer auf den Pfad zugreifen darf usw.
Und wenn der Node gespeichert wurde, leitest du mittels drupal_goto() auf die Seiten-Ansicht des Nodes weiter.
Den Pfad könntest du dann überall verlinken, wo du willst.
Oder du erstellst über die Form-API ein Formular, welches nur aus einem Submit-Button besteht und in der Submit-Funktion wird dann der Node erstellt und darauf weitergeleitet. Dann klickt man auf den Button und schon gibt's einen neuen Node.
Den neuen Node könntest du dann über node_submit und node_save() speichern, hier kannst du sehen, wie:
http://drupal.org/node/602020
Das könnte dann z. B. so aussehen:
<?php
function mymodule_menu()
{
$items = array();
//Code für Anzeige des Einstellungs-Formulars
$items['mymodule/new_node'] = array(
'title' => 'Neuen Node erstellen',
'page callback' => 'mymodule_create_new_node',
'access arguments' => array('Mymodule - create new node'),
'type' => MENU_CALLBACK,
);
return $items;
}
function mymodule_perm()
{
return array('Mymodule - create new node');
}
function mymodule_create_new_node()
{
//Neuen Node erstellen und speichern
$newnode = new stdClass();
$newnode->title = 'Mein Titel';
$newnode->body = 'Mein Body';
global $user;
$newnode->uid = $user->uid;
$newnode->name = $user->name;
$newnode->type = 'my_nodetype'; // Node-Typ (Maschinenname)
$newNode->format = 2; // 1 means filtered html, 2 means full html, 3 is php
$newnode->status = 1; // 1 means published
$newnode->promote = 0; // 1 = auf Startseite veröffentlichen
$newnode = node_submit( $newnode );
node_save( $newnode );
//Node-ID des gerade gespeicherten Nodes ermitteln
$nid = $newnode->nid;
//Zum erstellten Node weiterleiten
drupal_goto("node/$nid");
}
?>
Mehr benötigt das Modul eigentlich nicht. Wenn man nun "mymodule/new_node" aufruft (und die Berechtigung dazu hat), wird ein neuer Node erstellt und auf diesen Node weitergeleitet.
Der Code wurde nicht von mir getestet!
Ich weiß auch nicht, wie sich das ganze verhält, wenn der Node noch CCK-Pflichtfelder haben sollte.
Edit: Hier noch eine gute Anleitung, wie man Module schreibt: http://www.drupalcenter.de/handbuch/15747
Sorry für die späte Antwort.
am 05.04.2011 - 14:57 Uhr
Sorry für die späte Antwort. Dein Tipp hat voll ins Schwarze getroffen. So haben wir's umgesetzt und es funktioniert. Wir belegen jetzt über die URL beim neu erstellten Node auch gleich das Nodereference Feld mit. Vielen Dank noch mal! Hat mir echt sehr viel geholfen!
Viele Grüße
Markus