(gelöst) Add Content Formular in View anzeigen?
am 01.04.2011 - 21:05 Uhr in
Hallo zusammen,
ich möchte gerne einen ADD/CONTENT (also der Moment bzw. das Eingabe-Formular erscheint, die Felder habe ich vorher definiert) in einem View anzeigen... damit ich dann nachher davon einen Block erstellen kann, den eben nur registrierte Benutzer sehen können. Dies kann man ja einfach bei den Blöcken dann einstellen...
Wie geht das? Ich komme dabei irgendwie nicht weiter... Ich finde immer nur Wege, wie ich fertige Nodes in einen View einbinden kann.
Mein Ziel:
der registrierte User soll direkt das Eingabeformular auf einer beliebigen Seite sehen (einfache HTML SEITE, und unten drunter wollte ich den View anhängen) (von einem von mir definierten Content Type) und der unregistrierte soll dann eben einen anderen View sehen und da steht dann: bitte erst registrieren, dann sehen sie das Formular.
Danke!
- Anmelden oder Registrieren um Kommentare zu schreiben
Create Content Formular in View anzeigen?
am 02.04.2011 - 18:26 Uhr
?
Dieser Code muss in das
am 02.04.2011 - 18:39 Uhr
Dieser Code muss in das Template des Views an die passende Stelle gesetzt werden ... dieser ruft das Node-Add-Form auf .... "bewertungen" heißt der Inhaltstyp bei mir - Du musst dort den Namen Deines Inhaltstyps einsetzen.
Die If-Anweisung musst Du Deinen Wünschen entsprechend anpassen.
<?php
global $user;
if ($user->uid != arg(1) && arg(0) == 'user') {
module_load_include('inc', 'node', 'node.pages');
if (node_access('create', 'bewertungen')) {
$node = array('uid' => $user->uid, 'name' => (isset($user->name) ? $user->name : ''), 'type' => 'bewertungen', 'language' => '');
print drupal_get_form('bewertungen_node_form', $node);
}
}
?>
Drupal rockt!!!
Lonit for president!
am 02.04.2011 - 22:23 Uhr
Mensch Matthias!
Das ist echt super! Vielen Dank für Deine Hilfe!
Ich habe Deinen Code einfach in den Kopfbereich (php eingeschaltet) kopiert und Deine Bewertungen gegen den Namen meines Inhaltstypen getauscht... auch unten bei bewertungen_node_form
Wenn ich den View nun speichern will, dann bekomme ich jedoch folgenden Hinweis:
* Die Anzeige „Standards“ verwendet Felder, aber es sind keine dafür angegeben oder alle ausgeschlossen.
* Die Anzeige „Seite“ verwendet Felder, aber es sind keine dafür angegeben oder alle ausgeschlossen.
* Die Anzeige „Block“ verwendet Felder, aber es sind keine dafür angegeben oder alle ausgeschlossen.
Ich kann den View dann nicht speichern?! Was mache ich falsch?
Liebe Grüße und Vielen Dank!!!
Mensch Bea,Du solltest Dich
am 02.04.2011 - 23:21 Uhr
Bea,
Du solltest Dich erstmal grundsätzlich mit Views beschäftigen.
Ein View kann, wie die Fehlermeldung ja auch aussagt, nur gespeichert werden wenn ein "Feld" angegeben wurde. Ein "Feld" wählst Du unter "Felder" aus. Logisch oder?
Ein View ohne Felder kann nicht gespeichert werden und ist ja auch sinnfrei oder wozu soll der dann gut sein? Hast Du noch nie einen View angelegt?
Die Fehlermeldung hat also nicht mit dem PHP-Code zu tun sondern mit dem leeren View.
Edit: Wenn Du das Add-Form irgenwo auf Deiner Seite haben willst, leg Dir einfach einen Block an (Fliter: PHP) als Blockinhalt kommt der PHP-Code rein (angepasst auf Deine Bedürfnisse) und dann kannst Du über die Sichtbarkeisteinstellunge angeben wo der Block angezeigt werden soll. Einen View brauchst Du dazu nicht.
Drupal rockt!!!
Lieber Lonit, ja, ich kenne
am 03.04.2011 - 13:46 Uhr
Lieber Lonit,
ja, ich kenne Views schon einwenig und das war ja genau mein Problem...ich wusste nicht welche Felder ich nehmen sollte, denn es gibt ja noch gar keine..
Ich habe auch schon views gebaut, sogar schon ne google maps karte! Aber ich bin nicht so fit wie Du! Vor allem mit dem PHP!
Ich habe nun einen BLOCK gebaut (und keinen View) und habe in den Blockinhalt (mit Maximalem Filter) Deinen Code eingebaut. Meinen Inhaltstypen nennen wir mal "bea"...
<?php
global $user;
if ($user->uid != arg(1) && arg(0) == 'user') {
module_load_include('inc', 'node', 'node.pages');
if (node_access('create', 'bea')) {
$node = array('uid' => $user->uid, 'name' => (isset($user->name) ? $user->name : ''), 'type' => 'bea', 'language' => '');
print drupal_get_form('bea_node_form', $node);
}
}
?>
Nun klappt es leider immer noch nicht...Ich habe alles eingestellt: Block unter Inhalt, auf einer bestimmten Seite und zu sehen nur für authentic USER. So soll es sein...
Jetzt "printed" mir Drupal aber einfach nur den Code aus, und nicht das Formular?! Was habe ich denn jetzt schon wieder falsch gemacht?
DANKE!
Block -> Eingabeformat ->
am 03.04.2011 - 14:16 Uhr
Block -> Eingabeformat -> PHP-Code
Nachtrag. Wenn unter Eingabeformat kein "Php-Code" verfügbar ist, musst Du es zuerst unter "Module" aktivieren. Das Modul nennt sich logischerweise "PHP filter".
Drupal rockt!!!
Hallo Lonit, ja, das Modul
am 03.04.2011 - 19:13 Uhr
Hallo Lonit,
ja, das Modul habe ich schon installiert und auch aktiviert.
Wenn ich unter Block -> Eingabeformat -> PHP-Code das Eingabeformat auf PHP Code stelle erscheint gar nichts...
Ich hatte mir mal einen "Alles geht" Filer angelegt, wenn ich diesen einstelle, da kommt nur der Code?!
Irgendein Punkt ist noch falsch?!
Also, ich als Admin sehe das Formular nicht, obwohl es wie oben beschrieben eingestellt ist.
Hast Du noch eine Idee waron es liegen könnte?
Berechtigungen etc sind alle vergeben: ich darf den Content Type erstellen und auch die Felder davon sehen!
Danke!
Bea, das liegt sicher an der
am 03.04.2011 - 19:21 Uhr
Bea,
das liegt sicher an der ersten If-Anweisung.
Wo blendest Du den Block denn ein?
Auf einem Node? Auf einem User-Profile?
Lasse die If-Anweisung erstmal weg - Du brauchst Du ja eigentlich auch garnicht da Du die Sichtbarkeit sowieso über die Blockeinstellungen regelst.
Nimm folgenden Code .... (ohne erste IF-Anweisung)
<?php
global $user;
module_load_include('inc', 'node', 'node.pages');
if (node_access('create', 'bea')) {
$node = array('uid' => $user->uid, 'name' => (isset($user->name) ? $user->name : ''), 'type' => 'bea', 'language' => '');
print drupal_get_form('bea_node_form', $node);
}
?>
Jetzt müsste es klappen.
Drupal rockt!!!
YEEES!!!
am 03.04.2011 - 19:52 Uhr
Es hat geklappt!
Ich blende den Block unter einer einfach Node ein... Ohne die IF Anweisung zeigt Drupal es an! Genial!
Jetzt baue ich noch einen einfachen Block mit einer Node, den dann die nicht registrierten Benutzer sehen, wo steht: Erst registrieren, dann kommt das Formular! :)
Cool, ich konnte meine Idee umsetzen: DANK LONIT!!!
Es ist echt toll, wie Du einem hier hilfst! Hast Du auch eine Internetseite, wo ich mit PayPAL Dir etwas für Deine Mühen überweisen kann? Ich würde es gerne machen, um mich zu bedanken!
Einen schönen Sonntag noch!!!
Hi Bea, danke für das Angebot
am 03.04.2011 - 19:56 Uhr
Hi Bea,
danke für das Angebot aber per Paypal musst Du mir nichts überweisen.
Falls Du aber eine Webseite hast, kannst Du ein Projekt von mir verlinken. Links sind mir wichtiger ;-)
Falls das geht, sollten wir uns per PM austauschen.
Gruß Matthias
Drupal rockt!!!
Das geht natürlich! Mail mir
am 03.04.2011 - 20:00 Uhr
Das geht natürlich! Mail mir Deine Seite und ich verlinke schnellstmöglich!
Jetzt ist mir der Text der Node irgendwie nach oben gerutscht... Hatte ich vorher alles ausgerichtet: Text und Bilder...
Könnte dies eventuell von dem Block kommen?
Ich mach Schluss, schönes WE noch und danke nochmals!