Auswahlliste in Checkboxen umwandeln
Eingetragen von fawyd (23)
am 25.07.2008 - 09:34 Uhr in
am 25.07.2008 - 09:34 Uhr in
Hallo zusammen
Ich möchte gerne eine Auswahlliste in Checkboxen verwandeln. md hat mir jetzt geschrieben, dass dies via hook_form_alter() gelöst werden kann. Frage mich jetzt nur wie genau. Wo muss ich dies eintragen???
Danke für die Hilfe :-)
Gruss Fäbu
neu
Du kannst die Auswahlliste
Eingetragen von md (2824)
am 25.07.2008 - 10:04
Du kannst die Auswahlliste in einem kleinen Modul, mittels dem hook_form_alter(), in Checkboxen umwandeln.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
- Anmelden oder Registrieren um Kommentare zu schreiben
Leg im Verzeichnis
am 25.07.2008 - 10:54 Uhr
Leg im Verzeichnis sites/all/modules ein Verzeichnis mit dem Namen "custom" an.
Erzeuge dort zwei neue Dateien:
custom.module und custom.info
Schreib sowas in die custom.info
; $Id: custom.info,v 1.1 $
name = Custom
description = "Form changes"
version = 1.x-dev
und folgendes in die custom.module
<?php
function custom_form_alter($form_id, &$form) {
if ($form_id == 'user_edit') {
$form['Name der Profil Kategorie']['profile_feldname']['#type'] = 'checkboxes';
}
}
?>
Bei 'Name der Profil Kategorie' schreibst du den Namen der von dir angelegten Profilkategorie rein und bei 'profile_feldname' den Namen des gwünschten Felds.
Fertig.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
funktioniert nur teils...
am 25.07.2008 - 12:18 Uhr
Hey MD
Merci. Es funktioniert so halb. Also es werden alle definierten Felder erstellt. Nur sehe ich immer noch eine Auswahlliste (in welcher jetzt nur eines ausgewählt werden kann).
Ich habe deinen Code genau so geschrieben, lediglich das profile_feldname zu profile_testcheckboxen abgeändert.
Im Admin-Tool bin ich dann zu "Benutzerverwaltung --> Profile" und habe dort ein neues Feld (Format Listenauswahlfeld) mit dem gleichen Namen (profile_testcheckboxen) erstellt.
Hab ich da etwas falsch gemacht?
Gruss Fäbu
Wenn der Name der
am 25.07.2008 - 12:29 Uhr
Wenn der Name der Profilkategorie stimmt, sollte das funktionieren. Schreib dir zum testen mal an den Anfang der Funktion: var_dump($form)
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
immer noch nicht
am 25.07.2008 - 12:46 Uhr
Das funktioniert immer noch nicht...aber ich bin ein Hornochse. Es geht ja auch, wenn man einfach mehrere Checkboxen unter die gleiche Kategorie nimmt.
Sieht zwar noch nicht so schön aus, weil wenn man 10 davon macht, werden diese untereinander dargestellt anstelle von immer 2 nebeneinander.
Sorry, eigentlich habe ich jetzt genau das gefunden, was ich schon so lange gesucht habe. Man bin ich ein Trottel :-(
Was wäre denn der Unterschied mit deiner Variante gewesen, wenn sie geklappt hätte??
Klappen tut das schon. Schau
am 25.07.2008 - 13:11 Uhr
Klappen tut das schon. Schau mal hier: http://www.ourbania.de/urban-items
Der Filter auf der rechten Seite ist so entstanden. Ist eigentlich ein Exposed Filter einer View und somit eigentlich ein DropDown.
Der Unterschied ist, dass ich in der Programmierung viel einfacher darauf zugreifen kann, als auf 10 verschiedene Checkboxen. Außerdem ist es manchmal, wie bei Ourbania, einfach nötig.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
md schrieb Leg im
am 25.07.2008 - 13:28 Uhr
Leg im Verzeichnis sites/all/modules ein Verzeichnis mit dem Namen "custom" an.
Erzeuge dort zwei neue Dateien:
custom.module und custom.info
Schreib sowas in die custom.info
; $Id: custom.info,v 1.1 $
name = Custom
description = "Form changes"
version = 1.x-dev
und folgendes in die custom.module
<?php
var_dump($form)function custom_form_alter($form_id, &$form) {
if ($form_id == 'user_edit') {
$form['Name der Profil Kategorie']['profile_feldname']['#type'] = 'checkboxes';
}
}
?>
Bei 'Name der Profil Kategorie' schreibst du den Namen der von dir angelegten Profilkategorie rein und bei 'profile_feldname' den Namen des gwünschten Felds.
Fertig.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
habe genau den Code so wie oben..also nichts ist anders, ausser das Feld profile_testcheckboxen
das var_dump....habe ich auch hinzugefügt..doch keine Umwandlung in Checkboxen (bleibt also ein Listenauswahlfeld) :-(
Könnte es auch anders lösen, wie weiter oben beschrieben (einfach gleicher Kategorienname), aber ich möchte die Felder dann später auch einfach auslesen können... damit man auch danach suchen kann (also z.Bsp. wer hat auch noch gerne Bananen und Äpfel?
Hab ich was falsch gemacht? Gibt mir ja auch kein Fehler...
Komisch...
= Zeichen ein Fehler
am 25.07.2008 - 13:33 Uhr
könnte das = Zeichen der Schlüssel sein? Habs ausprobiert..aber passiert auch nichts.
Weil einmal ist es ein normales Gleich (=) und einmal ein doppeltes (==).
Oder könnte es daran liegen, dass ich das Ganze auf meinen Localhost teste (Xampp)?
fawyd schrieb könnte das =
am 25.07.2008 - 13:52 Uhr
könnte das = Zeichen der Schlüssel sein? Habs ausprobiert..aber passiert auch nichts.
Weil einmal ist es ein normales Gleich (=) und einmal ein doppeltes (==).
Oder könnte es daran liegen, dass ich das Ganze auf meinen Localhost teste (Xampp)?
== ist für einen Vergleich zweier Variablen = für eine Zuweisung.
Am Localhost liegt es definitiv nicht.
Blöde Frage: hast du das Modul auch aktiviert?
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
:-)
am 25.07.2008 - 13:56 Uhr
... ja soooo geil. Daran habe ich natürlich nicht mehr gedacht. Hätte ich eine Webcam könntest du jetzt meinen roten Kopf sehen, lol.
Danke jetzt funktioniert es wunderbar :-)
Jiiiiiipiiiiiiiiii
Mit den blöden Fragen lieg
am 25.07.2008 - 14:04 Uhr
Mit den blöden Fragen lieg ich meistens richtig ;-)
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
und doch noch 2 Probleme
am 25.07.2008 - 14:20 Uhr
Da stimmt halt der Spruch "Es gibt keine blöden Fragen" völlig.
Jetzt haben sich leider noch 2 weitere Probleme ergeben.
1. Ich habe das Feld so markiert, dass es in der Registration sichtbar ist...aber dort sollten halt auch Checkboxen kommen und nicht wieder eine Listenauswahl.
2. Im Profil ist das ganze dann nicht zu sehen, besser gesagt, wenn ich das Profil eines bestehenden Users ändern will (mit den neuen Feldern), dann bekomme ich folgende Fehlermeldung:
warning: mysql_real_escape_string() expects parameter 1 to be string, array given in C:\xampp\htdocs\drupal57\includes\database.mysql.inc on line 400.
Der Code, welcher bei der Line ist (fängt bei 395 an):
/**
* Prepare user input for use in a database query, preventing SQL injection attacks.
*/
function db_escape_string($text) {
global $active_db;
return mysql_real_escape_string($text, $active_db);
}
Zu Punkt 1: ergänze den
am 25.07.2008 - 14:40 Uhr
Zu Punkt 1:
ergänze den Code im Modul so:
<?php
if ($form_id == 'user_edit' or form_id = 'user_register) {
?>
Zu Punkt 2 kann ich nichts sagen, liegt aber nicht an dem custom.module
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
Resumée
am 29.07.2008 - 14:31 Uhr
Leider hat dies alles nicht so geklappt, wie ich mir dies vorgestellt habe. Deshalb habe ich jetzt das ganze Profil mit Advanced User Profile gemacht.
Hoffe aber bald auch anderen helfen zu können :-)
@md: Danke für deine Hilfe