Startseite
  • » Home
  • » Handbuch & FAQ
  • » Showroom
  • » Forum
  • » Drupalchannel
  • » Übersetzungsserver
  • » Suche
Startseite › Benutzerhandbuch › Fortgeschrittene › Tutorials & How To's - Tipps & Tricks ›

Themen eines Node-Formulars

Eingetragen von stBorchert (4318) am 03.08.2009 - 11:50 Uhr in
  • Drupal 6.x

Hin und wieder kommt es vor, dass man das Formular eines bestimmten Inhaltstypen ein wenig umstrukturieren möchte.
Dies lässt sich mit ein wenig Code-Einsatz relativ einfach bewerkstelligen.

In diesem Tutorial gehe ich von "Garland" als Theme und einem Inhaltstyp namens "article" aus.

Zuerst müssen wir Drupal mitteilen, dass wir die Gestaltung des entsprechenden Formulars selbst in die Hand nehmen wollen. Dazu müssen wir in der template.php unseres Themes eine Instanz der Funktion hook_theme erstellen (bzw. eine vorhandene Instanz erweitern):

<?php
function garland_theme($existing, $type, $theme, $path) {
  return array(
   
'article_node_form' => array(
     
'arguments' => array('form' => NULL),
     
'template' => 'article-node-form',
    ),
  );
}
?>

Mit diesem Code sagen wir Drupal jetzt, dass die Darstellung des Formulars von nun an über ein Template namens "article-node-form.tpl.php" erfolgen soll. Das Template bekommt (sinnigerweise) als Argument die Daten des Formularobjektes ($form) übergeben.

Bevor wir jetzt das Template erstellen, wollen wir vielleicht noch ein paar der verfügbaren Variablen oder auch einige Elemente des Formulars verändern.
Dies geschieht in einer entsprechenden preprocess Funktion:

<?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']);
}
?>

Jetzt können wir das Template erstellen.

<?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>

Und schon ist das Node-Formular für diesen Inhaltstypen ein wenig umstrukturiert.

‹ Portierung eine Themes von openwebdesign.org nach oben Titel mit Stil ›

Danke Stefan, das ist selbst

Eingetragen von aschiwi (957)
am 15.09.2009 - 18:22 Uhr

Danke Stefan, das ist selbst für Nichtprogrammierer gut erklärt :-)
Gerade heute wollte ich es ausprobieren, dann fand ich allerdings das recht neue Modul "Interface", was obige Prozedur vereinfacht und auch sehr stark beschleunigt. Ich habe es probiert und bin sehr zufrieden.

http://www.twitter.com/aschiwi

http://www.twitter.com/aschiwi

undpaul

Interface modul

Eingetragen von md (3609)
am 15.09.2009 - 18:42 Uhr

Das ist ja ein Wahnsinn!

vg
--
md - DrupalCenter.de

mdwp*

vg
md - DrupalCenter.de

mdwp* - Das Drupal Magazin

Drupal 7 Demo-Website

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Node-Speichern wird mit zunehmender Laufzeit des Servers langsam
  • Fatal error: Maximum execution time of 30 seconds exceeded in ....../includes/file.inc on line 934
  • Probleme bei der Installation von memcache
  • Treffen in Düsseldorf - 8.9. und 22.9.2010
  • [erledigt] id und klassen bei blöcken
  • Anzahl der erstellten Nodes eines bestimmten Contenttypes für bestimmte Rollen limitieren
  • Seiten kombinieren
  • Drupal Übersetzung Englisch Deutsch
  • Fragen vor Umstieg zu Drupal 6 von Joomla
  • Lightbox-2 Inputfilter
  • Kostenplfichtige Useraccounts
  • Such-Index: Problem mit ISBNs / großen Zahlen
Weiter

Neue Kommentare

  • Zum einen würde ich den
    vor 4 Stunden 5 Minuten
  • Das Aktivieren von Modulen
    vor 4 Stunden 12 Minuten
  • Lies dich mal in Ruhe ein,
    vor 4 Stunden 16 Minuten
  • Hallo, das heißt, dass Dein
    vor 4 Stunden 23 Minuten
  • danke für den tip!
    vor 4 Stunden 51 Minuten
  • Nur ein Tip, aber ich würde
    vor 5 Stunden 17 Minuten
  • Ich habe noch das Problem,
    vor 5 Stunden 12 Minuten
  • E-Fee schrieb ...Entweder man
    vor 5 Stunden 35 Minuten
  • Tja, was heiß quasi Standard?
    vor 5 Stunden 50 Minuten
  • Hallo E-Fee, nach dem was Du
    vor 6 Stunden 7 Minuten

Statistik

Beiträge im Forum: 130977
Registrierte User: 11264

Neue User:

  • BAue
  • CodeFlatter
  • michastock

» Alle User anzeigen

User nach Punkten sortiert:
quiptime4714
stBorchert4318
md3609
Tobias Bähr3607
bv3490
Alexander Langer2737
dereine2604
pebosi2490
Thoor2223
rapsli1505
» User nach Punkten
Zur Zeit sind 2 User und 25 Gäste online.

Benutzer online

  • Tobias Bähr
  • t0b1

Benutzerhandbuch

  • FAQ - Häufig gestellte Fragen.
  • Links & Downloads
  • Über Drupalcenter.de und das deutschsprachige Benutzerhandbuch
  • Über Drupal
  • Einsteiger
  • Fortgeschrittene
    • Best Practice - Drupal Sites - Guidelines
    • Die beliebtesten Themes und Module
    • Drupal Module
    • Tutorials & How To's - Tipps & Tricks
      • Kurztipps - Dinge die Stunden sparen können.
      • Notfallpläne - Tipps die Deine Drupalinstallation retten können
      • Anleitung zur Erstellung eines einfachen Kontaktformulars
      • Arbeiten mit dem Drupal Taxonomie-System [beinhaltet veraltete Inhalte]
      • Bearbeiten-Tab zu jeden Block hinzufügen
      • Block View mit Argument
      • Das Tagebuch einer Site
      • Drupal 6 - Automatisch unterschiedliche Bildgröße bei Teaser und Artikel
      • Drupal 6 - Eigene CSS Datei in ein Theme integrieren
      • Drupal 6 - Einfache Bildergalerie mit Image und Lightbox2
      • Drupal 6 - Einrichten eines Kalenders
      • Drupal 6 - Google Adsense ohne Zusatzmodul einbinden
      • Drupal 6 - Hauptnavigation mit DropDown Effekt ab Ebene Zwei
      • Drupal 6 - ImageMagick mit XAMPP Lite nutzen
      • Drupal 6 - Imagefield mit Imagecache und Colorbox
      • Drupal 6 - Installation FCK Editor
      • Drupal 6 - Installieren der WYSIWYG API inkl. Editoren
      • Drupal Theming: JavaScript einhängen in Abhängigkeit von Page-Variablen
      • Drush - Das Schweizermesser für Drupal auf Kommandozeile
      • Einfaches und erfolgreiches Patchen unter Windows
      • Eingabeformat & Inputfilter
      • Einrichten eines einfachen, statischen Menüsystems
      • Erstellen von Patches
      • Gallery mit CCK und Views erstellen (Drupal 5)
      • Gutes Tutorial für Views 1 (Drupal 5)
      • Header image Modul einrichten
      • Inhaltsübersicht für einen User mit einem View erstellen
      • Javascript und CSS-Dateien einbinden
      • Kontaktformular mit Jquery aufwerten
      • Leitfaden zur Erstellung von Suchmaschinenoptimierten Drupal-Sites
      • Module updaten via Shell auf Windows
      • Module übersetzen
      • Perl-Script zum Erzeugen einer statischen Kopie einer Drupal-Website
      • Portierung eine Themes von openwebdesign.org
      • Themen eines Node-Formulars
      • Titel mit Stil
      • Umkreissuche mit Location- und Views-Modul
      • Usergalerie mit ImageCache, CCK, Views + Thickbox
      • Userprofil mit Usernodes erstellen
      • Validierung von Usereingaben bei Nodes
      • Variation vom Showroom auf drupalcenter.de
      • View mit Eingabeformular für neue Beiträge
      • WebSVN mit Drupal Code Highlighting
      • Zusätzliche Submit-Schaltfläche in Node-Formularen
      • i18n Language Switcher Block, die Links mit den Flaggen themen
      • ui.slider als Ersatz für den Ajax-Pager von Views
      • Zugriffsbeschränkungen für Nodes - eine Übersicht der Möglichkeiten
  • Entwicklung von Modulen und Themes
  • Drupalcenters Community
  • Bücherecke
  • Drupal Screencasts auf deutsch
  • Archiv

Buchempfehlung

Das Drupal-Entwicklerhandbuch
Der Praxisleitfaden für Drupal-basierte Webprojekte.
Drupal 6
Websites entwickeln und verwalten mit dem Open Source-CMS.
Das Drupal 6 Praxisbuch
Arbeiten mit Modulen, Themes und Templates

Das Copyright des deutschsprachigen Drupal-Benutzerhandbuches unterliegt den jeweiligen Autoren. Übersetzungen des englischsprachigen Drupal-Benutzerhandbuches unterliegen der Creative Commons License, Attribution-ShareAlike 2.0.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Showroom
  • » Forum
  • » Drupalchannel
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's
  • Bücherecke

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
  • Drupal Demo
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association