Themen eines Node-Formulars
Eingetragen von benny0809 (53)
am 23.06.2010 - 12:19 Uhr in
am 23.06.2010 - 12:19 Uhr in
Hallo,
ich habe nach ein wenig suchen folgenden Artikel gefunden(http://www.drupalcenter.de/handbuch/20522), welcher mir eigentlich weiterhelfen sollte, jedoch weiß ich nicht in welche Dateien die einzelnen Code-Abschnitte einzufügen sind.
Ich weiß das dieser Teil:
<?php
// Die Namen aller verfügbaren Variablen ausgeben.
// drupal_set_message('<pre>'. var_export(array_keys(get_defined_vars()), 1) .'</pre>');
?>
<?php // Felder ausgeben. ?>
<?php // Ohne die preprocess müsste man "print drupal_render($form['title']);" schreiben. ?>
<?php print $field_title; ?>
<?php print $field_body; ?>
<div class="my-check">
<?php print $field_check; ?>
</div>
<div class="extra-fields">
<?php print $field_author; ?>
<?php print $field_revision; ?>
<?php print $field_menu; ?>
<?php print $field_comment_settings; ?>
</div>
<div class="form-buttons">
<?php print $buttons; ?>
</div>
<?php // Alle anderen Felder und Ausgaben nicht anzeigen (setzt natürlich ein "display: none;" für die CSS-Klasse voraus). ?>
<div class="hidden">
<?php print drupal_render($form); ?>
</div>
in die entsprechende .tpl.php-Datei einzubinden ist, jedoch bin ich mir bei den anderen beiden nicht sicher.
diesen teil habe ich in die template.php-datei eingefügt.
<?php
function garland_theme($existing, $type, $theme, $path) {
return array(
'article_node_form' => array(
'arguments' => array('form' => NULL),
'template' => 'article-node-form',
),
);
}
?>
Kann mir jemand weiterhelfen?
Gruß
Benny :)
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich hoffe, Du hast den
am 23.06.2010 - 12:41 Uhr
Ich hoffe, Du hast den Preprocess-Teil auch in Deine Template.php Datei von Deinem Theme (hier Garland) eingebunden, sonst geht das nämlich nicht. In der Funktion garland_theme, die Du hier zeigst steht explizit, daß Du für article_node_form (also das Formular zu Article) das Template article-node-form.tpl.php benutzen willst, und das ist Der obere Teil, den Du hier zeigst. Diese Datei muß neben einem Standard-Node-Template File (node.tpl.php) in Verzeichnis Deines Themes angelegt werden.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
ja, ich habe den
am 23.06.2010 - 13:06 Uhr
ja, ich habe den preprocess-teil nicht vergessen, jedoch weiß ich nicht in welche datei im einzelnen welcher teil eingebunden werden muss.
Also ich habe jetzt die einzelnen Code-Auszüge so eingebunden:
code-abschnitt 1 -> template.php
code-abschnitt 2 -> auch template.php ?
code-abschnitt 3 -> article_node_form.tpl.php
und danach den Cache geleert über /admin/settings/performance --> "Cache leeren"
Code-Abschnitt 1:
<?php
function garland_theme($existing, $type, $theme, $path) {
return array(
'article_node_form' => array(
'arguments' => array('form' => NULL),
'template' => 'article-node-form',
),
);
}
?>
Code-Abschnitt 2:
<?php
function garland_preprocess_article_node_form(&$vars) {
// drupal_set_message('<pre>'. print_r($vars['form'], 1) .'</pre>'); // Die Struktur des Formulars ansehen.
// Aus dem Submit-Button einen Image-Button machen.
$vars['form']['buttons']['submit']['#type'] = 'image_button';
$vars['form']['buttons']['submit']['#src'] = drupal_get_path('theme', 'garland') .'/images/submit.png';
// Länge des Titelfeldes ändern.
$vars['form']['title']['#size'] = 30;
// Beschreibung des Titelfeldes ändern.
$vars['form']['title']['#description'] = 'Der Titel des Artikels.';
// Das Titelfeld als einfache Variable ($field_title) im Template verfügbar machen.
$vars['field_title'] = drupal_render($vars['form']['title']);
// CCK Feld namens 'field_test' (eine einfache Checkbox).
// Titel verändern.
$vars['form']['field_test']['value']['#title'] = t('Happy?');
// Beschreibung verändern.
$vars['form']['field_test']['value']['#description'] = t('Click to select');
// Das Feld als einfache Variable ($field_check) im Template verfügbar machen.
$vars['field_check'] = drupal_render($vars['form']['field_test']);
// Body
// Anzahl der Zeilen im Body-Feld ändern.
$vars['form']['body_field']['body']['#rows'] = 10;
// Body-Feld als einfache Variable ($field_body) im Template verfügbar machen.
$vars['field_body'] = drupal_render($vars['form']['body_field']);
// Fieldsets als einfache Variablen im Template verfügbar machen.
$vars['field_menu'] = drupal_render($vars['form']['menu']);
$vars['field_revision'] = drupal_render($vars['form']['revision_information']);
$vars['field_author'] = drupal_render($vars['form']['author']);
$vars['field_options'] = drupal_render($vars['form']['options']);
$vars['field_comment_settings'] = drupal_render($vars['form']['comment_settings']);
// Schaltflächen.
$vars['buttons'] = drupal_render($vars['form']['buttons']);
}
?>
Code-Abschnitt 3:
<?php
// Die Namen aller verfügbaren Variablen ausgeben.
// drupal_set_message('<pre>'. var_export(array_keys(get_defined_vars()), 1) .'</pre>');
?>
<?php // Felder ausgeben. ?>
<?php // Ohne die preprocess müsste man "print drupal_render($form['title']);" schreiben. ?>
<?php print $field_title; ?>
<?php print $field_body; ?>
<div class="my-check">
<?php print $field_check; ?>
</div>
<div class="extra-fields">
<?php print $field_author; ?>
<?php print $field_revision; ?>
<?php print $field_menu; ?>
<?php print $field_comment_settings; ?>
</div>
<div class="form-buttons">
<?php print $buttons; ?>
</div>
<?php // Alle anderen Felder und Ausgaben nicht anzeigen (setzt natürlich ein "display: none;" für die CSS-Klasse voraus). ?>
<div class="hidden">
<?php print drupal_render($form); ?>
</div>
leider hat es immer noch nicht geklappt,
danke für deine schnelle Hilfe!
Gruß
Benny