CCK-Feld vor Eingabe festsetzen
Eingetragen von TobiasR (134)
am 16.09.2009 - 17:25 Uhr in
am 16.09.2009 - 17:25 Uhr in
Hallo,
ich habe mit CCK einen Content-Type angelegt, wo ein Benutzer über ein User Reference-Feld eingeben werden muss.
Jetzt möchte ich, dass dieses Feld nicht bei der Erstellung eines Inhaltes ausgefüllt wird, sondern VORHER festgesetzt wird. Der Wert (also die User-ID) müsste vorher irgendwie bekannt gemacht werden (z.B. über die URL, o.ä.).
Für ein Node-Reference-Feld gibt es genau so ein Modul (Node Reference URL Widget).
Weiß jemand, wie man dies für Benutzer realisieren könnte?
Viele Grüße,
Tobias
- Anmelden oder Registrieren um Kommentare zu schreiben
userreference
am 17.09.2009 - 07:59 Uhr
Moin.
Ich hab mir gerade mal nodereference_url angeschaut, ob man das evtl. auf userreference umbauen könnte. Ds funktioniert leider nicht.
Jedenfalls nicht so, wie Du das gerne hättest.
Einfachste Möglichkeit: schreib Dir ein kleines Modul, welches anhand der URL das Feld einfach setzt.
Beispiel ("Pseudocode"):
<?php
function userreference_url_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'dingens_node_form') {
$args = arg(); // Annahme: "node/x/user/y"
if ((arg(2) == 'user') && is_numeric(arg(3))) {
$uid = arg(3);
// Die korrekte Struktur des Feldes muss natürlich noch ermittelt werden.
$form['cckuserrefence_field_name']['#default_value'] = $uid;
}
}
}
?>
Son in etwa könnte das funktionieren. Wenn man dann "node/5/user/10" aufruft, wird der Wert "10" als Standardwert für das userreference-Feld verwendent.
hth,
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hallo Stefan, so etwas habe
am 21.09.2009 - 02:59 Uhr
Hallo Stefan,
so etwas habe schon grob hinbekommen (zumindest ähnlich). Das schöne am nodereference_url-Modul ist, dass das Feld nachher in der Form nicht mehr editierbar ist bzw. durch reinen Text ersetzt wurde. Wie bekomme ich das hin?
Viele Grüße,
Tobias
fallback
am 21.09.2009 - 06:49 Uhr
Moin.
Schau mal in nodereference_url.module in die Funktion
nodereference_url_widget
. Per default wird der Wert einfach ausgegeben (kein Feld, sondern'#type' => 'value'
).Nur wenn kein Wert in der URL übergeben wurde, wird das Fallback-Verhalten ausgelöst und eventuell ein Feld vom Typ "nodereference_select" bzw. "nodereference_autocomplete" erstellt.
Also, Standard ist
'#type' => 'value'
; wenn Wert nicht vorhanden ist, auf'#type' => 'select'
(oder was sonst gewünscht ist) switchen.Das könntest Du auch in einer
hook_form_alter
machen (falls Du Dir gerade keinen neuen Feldtypen basteln möchtest).hth,
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Klappt schon ganz gut
am 25.09.2009 - 01:29 Uhr
Hallo Stefan,
das mit dem '#type' => 'value'; klappt schon sehr gut, hab es mit hook_form_alter umgesetzt.
Jetzt stehe ich noch vor dem Problem, dass ich im Formular nicht den ausgwählten Wert angezeigt bekomme (er wird aber korrekt in die DB geschrieben und nachher im node ausgegeben). Wie bekomme ich das hin?
Ich blicke da irgendwie nicht so ganz durch, was in dem Menü mit den widegts gemacht wird...
Viele Grüße,
Tobias