Darstellung einer Webform für einen Knoten ändern
am 11.05.2009 - 10:58 Uhr in
Verständnisfrage, zu "Overriding"
Ich benutze das Modul Webform. Um die Darstellung der Formulare im Browser zu ändern, benutze ich die Funktion form_element($element, $value) als Kopie von form.inc in der template.php. Ich habe der Funktion den Namen des Templates vorangestellt. Also news_form_element .
Wenn ich dort Änderungen übernehmen, werden diese auch ausgeführt. Das geschieht dann aber für alle Formulare. Funktioniert also erstmal wie gewünscht.
Ich benötige die Funktion aber für einen oder eventuell mehrere Knoten. Ich möchte die Ergebnisse der Webform vereinfacht darstellen.
In welche Datei oder in welches Template muss ich die Funktion einfügen, damit die Funktion nur bei einem Knoten ausgeführt wird?
Danke für Tipps, habe bereits das Handbuch gelesen, aber wenn ich die Funktion in eine .tpl Datei einbinde funktioniert es noch nicht.
- Anmelden oder Registrieren um Kommentare zu schreiben
Hi, das ist etwas schwierig.
am 11.05.2009 - 12:58 Uhr
Hi,
das ist etwas schwierig. Du hast ja als Übergabe nur das Element und dessen Daten und nicht den Node. Du musst mal schauen, was du aus dem globalen Kontext nehmen kannst. Ein print_r($GLOBALS); hilft dir vielleicht. Musst auch mal sehen, was in $_GET['q'] steht. Wenn da node/123 drinsteht, kannst du ja die nid nutzen.
über die theme() Funktion http://api.drupal.org/api/function/theme/6 kommst afaik nicht auf sowas wie nid runter, sondern nur auf eine Variante für Engine, Theme oder Modul.
Ich denke das kriegst du hin :)
---
Viele Grüße,
Kars-T
Viele Grüße,
Kars-T
Funktion arg() hats gelöst
am 12.05.2009 - 12:35 Uhr
Vielen Dank nach vielen Versuchen habe ich es mit der Funktion arg() gelöst. Die läßt sich ja dann für viele Fälle passend "einstellen".
Man müßte halt die Drupal-API im Kopf haben, ....
Danke Katasun
if ((arg(0) == 'node') && (arg(1) == '5')){
function newsflash_form_element($element, $value) {
$t = get_t();
$output = '<div class="form-item"';
if (!empty($element['#id'])) {
$output .= ' id="'. $element['#id'] .'-wrapper"';
}
$output .= ">\n";
if (!empty($element['#description'])) {
$output .= ' <div class="description">'. $element['#description'] ."</div>\n";
}
$required = !empty($element['#required']) ? '<span class="form-required" title="'. $t('This field is required.') .'">*</span>' : '';
$output .= " $value\n";
$output .= "</div>\n";
return $output;
}}
Schön :) Warum nutzt du
am 12.05.2009 - 14:33 Uhr
Schön :)
Warum nutzt du denn get_t()? Du nutzt das doch nicht während der Installation? t() tuts dann auch.
---
Viele Grüße,
Kars-T
Viele Grüße,
Kars-T
Erweitere Dein if ()
am 12.05.2009 - 14:53 Uhr
Erweitere Dein if ()
<?php
if ((arg(0) == 'node') && (arg(1) == '5'))
?>
zu
<?php
if ((arg(0) == 'node') && (arg(1) == '5') && arg(2) == '')
?>
Warum?
Es gibt auch URL's wie z. Bsp.:
node/5/edit
------------------------
Quiptime Group
Da geht noch was.
Erweitere Dein if ()
am 12.05.2009 - 19:00 Uhr
Hast Recht, zum Glück läßt sich das leicht realisieren.
Danke schön!