Content Profile Formular themen klappt nicht
am 12.10.2010 - 16:30 Uhr in
Hallo,
ich würde gerne mein Content Profile Formular themen. Dieses heißt "person_common" und wird auch bei der Registrierung benutzt.
Das Problem ist, ich bekomme es nach dieser Anleitung gar nicht erst ans laufen.
Falls ich es mit eurer Hilfe doch ans laufen bekomme, tut sich die nächste Frage auf: Bei der Registrierung werden einige Felder ausgeblendet die für angemeldete User sichtbar sind.
Wie kann ich das dem gethemten Formular beibringen?
<?php
Folgenden Code habe ich in die template geschrieben:
function purple_theme($existing, $type, $theme, $path) {
return array(
'person_common_node_form' => array(
'arguments' => array('form' => NULL),
'template' => 'form_person_common',
),
);
} ?>
Wobei mein Theme "purple" heißt und die angelegte Template-Datei heißt "form_person_common.tpl.php". Im Template steht bisher nur <?php print drupal_render($form); ?>
. Aber bei Aufruf wird nach wie vor das Standardformular angezeigt (auch nach leeren des Caches).
Ich benutze Autoassignrole, kann es vielleicht daran liegen?
Außerdem benutze ich die Funktion
function purple_preprocess_node(&$vars) {
$vars['template_files'][] = 'node-'. $vars['node']->nid;
}
Kann es damit was zu tun haben, wenn ja wie kann ich es lauffähig machen? Letztere Funktion wird benötigt damit ich 2 nodes themen kann.
Vielen Dank,
viele Grüße Stefan
- Anmelden oder Registrieren um Kommentare zu schreiben
Zu Deiner Frage kann ich
am 12.10.2010 - 17:20 Uhr
Zu Deiner Frage kann ich leider nichts sagen aber es gibt das Modul http://drupal.org/project/node_form_template (das nutze ich)
Nach dem Aktivieren, kopiert man die Bsp.-Datei node-form.tpl.php in sein Template-Ordner - macht ne Kopie z.B. node-form-blog.tpl.php und schon kann das Themen des Formulars losgehen.
Beispiele - zum Aufruf der Felder - sind in der node-form.tpl.php enthalten.
Will man andere Content-Typen themen, macht man wieder eine Kopie zu z.B. node-form-gaestebuch.tpl.php usw.
Funktioniert perfekt.
Drupal rockt!!!
Das Modul kannte ich noch gar
am 12.10.2010 - 18:22 Uhr
Das Modul kannte ich noch gar nicht. Vielen Dank für den Tipp.
Funktioniert bei "normalen" Inhaltstypen perfekt.
Aber bei meinem Content Profile will es einfach nicht funktionieren :( Ob es am Content Profile, Content Access, Location-Modul liegt....ich werde weiter probieren und bin für jeden Tipp dankbar (entweder per Hand oder mit diesem Modul, hauptsache ich bekomme das Registrierungsformular gethemt).
Viele Grüße
Stefan
Wenn der Name des
am 12.10.2010 - 18:32 Uhr
Wenn der Name des Content-Profiles aus 2 oder mehr Wörtern besteht, muss man das Form-Template so schreiben.
node-form-person_common.tpl.php oder node-form-eins_zwei_drei.tpl.php
Schau bitte nach ob Du das so geschrieben hast.
Content Access oder das Location-Modul hat damit nichts zu tun.
Drupal rockt!!!
Danke für die weitere
am 12.10.2010 - 19:52 Uhr
Danke für die weitere Hilfe.
Das habe ich auch getan.
Wenn ich eingeloggt bin und das entsprechende Formular aufrufe, sehe ich auch eine Änderung. Dann klappt also das Theming.
Nur wenn ich als Gast das Formular aufrufe (ist auch als Registrierungsformular gedacht), sehe ich keine Änderung.
Falls du/jemand ne Idee hat, gerne her damit. Ich probier weiter...
Vielen Dank.
PS. Vielleicht hängt das irgendwie mit autoassignrole zusammen, dass Modul verwende ich auch.
Ich habe jetzt
am 13.10.2010 - 11:09 Uhr
Ich habe jetzt herausgefunden, dass die Registrierung wohl ausschließlich mit der user-register.tpl.php gethemt werden kann.
Da ich aber rollenbasierte Registrierungsformulare habe (autoassignrole by path), muss ich die user-register.tpl.php für alle Rollen benutzen.
Ist meine Vorgehensweise okay?
Template.php:
function purple_theme($existing, $type, $theme, $path) {
return array(
// tell Drupal what template to use for the user register form
'user_register' => array(
'arguments' => array('form' => NULL),
'template' => 'user-register', // this is the name of the template
),
);
}
function purple_preprocess_user_register(&$vars) {
// drupal_set_message('<pre>'. print_r($vars['form'], 1) .'</pre>'); // Die Struktur des Formulars ansehen.
$vars['form']['mail']['#size'] = 30;
$vars['form']['conf_mail']['#size'] = 30;
}
user-register.tpl.php
Ich frage das Argument ab und zeige ensprechend der Rolle die einzelnen Felder mittels
print drupal_render($form['pass']);
print drupal_render($form['mail']);
Ist das okay so?
In dem 1. Beispiel wird der Code
<div class="hidden">
<?php print drupal_render($form); ?>
</div>
zusätzlich im Template eingefügt. MUSS ich das auch einfügen, wenn ja warum?
Vielen Dank,
viele Grüße
Stefan