Radio Buttons für die User Profile
am 13.05.2009 - 11:11 Uhr in
Für die Benutzer-Profile suche ich Radio Buttons, zB für männlich, weiblich oder andere Auswahlen. Trotz suche auf Drupal.org nicht gefunden, wie ich es lösen kann.
Hat jemand mal was gesehen oder eine Lösung. Standardmäßig ist es nicht machbar in Version 6.
Gruss
Katasun
- Anmelden oder Registrieren um Kommentare zu schreiben

Hi, schau dir das hier mal
am 13.05.2009 - 11:32 Uhr
Hi,
schau dir das hier mal an und benutze CCK.
http://drupal.org/project/content_profile
oder benutz
http://api.drupal.org/api/function/hook_form_alter/6
---
Viele Grüße,
Kars-T
Radio Button in den Profilen
am 14.05.2009 - 21:37 Uhr
Danke für die Antwort, ich habe einiges gelesen und ausprobiert, besonders auf drupal.org und leider geht es mir so wie vielen Anderen.
user_profile und hook_form_alter verursachen wohl besondere Schwierigkeiten.
Auch in Drupal 7 gibt es bis jetzt noch keine Radio Button in den User-Profilen, ist aber in der ToDo Liste.
Wenn ich aber was übersehen haben sollte, immer her damit.
Gruss an Hamburg
Katasun
Sie sind quasi das Template der Optionsliste.
am 14.05.2009 - 22:56 Uhr
user_profile und hook_form_alter verursachen wohl besondere Schwierigkeiten
Das sehe ich anders.
Wieso schwierig?
Erstelle im Profil eine Select Liste. Die Category ist "blabla" und das Feld heisst "profile_test_select" Dabei stellt Du Dir vor es waeren Radios.
In Deinem Modulcode musst Du nur noch den Typ select in radios umbenennen.
Schnelles fiktives ungetestetes Snipped um das Formelement bei der "Create new account" Seite zu aendern.
<?php
/**
* Implementation of hook_form_alter().
*/
function user_more_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'user_register':
$form['blabla']['profile_test_select']['#type'] = 'radios';
}
return $form;
}
?>
Und schon ist aus der Selectliste eine Ansammlung von Radios geworden.
Sollte funktionieren da sich die Radios im Rest des Formelementes ebenso wie Select verhalten. Letzendlich steckt hinter beiden das Gleiche: Eine Optionsliste.
Diese Optionsliste wird eben nur mal so oder so angezeigt. Selbst beim Speichern sollte es keine Probleme geben. Eine Selectliste speichert ebenso wie Radiobuttons die Optionsliste aus einem Array bzw. in ein Array.
Oder anders formuliert.
Fuer das Array der Optionsliste sind Radios oder eine Selectliste nur 2 verschiedene Erscheinungsformen um eine Option auswaehlen zu koennen. Sie sind quasi das Template der Optionsliste.
------------------------
Quiptime Group
fiktives Snipped getestet. Ergebnis: Radios funktionieren
am 14.05.2009 - 23:15 Uhr
So, eben habe ich mein schnelles fiktives Snipped getestet. Ergebnis:
Radios funktionieren so wie von mir beschrieben.
Ich kann auch nicht nachvollziehen das Du auf keine Loesung gestossen bist bei Deiner Suche. Mein Code zeigt sie auf jeden Fall.
Edit.
Das dazu wenn Du unbedingt mit dem Coreprofile Deine Userprofile pimpen willst.
Wie Kars-T bereits als Hinweis formuliert hat. Nimm "Content Profile". Damit entgehst Du einem eigenen Modul und den Hooks. Obwohl es nur einer ist und nicht mal so schwer.
------------------------
Quiptime Group
Alles probiert, aber immer noch ohne Wirkung
am 16.05.2009 - 07:56 Uhr
habe ich probiert, das Modul wird erkannt und auch der Code ausgeführt aber eine Anzeige eines Radio-Buttons habe ich noch immer nicht.
Woran kann es liegen, beim Neuanlegen eines Users wird kein Radio-Button angezeigt, beim Auflisten von Users wird auch kein Radio-Button angezeigt.
Es ist mir auch klar, das es so gehen sollte.
Wie kann ich meinen Fehler aufspüren, welche Variablen muss ich auslesen, in welchem Status muss sich die Form befinden?
Würd mich freuen, einen Tipp zu bekommen.
Gruss
Katasun
HAst du jetzt Content
am 16.05.2009 - 10:05 Uhr
HAst du jetzt Content Profile benutzt oder gehst du immer noch über das Kern-Module Profile? Für letzteres gibt es doch sicherlich auch Module, welches die Funktionalität erweitert.
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).
Kern-Module Profil
am 16.05.2009 - 10:36 Uhr
Grüße erstmal,
habe das mit den Kernmodulen probiert, also ein neues Modul erstellt und die Funktion eingetragen. Aber wie auch immer, bei mir prickelt es nicht.
Auch
$fields['Category name']['field_name']['#type'] = 'radios';
mit den entsprechenden Werten in Kategorie und Fieldname in
function profile_form_profile in 'modules/profile/profile.module' vor
return $fields
hat keine Änderung erbracht.
Da muss ich doch auf einem völlig falschen Pfad wandeln, wenn ich es so nicht ansprechen kann.
Für meine Idee würden halt die "Radio" Knöpfe völlig reichen.
Aber ich werde mich jetzt mal an die Idee mit CCK machen, vielleicht hat das bei der späteren Entwicklung noch Vorteile, Änderungswünsche kommmen ja immer nachdem alles fertig ist.
Gruss
Katasun
Radio Button im modul Content_profile
am 16.05.2009 - 11:00 Uhr
Habe jetzt das Modul content_profile und das modul cck installiert.
Ich kann auch hier Gruppen und Felder anlegen, aber ein Radiobutton kann ich auch hier nicht darstellen. Liegt das am Theme das ich verwende? Garland? oder eine Einstellung, die ich nicht kenne oder übersehen habe? Ich habe jetzt auch keine Idee mehr, wo ich suchen muss.
Gruss
Katasun
Du vom CCK Modul das "Option
am 16.05.2009 - 11:12 Uhr
Du musst vom CCK Modul das "Option Widgets" Modul aktivieren. Und die Steuerelemente heißen dann "Ankreuzfelder/..."
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).
Beispielsweise: profile_gender
am 16.05.2009 - 11:35 Uhr
Um im Hook form_alter das Feld mit dem zu Radios zu aendernden Typ zu ermitteln beginnt die Aufgabe bereits beim Erstellen dieses Feldes im Coreprofil. Die Coreprofil-Felder gehoeren immer zu einer Category. Weiterhin bekommen alle Felder einen uniquen Bezeichner. Empfohlen wird dabei der prefix profile_ und diesen prefix sollte man auch verwenden bei der Bildung der Bezeichner der Felder.
Beispielsweise: profile_gender
Die Category zu dem dieses Feld gehoert ist beispielsweise: address
Damit hat man 2 konkrete Bezeichner mit denen man im Form-Array im Hook form_alter arbeiten kann.
Mit obigen Bezeichnern spricht man sein Feld so an:
<?php
/**
* Implementation of hook_form_alter().
*/
function my_module_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'user_register':
$form['address']['profile_gender']['#type'] = 'radios';
break;
}
return $form;
}
?>
Einfache Loesung aber das ist alles.
Nun ist das Ganze irgendwie schon haendisch.
Denn wenn man im Coreprofil den Feldnamen oder seine Category-Zuordnung aendert dann funktioniert der form-alter nicht mehr. Man kann die Prozedur auch "unabhaengiger" gestalten so das sich Aenderungen im Coreprofil nicht sofort und immer im form_alter stoerend auswirken aber dazu gehoert mehr Programmieraufwand.
Zu Beachten ist lediglich noch das wenn das im Coreprofil erstellte Listen-Feld nicht required ist man nach der Typaenderung zu radios einen 1. Radio-button hat den man nicht braucht.
PS
Wenn man die Namen seiner zusaetzlichen Profile Categorien uebersetzbar machen will bietet sich im form_alte die Moeglichkeit:
<?php
/**
* Implementation of hook_form_alter().
*/
function my_module_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'user_register':
$form['address']['profile_gender']['#type'] = 'radios';
// A translatable Core Profile category.
$form['address']['#title'] = t($form['address']['#title']);
break;
}
return $form;
}
?>
Auch das ist nur ein einfaches Beispiel fuer eine Category. Man kann das auch "automatisieren" um alle existierenden Categorien uebersetzbar zu machen.
------------------------
Quiptime Group
Wie kann ich den Fehler finden?
am 16.05.2009 - 23:59 Uhr
Danke für den Code. Ich habe ein Modul erstellt mit einem File
custom_profile.info
; $Id: custom_profil.info,v 1.1 $
name = Custom_profil
description = Form changes to radios
package = Core - optional
version = VERSION
core = 6.x
; Information added by drupal.org packaging script on 2009-05-13
version = "6.12"
project = "drupal"
datestamp = "1242243950"
und ein File
custom_profile.module
mit dem Inhalt deines Codes
<?php
/**
* Implementation of hook_form_alter()
*/
function custom_module_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'user_register':
$form['aaa']['profile_aaa']['#type'] = 'radios';
break;
}
return $form;
}
?>
In den Profilen habe ich eine Kategorie aaa und ein Feld profile_aaa erstellt mit type selection, Listenauswahlfeld, als Werte habe ich a, b,c,d eingegeben. Wird alles wie gewünscht dargestellt, bis auf die "Radios". Ist Drupal Version 6.
Wo könnte ich mir Variablen ausgeben lassen, die mich weiterbringen. Den Code verstehe ich, auch was passieren soll. Aber warum es bei mir nicht funktioniert, fehlt mir noch.
Gruss
Katasun
gelöst
am 19.05.2009 - 19:46 Uhr
nach erneutem Test, sind auch meine geliebten Raiobuttons erschienen.
Vielen Dank
Katasun